c语言有一道题不会做,求高手解,最好分析一下。

若有定义:doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是A)a=a++,i++;B)i=(a+k)<=(i+k);C)i=a%11;D)i... 若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是 A)a=a++,i++; B)i=(a+k)< =(i+k); C)i=a%11; D)i=!a; (15)有以下程序 #include<stdio.h> main() { char a,b,c,d; scanf(“%c%c”,&a,&b); c=getchar(); d=getchar(); printf(“%c%c%c%c \ n”,a,b,c,d); } 当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符) 12<CR> 34<CR> 则输出结果是 A)1234 B)12 C)12 3 D)12 34 展开
 我来答
振兴聚焦
2013-08-25 · TA获得超过436个赞
知道小有建树答主
回答量:270
采纳率:33%
帮助的人:178万
展开全部
第一个选C。因为取余运算符(%)是对整形变量(或常量)取余数,而你的变量a是double型的,所以编译肯定会报错的。而我们知道整形可以被自动转换为float或者double,但是反过来是不行的,所以你要是想用上面的语句的话,需要加强制类型转换,即:i=(int)a%11.

第二个c:由于你定义的是字符变量,那么a,b,c,d都只能接受一个字符,要么是一个单个数如1-9或者是一个单个字符a,b,c等等。如是你输入12时被a,b接受,然后你输入<CR>3时被c,d接收。可是你输入4时已经无法接收了,再输入<CR>就执行了printf命令。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式