声明:本帖记录我考试中出现的c语言错误。
1、取模运算操作数,必须是整型,浮点型不能作为操作数
例如:3.14%2 是错误的
2.在打印输出
printf("%d",strlen("\TOP 65""));
输出结果是7 问了老师之后才知道 只占用一个位置,并不是4个位置 \ 一个 top 3个 一个 65一个 " 一个 一共七个长度
3.当声明一个共用体变量时,系统分配给他的内存是成员中占用内存最大者所需的容量
4.c语言中基本的数据类型包括整型、实型、字符型
5.
#include<stdio.h>
void main(){
char x [] = "language";
char y [] = "IIngga";
int i = 0;
while(x[i]!=' '&&y[i]!=' ')
{
if(x[i]==y[i])
printf("%c",x[i++]);\ x[i] 和x[i++]的区别 主要在于 应该在判断完成后 进行i值的自增 否则的话 程序会进入死循环
else
i++;
}
}
6.
int a,b,y,x;
switch(pow(a,2)+pow(b,3))
{
case 1:case 3: y = a+b;break;
case 0:case 5: y = a-b;
}
error C2450: switch expression of type 'double' is illegal
编译报错,因为switch()中只能是整型 字符型和枚举类型。pow返回的是一个double类型的数据
7.若x是实型变量,表达式(x=10.0/4.0)的值是2.5
查了下百度百科。找到的解释,记录一下。
在程序运行过程中可以改变其值的实型量被称为实型变量,实型变量分为单精度(float),双精度(double)和长双精度(long double)型。
8.
/*
程序的理解:p = a+8 指针指向了下标为8的地方 也就是'9'的地方
在执行p-3 首地址元素指针指向了'6' 所以程序最后输出的是 6789 0在这里的做的是一个结束标志
**/
char a [10] = {'1','2','3','4','5','6','7','8','9',0},*p;
int i = 8;
p = a+i;
printf("%s
",p-3);
9.
/*
程序理解:定义了一个字符数组,和一个字符指针变量
用字符指针变量指向了字符数组的第一个元素
因此程序的执行的结果就是
ABCD
BCD
CD
D
**/
char s [] = "ABCD";
char * p;
for(p=s;p<s+4;p++)
printf("%s
",p);
10.
#include<stdio.h>
void main(){
/*
程序理解:++p 一直指向 直到指针指向e处 停止执行 因此程序输出的efg
指针p 指向的是e的地址。因此 输出会包含 e
**/
char * p = "abcdefg";
while(*(++p)!='e');
printf("%s
",p);
}
说明:如果对此有疑问的欢迎 指正 谢谢! 联系qq 1137821448