答案:C。scanf函数中“”中的数据,除去格式(带%的部分)外,是输入者必须输入的部分,这部分程序不解释成数据,忽略之,但是不输入就会导致程序错误的解释(看来程序挺傻的),如:a=%d,输入时就必须写a=1,程序才会将1存入到a
2、 设有 int x; flfl oat y=5.5;,则执行语句x=y*3+(int)y%4 ;后,x的值为_____。
答案:17。
首先强制类型转换,y转换为int型时是取整操作,即舍弃小数部分,所以得到的是5,
5%4=1,即5除以4的余数是1,y*3=5.5*3=16.5,16.5+1=17.5,由于x是整形变量,所以包含一个隐式的类型转换,即取整,舍去小数部分,为17,赋值给x,即得到x=17。
3、有 程 序 段:char str[]="ab\070\\14\n"; printf("%d\n",strlen(str));,执行后输出结果是______。
答案:7
strlen():求字符串长度,不包括'\0', 'a','b','\070','\\','1','4','\n',一共7个字符
4、 设 char *s ="\ta\017bc";则指针变量s指向的字符串所占的字节数是_____。
答案:6
'\t','a','\017','b','c','\0'
5、当x=2时,表达式x/=x+=x的值为______。
答案:1
从右往左计算,x+=x ---> x=x+x=4,x/=4此时x=4,x/=4-->x=1。
6、下列程序输出的结果为______。
int main()
{
char st[20] = "hello\0\t\\\";
printf("%d %d \n",strlen(st)),sizeof(st));
return 0;
}
A、9 9 B、5 20 C、13 20 D、20 20
答案:B
strlen():计算字符串长度,从第一个字符开始,一直到第一个'\0'(不包含'\0')。
sizeof():计算数组的大小,是其定义的大小,与其赋值的字符串无关。
7、 下列语句中,只能在循环结构的循环体中使用的是()
A、break语句 B、continue语句 C、 go to 语句 D、return语句
答案:B
continue:结束本次循环,进入下一循环。
break:可用于循环语句和switch语句。
8、设int a =1,b =2,c =3,d= 4,m = 2,n = 2;执行( m = a > b)&& (n = c > d) 后,n的值为____。
答案:2
m = a > b ,a = 1 ,b = 2,a>b条件不成立,m = 0;,
&&:有一边为0,结果就为0,因此不会执行后面的n = c > d,因此n任然为2。
9、 设a = 3,b = 5,c = 5,则表达式 a||b+c &&b==c的值为____。
答案:1
注意逻辑表达式的优先级:!>& >|
因此先执行后部分,b==c不成立,后部分为0,a!=0,因此结果是1。
10、设a= -3;执行 (a>0)?a:-a;后,a = ____。
答案:-3
注意:该执行语句并没有对a进行赋值,所以a的值不变。
11、下列程序段正确的是()
A 、char str1[] ="12345",str2 = "abcdef"; strcpy(str1,str2);
B 、char str[10] ,*st = "abcde"; strcat(str,st);
C 、char str[10]=" ",*st = "abcde"; strcat(str,st);
D、 char *str1 ="12345",*str2 = "abcde"; strcat(str1,str2);
答案:c
A、str1长度小于str2,不能进行复制
B、str没有进行初始化
D、str1,str2都是指向常量的字符串指针,他们的值不允许修改