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();
}