c语言的几个问题

1.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 a 。
int a1,a2; char c1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
A)10A 20B<CR> B)10 A 20 B<CR>
C)10A20B<CR> D)10A20 B<CR>
(1.为什么数字后面不需要空格,字母后面需要空格)
2.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 d 。
int a1,a2; char c1,c2;
scanf(“%d%d”,&a1,&a2);
scanf(“%c%c”,&c1,&c2);
A)1020AB<CR> B)10 20<CR>
AB<CR>
C)10 20 AB<CR> D)10 20AB<CR>
(2.和第1题一样不明白)
3.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是 d 。
a scanf(“%d%lx,%le”,&x,&y,&z);
b scanf(“%2d*%d%lf”,&x,&y,&z);
c scanf(“%x%*d%o”,&x,&y);
d scanf(“%x%o%6.2f”,&x,&y,&z);
(3.a选项中间的逗号什么作用,还有d的错误解释一下)
4.已有定义int x; float y;且执行scanf(“%3d%f”,&x,&y);语句,若从第一列开始输入数据12345 678<回车>,则x的值为【b】,y的值为【b】。
【1】A)12345 B)123 C)45 D)345
【2】A)无定值 B)45.000000 C)678.000000 D)123.000000
(4.%3d就是长度为3是吗,要是%3d,%f会是什么样的,空格是什么作用,还有45.0后面为什么是6个0)
5.根据定义和数据的输入方式,输入语句的正确形式为 b 。
已有定义:float f1,f2;
数据的输入方式:4.52
3.5
a scanf(“%f,%f”,&f1,&f2);
b scanf(“%f%f”,&f1,&f2);
c scanf(“%3.2f %2.1f”,&f1,&f2);
d scanf(“%3.2f%2.1f”,&f1,&f2);
(5.为什么不选d呢,3.2f不对吗)
6.阅读以下程序,当输入数据的形式为 25,13,10<CR> 正确的输出结果为 d 。
main()
{
int x,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
a x+y+z=48
b x+y+z=35
c x+z=35
d 不确定值
(6.x,y,z赋值分别是什么,结果输出的是什么)
7.阅读以下程序,若运行结果为如下形式,输入输出语句的正确内容是d main()
{
int x; float y;
printf(“enter x,y:”);
输入语句
输出语句
}
输入形式 enter x,y:2 3.4
输出形式 x+y=5.40
a scanf(“%d,%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
b scanf(“%d%f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
c scanf(“%d%f”,&x,&y);
printf(“\nx+y=%6.1f”,x+y);
d scanf(“%d%3.1f”,&x,&y);
printf(“\nx+y=%4.2f”,x+y);
(7.3.1f的3.1是什么意思,长度为3,小数部分为1是吗,那小数点也算一位吗,4.2f是什么意思)
8.根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确的形式应该为 a 。
main()
{
char ch1,ch2,ch3;
输入语句
printf(“%c%c%c”,ch1,ch2,ch3);
}
输入形式:A B C
输出形式:A B
a scanf(“%c%c%c”,&ch1,&ch2,&ch3);
b scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);
c scanf(“%c %c %c”,&ch1,&ch2,&ch3);
d scanf(“%c%c”,&ch1,&ch2,&ch3);
(8.整道题都不太明白)
9.已知ch是字符型变量,下面不正确的赋值语句是 a 。
A)ch=‘a+b’; B)ch=‘\0’; C)ch=‘7’+‘9’; D)ch=5+9;
10.已知ch是字符型变量,下面正确的赋值语句是 b 。
A)ch=‘123’; B)ch=‘\xff’; C)ch=‘\08’; D)ch=“\”;
(9.10。每项都解释一下)
可以加分

