C语言菜单常犯错误,C语言易犯错的题目集合(一)

1、C语言中字符CHAR类型数据在内存中的存储形式是: 长整型在 内存中的存储形式是

A 原码 B补码 C 反码 D ASCAII码

选择答案: D B

整数-8在内存中的存储形式为:0000 0000 0000 1000(原码) 1111 1111 1111

1000(补码)

2、在C语言中,int、char、 short三种类型数据所占用的内存

A均为2个字节  B由所用机器的机器字长决定

3、 请问下面的输出结果是多少?

int a=10,b=0;

if(a=12){

a=a+1;b=b+1;

}

else{

a=a+4;b=b+4;

}

printf("%d,%d\n",a,b);

分析:a=12是赋值语句 然后判断这个表达式是否为true 输出结果为:11,1

4、字符串"\\\22a,0\n"的长度是多少?

A8  B 7 C 6 D 5

分析:

\\-----\ 一个字符

\22---- 一个字符   所以选C

char a='\070'则变量a中有几个字符?  1个字符

5、已知char a;int b;float c; double

d;执行语句c=a+b+c+d;后,变量c的数据类型是:

A char  B int  C float  D double

分析:a+b+c+d

是double类型然后赋值时又隐性强制转换成float类型

6、已知 char c='A',int i=1,j; 执行语句j=!c

&& i++;后,i,j的值是多少?

分析:!c逻辑非运算后为false,后面的i++运算被忽略了,所以:i=1,j=0

相关:int a=1,b=1,c=1; 则执行

++a || ++b && ++c;

语句后a,b,c的值是多少? 2 1 1

7、int

x=6;执行语句x+=x-=x*x语句后,x的值是多少?

表达式(x=4*5,x*5),x+25的结果是:   x的值是多少?

已知int x=10,y=3,z;

则printf("%d\n",z=(x%y,x/y));后输出结果为多少?

//答案:-60 45 20 3

8、为了从键盘上输入字符串"HOW ARE YOU?",可以直接使用函数:

A、scanf B、getstr C、gets D、以上都不对

答案:c 分析:scanf不能达到空格 \t \n等格式控制效果

相关: int

a,b;scanf("%d%d",&a,&b);输入a,b的值时,不能作为输入数据分隔符的是:

A), B)空格 C)回车 D)[TAB]

9、已知unsigned int

x=65535,则printf("%d\n",x)后结果为多少?

分析: 整数溢出 unsigned int 取值范围为:0~65535  65535在32位中存储为:1111 1111

1111 1111

答案为:-1

10\

#include

#include

void main()

{

char ss[10] = "12345"; //字符数组被当作字符串处理

gets(ss); //若在这里输入"ABC",则字符串被重新初始化

strcat(ss,"6789"); //重新赋值

printf("%s\n",ss); //输出结果:ABC6789

getchar();

}

13、

#include

void main(){

int i=8;

printf("%d\n",++i); //9

printf("%d\n",--i); //8

printf("%d\n",i++); //8

printf("%d\n",i--); //9

printf("%d\n",-i++); //-8

printf("%d\n",-i--); //-9

i=8;

printf("i=%d\n",++i*--i);//64

printf("i=%d\n",++i*++i);//100

printf("i=%d\n",i++*++i);//121

printf("i=%d\n",i--*--i);//121

printf("i=%d\n",--i*--i);//64

printf("i=%d\n",--i*++i);//64

getchar();

}

——————————逗号表达式————————————

void main(){

int a=2,b=4,c=6,x,y;

y=(x=a+b),(b+c); //有2个子表达式,只有(x=a+b)才起作用 printf("y=%d,x=%d",y,x);  //y=6 x=6

getchar();

}

14、------格式化输入输出-------

void main(){

printf("%g\n",123.56789); //123.568 没有指定精度 默认保留6位有效数字 被四舍五入

printf("%.7g\n",123.56789); //123.5679 输出七位有效数字的double型 被四舍五入

printf("%13.7g\n",123.56789); // 123.5679  默认右对齐 占用13个字符,空格填入

printf("%-13.7gaa\n",123.56789); // 123.5679 aa  左对齐

printf("%+13.7gaa\n",123.56789); // +123.5679aa

printf("%e\n",123.56789);    // 1.235679e+002

printf("%E\n",123.56789);    // 1.235679E+002

printf("%.7e\n",123.56789); //1.2356789e+002

printf("%d\n",!X);

//0 //逻辑非

printf("%d\n",~X); //-6    逻辑二进制求反 1111 1111 1111 1010

getchar();

}

