几道c语言题目,还请高手不吝赐教,谢谢!不要嫌烦哈……
1.getchar()函数,在输入时,空格、回车符都将作为字符读入,而且{只有在用户输入回车时,读入才开始执行。}{}里面的话怎么理解啊?2.右移》运算,对于负整数,高位...
1.getchar()函数,在输入时,空格、回车符都将作为字符读入,而且{只有在用户输入回车时,读入才开始执行。} {}里面的话怎么理解啊?
2.右移》 运算,对于负整数,高位补1。 请问这儿的高位补1是不是指最高位补1,其余还是补0啊?
3.下列函数的输出结果是( )。
main()
{char a[7]="a0\0a0\0";int i;int j;
i=sizeof(a);
j=strlen(a);
printf("%d %d\n",i,j);}
A.2 2 B.7 6 C.7 2 D.6 2
答案:C i 明白,j我认为是4,不是只有\0不计入么?
4.当执行下列程序时,输入1234567890<CR>,则其中的while循环将执行——次。
main()
{char ch;
while((ch=getchar())=='0')printf("#");}
答案:0 当输入到0时,循环不是可以执行一次的么?
5.有以下程序段:
int a,b,c;
a=10;b=50;c=30;
if(a>b)a=b;b=c;c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
程序的输出结果是()。
A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50
答案:A 我认为是C,求教……
6.设有定义:int a;float b;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入
876543.0<CR>,a和b的值分别是()。
A.876和543.000000 B.87和6.000000 C.87和543.000000 D.76和543.000000
答案:B 我觉得是87和6543.000000,为什么是B呢?
这么多的问题,麻烦了,谢谢!!! 展开
2.右移》 运算,对于负整数,高位补1。 请问这儿的高位补1是不是指最高位补1,其余还是补0啊?
3.下列函数的输出结果是( )。
main()
{char a[7]="a0\0a0\0";int i;int j;
i=sizeof(a);
j=strlen(a);
printf("%d %d\n",i,j);}
A.2 2 B.7 6 C.7 2 D.6 2
答案:C i 明白,j我认为是4,不是只有\0不计入么?
4.当执行下列程序时,输入1234567890<CR>,则其中的while循环将执行——次。
main()
{char ch;
while((ch=getchar())=='0')printf("#");}
答案:0 当输入到0时,循环不是可以执行一次的么?
5.有以下程序段:
int a,b,c;
a=10;b=50;c=30;
if(a>b)a=b;b=c;c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
程序的输出结果是()。
A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50
答案:A 我认为是C,求教……
6.设有定义:int a;float b;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入
876543.0<CR>,a和b的值分别是()。
A.876和543.000000 B.87和6.000000 C.87和543.000000 D.76和543.000000
答案:B 我觉得是87和6543.000000,为什么是B呢?
这么多的问题,麻烦了,谢谢!!! 展开
3个回答
展开全部
5.有以下程序段:
int a,b,c;
a=10;b=50;c=30;
if(a>b)a=b;b=c;c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
程序的输出结果是()。
A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50
答案:A 我认为是C,求教……
if(a>b) 是不成立的,后面的语句不运行!a,b,c值不变
int a,b,c;
a=10;b=50;c=30;
if(a>b)a=b;b=c;c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
程序的输出结果是()。
A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50
答案:A 我认为是C,求教……
if(a>b) 是不成立的,后面的语句不运行!a,b,c值不变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
5,6题的答案是错的。
5:c
6:e:87和6543.0000
5:c
6:e:87和6543.0000
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1· 是说在执行getchar()这条语句的时候,在你没有按下回车键之前,无论你输入多少字符,程序只接受第一个输入的字符,其他输入的字符都被忽略了。
2·有符号的2进制数,最高位为1表明它是负数。你做右移操作,只能影响数值的大小,不能影响数值的正负性质。所以务必要保持最高位的符号位不能变。
3·\0是字符串的结束标记,不计入到字符串的长度中。
4·只要你理解了1问题里getchar()输入的特性,就知道在你摁下回车键之前,除了第一个字符有效,其他字符都是没有意义的。所以输入1234567890<CR>,程序接收收了1,ch = ‘1’;
5·if(a>b)a=b;b=c;c=a; 你要理解,他和if(a>b){a=b;b=c;c=a; }是不一样的。你肯定是按照后面这样理解的。实际上if(a>b)a=b;b=c;c=a; 由if控制的只有a=b,其他的两条语句都不受if控制,无论if结果是什么,它们都会被执行。
6·正确答案应该是你说的那样。就是87和6543.000000
2·有符号的2进制数,最高位为1表明它是负数。你做右移操作,只能影响数值的大小,不能影响数值的正负性质。所以务必要保持最高位的符号位不能变。
3·\0是字符串的结束标记,不计入到字符串的长度中。
4·只要你理解了1问题里getchar()输入的特性,就知道在你摁下回车键之前,除了第一个字符有效,其他字符都是没有意义的。所以输入1234567890<CR>,程序接收收了1,ch = ‘1’;
5·if(a>b)a=b;b=c;c=a; 你要理解,他和if(a>b){a=b;b=c;c=a; }是不一样的。你肯定是按照后面这样理解的。实际上if(a>b)a=b;b=c;c=a; 由if控制的只有a=b,其他的两条语句都不受if控制,无论if结果是什么,它们都会被执行。
6·正确答案应该是你说的那样。就是87和6543.000000
追问
肯定会采纳您的答案,还会追分,就是还有疑点
1.摁下回车键之后,回车键本身不会成为字符吗?还是它能够使程序接收第一个字符?
2.假如是1000000110101右移两位是多少呢?
3.就是\0不计才有4个啊。
5.这个我懂,可答案确实不对啊。
太谢谢您了!
追答
1·你问的可够深入的,老师就这么教我们的,我一直也没仔细思考过这个问题。刚才查资料了,回车之前的所有字符都会被存储到缓冲区里,回车也会被存储到缓冲区。执行一次getchar()就取出最前面的一个字符。所以,只有1个getchar()的时候就只能取出第一个输入的字符,如果有两个getchar(),那第二个getchar()取出的就是第二个输入的字符。
2·变成了 1 0000 110 101 (00),最后括号括起来的是右移之后最低位补上的0.
3·统计字符串长度的时候,遇到第一个\0的时候就认为字符串结束了,后边不管再有多少都没用。所以这里认为字符串的内容是a0而不是a0a0.
5·a=10;b=50;c=30;
if(a>b)a=b;b=c;c=a;
if(a>b)为假,所以a =b 不执行,所以 a = 10。b = c => b=30, c = a => c=10,答案C
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询