C语言概述、数据类型运算符表达式、顺序结构
一、选择题
1.下列叙述中,正确的是 c 。
A. C程序中的注释只能出现在程序的开始位置和语句的后面 B. C程序书写格式严谨,要求一行内 只能写一个语句 C. C程序的书写格式自由,一个语句可以写在多行上 D. 用C语言编写的程序只能放在一个程序文件中 2.下列选项中,可作为合法标识符的是 c 。
A. 1m B. Data C. str+1 D. i-1 字母、数字、下划线
3.设变量已正确定义并赋值,以下合法的C语言赋值语句是 c 。
A. x=y==5 B. x=n%2.5 C. x+n=i D. x=5=4+1 %后面必须是整型,等号左边必须是变量,不能是表达式和常量
4.设有定义:int k=0;以下选项的4个表达式中与其他3个表达式的值不相同的是 a 。
A. k++ B. k+=1 C. ++k D. k+1 注意这里是指表达式的值,即k++是先赋值再执行k+1,因此表达式值为0
5.若有定义:int a,b;则用语句scanf(“%d%d”,&a,&b);输入a,b的值时,不能作为输入数据分隔符的是 a 。
A., B. 空格 C. 回车 D. Tab键
6.C语言并不是非常严格的算法语言,在以下关于C语言的不严格的叙述中,错误的是 。
A. 任何不同数据类型都不可以通用
B. 有些不同类型的变量可以在同一个表达式中运算
C. 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D. 同一个运算符号在不同的场合可以有不同的含义 7.下列常数中不能作为C语言的常量的是 d 。
A.0Xa6 十六进制数 B. 3.4e-3 C. 3e5 D. 0683 8.下面不是C语句的是 。
A.int; B. ; C. a=1,b=5 没有分号 D. {;}
9.设x、y、z为整型变量,若从键盘给x、y、z输入数据,则正确的输入语句是 。
A.scanf(“%d%d%d”,&a,&b,&c); B. scanf(“%d%d%d”,a,b,c); C.scanf(“%D%D%D”,&a,&b,&c); D. scanf(“%d%d%d”,&a;&b;&c);
10.若变量已正确定义,现要将a和b中的数据进行交换,下面不正确的是 。
A.a=a+b,b=a-b,a=a-b; B. t=a,a=b,b=t; C.a=t,t=b,b=a; D. t=b,b=a,a=t;
二、填空题
1.在C语言中,用关键字 int 定义基本整型变量,用关键字 float 定义单精度实型变量,用关键字 double 定义双精度实型变量。 2.若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为 1 。 s%2是除2求余。等于0 s+1除2求余。求于1
3.条件“0
4.现有定义 int a;double b;float k;,则表达式a/b+c-k 的值的数据类型为 double 。 5.若有定义 int x=3,y=2;float a=2.5,b=3.5;,则表达式(x+y)%2+(int)a/(int)b 的值为 1 。两个int型相除,结果也为int型,也是取整数部分。如2/3=0.666...取整数部分结果就是0 6.若已定义 x和y为double类型,则表达式x=1,y=x+3/2的值为 2.0 。 默认是6个0,但是这里用一个0表示小数 因为X黄河Y都是实型 在3/2的时候=1.5但转换成双精度实double时也就是1.0 7.在C语言中整数可用 八 进制数、 十 进制数和 十六 进制数三种数制表示。没有二进制. 8.实型常量有两种表示方式:小数形式和 指数形式 。 9.表达式(a=5-3/2,a*6),a+10的值为 14 。 a=4 取后面的值
10.若有定义 int a=1234;,则使用printf(“-”,a);输出值为 1234 。
(%xd)若x是正数则输出的数靠右对齐,不足的在后边补空格;若x是负数那么就是左对齐,且左边不空格 因为1234超出了2位,所以原样输出 三、阅读下列程序,写出运行结果
1、执行以下程序后的输出结果是 a=14 。 #include
int a=10; a=(3*5,a+4);
printf(“a=%d\\n”,a); }
2、以下程序的输出结果是 a=4,i=5 。 #include
int i=4,a; a=i++;
printf(“a=%d,i=%d\\n”,a,i); }
3、以下程序的输出结果是 18 。 #include
int x=023;
printf(“%d\\n”,--x); }
八进制转化为十进制:2*8+3*1=19,--x为先减赋值
4、以下程序的输出结果是 65.000000 。 #include
char ch=?A?; int num1=ch;
float num2=num1; printf(“%f”,num2); }
5、以下程序的输出结果是 6 。 #include
int a=5,b=4,c=6,d;
printf(“%d\\n”,d=a>b?(a>c?a:c):(b)); 先判断a>b为真取(a>c?a:c)否则取(b),接着再判读a>c是否为真,真取 a否则取 c }
6、以下程序的输出结果是 2 。 #include
int a=1,b=2;
printf(“%d\\n”,a=a+1,a+6,b+2); }
不是逗号表达式,按顺序输出,若是(a=a+1,a+6,b+2)则是 :4但是计算的是a=a+1 也就是1+1=2 7、以下程序的输出结果是 4 。 #include
int a=1,b=2;
printf(“%d\\n”,(a=a+1,a+6,b+2)); }
8、以下程序的输出结果是 E 。 #include
int x=?d?;
printf(“%c\\n”,?A?+(x-?a?+1)); }
大小写转换 x为小写字母,x+'A'-'a',x为大写字母,x-'A'+'a' 了解ACSLL码 这里注意%c 是按字符输出的 9、以下程序的输出结果是 8,11,16 。 #include
int a=010,b=10,c=0x10;
printf(“%d, %d , %d \\n”,a--,++b,c++); }
10、以下程序的输出结果是 1.600000 。 #include
float d=3.2;int x,y; x=6.8;y=(x+5.8)/5; printf(“%f\\n”,d/y); }
x=6 y=2
答案:一、选择题
1、C 2、B 3、A 4、A 5、A 6、A 7、D 8、C 9、A 10、C
二、填空题
1、int,float,double; 2、1; 3、((x>20)&&(x<30)) || (x<-100) 4、double; 5、1; 6、2.0; 7、十、八、十六; 8、指数形式; 9、14; 10、1234;
三、读程序题
1、a=14; 2、a=4,i=5; 3、18 4、65.000000; 5、6; 6、2; 7、4; 8、E ; 9、8,11,16; 10、1.600000;

