c语言的一些选择题 请大侠赐教....

[复制链接]
查看11 | 回复1 | 2008-6-22 21:01:02 | 显示全部楼层 |阅读模式
已知字母"A"的ASCII码为十进制的65,下面程序输出正确的是:
main()
{
char ch1, ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d, %c\n", ch1, ch2);
}
A) 67, D B) B, C
C) 不确定的值 D) C, D
下面程序的输出是:
main()
{
unsigned int a=32768;
printf("a=%d\n",a);
}
A) a=32768 B) a=32767
C) a=-32768 D) a=-1
若有说明语句:char c='\101'; 则变量c:
A) 包含一个字符 B) 包含两个字符
C) 包含三个字符 D) 说明不合法
以下叙述中不正确的是:
A) 空字符串(即两个双引号连写)只占一个存储单元
B) 字符型常量可以放在字符型变量中
C) 字符型常量可以放在字符串变量中
D) 字符型常量可以与整数混合运算,而字符串常量不可以
设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的值是:
A) 4 B) 3
C) 2 D) 1
若有以下定义: int a,b,c1,c2,x,y; 则正确的switch 语句是
A) switch(a+b); B) switch(a*a+b*b)
{ case 1:y=a+b;break; { case 3:
case 2:y=a-b;break; case 1:y=a+b;break;
} case 3:y=b-a;break;
}
C) switch a D) switch(a-b)
{ case c1:y=a-b;break; {default:y=a*b;break;
case c2:y=a*d;break; case 3:
default:x=a+b; case 4:x=a+b;break;
} case 10:
case 11:y=a-b;break;
}
设a=1,b=2,c=3,d=4,则表达式: a<b?a:c<d?a:d 的结果为
A) 4 B) 3
C) 2 D) 1
语句:printf("%d",(a=2) && (b=-2));的输出结果是
A)无输出 B)结果不确定
C)-1 D)1

回复

使用道具 举报

千问 | 2008-6-22 21:01:02 | 显示全部楼层
1,选A。在128内,字符和数字是通用的。printf("%d, %c\n", ch1, ch2); %d就格式化成了数字,%c就格式化为了字符。2,该题出的不好,不同字长的编译器,int的长度是不同的。现在32位上,输出还是32768.但经典的C语言其长度是-32768~32767,那么%d格式化32768后应该是-13,'\101'中,\为转义字符,整个代表一个4,???5,d。从左往右来就行了。a小于b吗?是,所以a,a又小于d吗,是,所以a6,d 凡是a=2,返回都是1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行