int t,h;

scanf("%2d%*2s%1d",&t,&h);

//输入1234567 12 34 5 %2d接收2位数字

%*2s忽略2位字符 %1d接收1位数字

printf("%d,%d\n",t,h);//输出:12,5

相关:

%A 浮点数、十六进制数字和p-记法(C99)

%c 一个字符

%d 有符号十进制整数

%e 浮点数、e-记数法

%E 浮点数、E-记数法

%f 浮点数、十进制记数法 %g 根据数值不同自动选择%f或%e.

%G 根据数值不同自动选择%f或%e.

%i 有符号十进制数(与%d相同)

%o 无符号八进制整数

%p 指针 %s 字符串

%u 无符号十进制整数

%x 使用十六进制数字0f的无符号十六进制整数

%X 使用十六进制数字0f的无符号十六进制整数

%% 打印一个百分号使用printf ()函数 printf()的基本形式: printf("格式控制字符串",变量列表);

15、

#include

#define X 5

#define Y X+1

#define Z

Y*X/2 //实际上效果如果: X+1 * X/2 = X+X/2

#define MAX(A,B) (A)>(B)?(A):(B)

#define PRINT(Y) printf("Y=%d\n",Y)

void main(){

int a; a=Y;

printf("%d\n",Z); //7

printf("%d\n",--a); //5 getchar();

}

16、

#define PR(X) printf("d=%d\t octal=%o\t

hex=%x\n",X,X,X)

#define exchange(m,n) m=m^n;n=m^n;m=m^n

#include

void main(){

unsigned int a = 9,b=5;

int c=3;

PR(a);//打印二进制,八进制 十六进制 数据

PR(~a);PR(~c);//-10,-4 按位求反

PR(!a);//0 求逻辑非

PR(a&b);//1 求逻辑与

PR(a|b);//13 求逻辑或

PR(a^b); //12 求逻辑异或

exchange(a,b);PR(a);PR(b); //交换a,b的值 a=5 b=9

a=5,b=9;

a=a<<4;PR(a);

//结果为:5*2^4=80 0101==》01,0100

b=b>>2;PR(b);

//结果为:9/2^2=2 1001==》0010(被截去2位二进制)

float d = (a=9,a>>2);

printf("d=%.3lf",d);//2.000

getchar();

}

17、数学表达式 sin25度 + xcos30度 的C语言表达式是:(提示:根据弧度来求)

18、求输入三个数,要求能组成三角形,然后求出该三角形的面积

提示:设a,b,c为边长,则周长f=(a+b+c)/2,根据面积公式s=sqrt((f-a)(f-b)(f-c))

19、输入一个字符,然后求出它的前驱字符和它的后继字符并按顺序打印;

20、在屏幕上输入一行字符并打一个显示一个,以回车结束;while((c=getchar())!='\n')

21、输入学生的三门科成绩,然后统计总成绩,并求平均分,成绩小数点后保留一位有效数字。

第18题目调试结果:

#include

#include

void main(){

float a,b,c,

double temp,s;

while(1){

puts("please input a,b,c:");

scanf("%f,%f,%f",&a,&b,&c); //输入数据后回车了 回车符也是字符 如果是%.1f%.1f%.1f,输入3.04.05.0的话效果差会死循环,如果这里改为:scanf("%f,%f,%f\n",&a,&b,&c)则调试效果也不好.下面的无法打印显示.if(!(a+b>c &&

a-b

break;

}

temp=(a+b+c)/2;

s=sqrt(temp*(temp-a)*(temp-b)*(temp-c));

printf("该三角形的面积为:");

printf("%.2lf\n",s);

if(getchar()=='\n') getchar();上面的scanf语句输入数据后回车了回车符也是字符,这里作下接收,控制打印调试效果}

第19题目调试结果:

#include

void main(){

char c;

while((c=getchar())!='\n'){

putchar(c); }

getchar();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值