1:字母只读一个,而数字可以很多个一起读。 (我汗,以前都没注意着,C的题目越出越细了)
2.空格也是字母的一种如果是10 20 AB,那么10 20 读的没错,但c1=‘_’,c2='A'。先读空格(补充下1的回答)
3:那个逗号有,你输数据的时候也要相应的有逗号,D里z是double型,应该用%lf;
4:长度是3没错 ,逗号同上 至于那个45678,45后面是不是有空格的啊。空格说的是数字取到这里结束咯。浮点数打印的时候小数点后6~7位都打出来的,没有实际价值。
5:输入流 %3.2指的是一共有3位,包含小数点。
6:scanf里没有逗号,所以输入的时候也不能有逗号 ,此题y=',' 这个数据时不确定的
7:同5;4.2f 一共4位,包含小数点,小数点后取两位
8:选A的话ABC之间没有空格,看了我上面的,第8题应该没问题了
9:字符型变量ch,能够赋值给他的只有单个字符和小于255的数字,至于为什么小于255,等你看了书后面的内容就懂了
10:B选项指的是16进制的ff,就是‘\255’,asc码里是有这个字符的
10:
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-07
第一道题:
其实A 跟C都是正确的...为什么呢:
char自动指定一个字符.那么为什么字符后面不能有空格呢..因为C语言规定..空格也算一个字符...但是利用scanf语句的时候...它默认的分割方式就是空格..或者<CR>也就是回车....所以除了字符跟字符分割以外..其他的都可以用空格来分割..如
scanf("%c%c%c%c",&a,&b,&c,&d);
我们输入的时候必须这样输入:abcd则a就给a ,b就给b..c就给c...等
如果第一个是数字..我门输了一个数字.第2个让我们输入字符.我们只要直接打个字符就行了.而不需要打一个空格然后再打字符.那样..会把空格传给字符..

第二道题:
参照第一题的解答..我想你会明白...

第三道题
A选项中的逗号...只是用户自己定义的一个分割符而已..你输出的时候..这样在指定的地方输入一个逗号..将前后2个数分割开就行..表示他是2个数..因为我们平时用的都是空格分割或者回车分割...如果它指定的是逗号分割..你就输入一个逗号就行..

D选项的错误很明显..在输入语句中..不允许指定数字的精度...

第四道题:

3的作用就是指定3个长度...则它会取前面的3个数..后面的2个字就会给下一个数..为什么有空格.可能用户想把678这3个数给第2个数.但是这样是不行的.因为先取前3个..后面按道理..后面所有的数都会给2...但是多了个空格.那么..它就不会把所有的数都给第2个数....空格两边表示2个数...加一个空格.那么..后面的数就应该付给第3个数..但是不存在第3个数..

为什么45.000000后面有6个零..这是因为C语言就是这样规定的..浮点型的数..默认有效数字为7位..小数位为6位....

第5道题:

结合上面几题..我想你不需要解答..

第6道题:

输入不允许有逗号..必须要指定有逗号才可以

第7道题:
正确答案应该是b...d显然是错的...
输入语句不允许指定小数位数..

C错在..他写的是6.1..也就是说.输出后.长度为6..但是小数只能显示为一位..你要显示是2位小数..所以是不对的

第8道题:
结合上面的题目...你应该知道答案了...
空格也算一个字符....A中的答案...只会取前面的..后面的自动丢失...也就是说...A会给a,空格给b.B会给C...后面的自动丢失..

第9道题:
我们先不开a答案...看B答案..它表示一个结束字符..ASC码就是为0..
C答案..表示7的ASC加上9的ASC.然后得到的ASC给ch......D答案..表示数字7的ASC加上9的ASC...int类型跟char类型是可以互相转换的...所以用排除法你也应该知道....A是错误的... A只能写成ch=’a’+’b’这样才可以...

第10道题:
A:没有这种写法..应该写成’\123’他表示一个8进制数...

B:表示一个16进制的数..255..转换成10进制..

C:表示一个8进制数..但是它为什么是错的呢.写法上并没有错误..错就错在8进制没有8这个数..只有0-7....

D:它想表示一个\这个符号..必须要加上转义字符\才可以所以应该写成\\才表示一个\

最后我说句...我建议你...把清华大学出版社出版的那本C语言好好看看..其实这些题目都是基础题目..但是却很绕人.....也是很多人容易犯的错误...你详细的去看看第3章跟第4章.相信你会有所帮助...虽然C语言中...你一张试卷不可能碰到这么多这种绕人的题目..但是你还是要有所了解..那样才能更好的学习后面的高级内容...本回答被提问者采纳
第2个回答  2009-10-05
你这么多题谁会一下子答给你啊
很浪费时间的
如果你分为10个问题,一个问题5分,保证你10分钟以内每个题都会有好答案,这么多别人没那么时间和闲功夫
我先帮你做2题,你先采纳我的答案吧!
这两个题是要看你的scanf中他们有没空格,如果有空格输入就要有空格,如果没空格输入也不需要有空格,你这是输入进去的,我看一模一样,估计是你不仔细造成的
连输入两个数字当然要用空格隔开,不然那就是连成一个大数了
第3个回答  2009-10-05
我只看了1, 用程序试过了, A和C都是正确的, 数字前的空格不影响。
相似回答