简单的C语言题

读程序,回答下面的问题:#indude<stdio.h>voidmain(){intn=0;charc;whiel(c=getchar(())!=\n')//{if(c>... 读程序,回答下面的问题:
#indude <stdio.h>
void main()
{
int
n=0;
char
c;
whiel(c=getchar(
())!= \n')
//{
if(c>='0'&& c<='9')
n=n*10+c-'0';
"/②}
printf("value=%d\n",n);}
问题①(c=getchar( )) != "\n’的含义是什么? (2分)
问题②如果输入kas2i9e则程序的最后输出结果是什么(求过程)
展开
 我来答
欧璟卫思山
2020-03-22 · TA获得超过3622个赞
知道大有可为答主
回答量:3039
采纳率:34%
帮助的人:225万
展开全部
第一题:a*=16+(b++)-(++c)等价于a=a*
(16+(b++)-(++c));
"()"优先级最高,所以先执行:(b++),在使用b之后,使b加一,因此(b++)=3;(++C),在使用c之前,使C加一,因此(++C)=5。然后将按照加减的结合性."自左向优"计算,因此16+(b++)-(++c)=14;之后
执行a*(16+(b++)-(++c))=28,所以a=28;
第2题:结果应该是1,因为unsigned
short类型的数值范围是0到65535,(-
-!汗,你可找c\c++程序设计的书,那里可以找到数据类型的数值范围)因为int是范围要大多,又因为signeed是以补码形式存放,而unsigned是全部2进制位都用本身表示自己,所以
程序的输出结果是-1;
第3题:x/y=0.5,但要自动转换成int类型,因此x/y=0
,所以1.0+x/y的值为1.0;
第4题:x-=y-z等价于x=x-(y-z),用小学的算法计算x-(y-z)=5,
x的值为5;
x%=y+z等价于x=x%(y+x),因为x%(y+x)=0.5,又因为x,y都为整形(int),所以x的值为0;
第5题;在此语句中printf("#d&%d\n",(++x+y++),z+2);
#d&是字符输出,%d是输出第一个表达式(自左向右),即是(++x+y++),先执行自增运算符++x值为4,(原理看第一题的说明),y++的值为3,所以(++x+y++)
=7,所以程序执行结果是#d&7;
第6题:我觉得你这个题目是你抄错题"a=2,b=3,c=4.5,y=1.6,"中的c应该为x,这题是这样的,先执行(int)x=4,(int)=1,再执行(int)x%(int)y=4(注意,这里4是float类型),在执行(float)(a+b)/2=2.5,所以此表达式的值为6.5
第7题:-
-!你有抄错题没有?
main()
{int
i,j,m,n;
i=8;
j=3;
m=++i;
n=j--;
printf("%d,%d,%d,%d,i,j,m,n);}
/*觉得是printf("%d,%d,%d,%d",i,j,m,n);
*/
m=++i;因此m=9,这里i为9,这个容易理解(第一题);j第一次执行的时候n=j--,这里n=3,j=3;到第2次执行J的时候,即是执行printf("%d,%d,%d,%d,i,j,m,n)语句,这里的j就为2
因此执行结果为:9,2,9,3
第8题:因为a>b>C是真,在C中都用数值1表达真,0表达假,所以m=1,所以表达式m=a>b>c的值是1;
第9题:又抄错题?-
-!“b=2”?
先执行!,在执行关系运算符,a>b为真,c>a为假,a<b为假,!c>b为假,在执行逻辑运算符a>b&&c>a为假,a>b&&c>a‖a<b为假,a>b&&c>a‖a<b&&!c>b为假,所以a>b&&c>a‖a<b&&!c>b的值是0;
第10题:答案肯定为0;"设a=3,b=4,c=5,则表达式!(x=a)&&(y=b)&&0的值是"这题你做的出请告诉我,我也不会。(但可以敢肯定的是他的值为0,因为这个表达式的后面那个数据为0)如果将这题这样改写的话“10.设a=3,b=4,c=5,则表达式!(c=a)&&(c=b)&&0的值是”,我就有感觉怎做,首先(c=a)为假,!(c=a)为真,(c=b)为假,!(c=a)&&(c=b)为假,!(c=a)&&(c=b)&&0为假,即是0;
向幸福开门
2018-07-10 · 超过28用户采纳过TA的回答
知道答主
回答量:79
采纳率:80%
帮助的人:30.2万
展开全部
第一个问题,\n是C语言中的转义字符,代表回车的意思,不等于回车,就说明字符变量必须从输入流得到一个字符,作为它的值,这样才能进行循环。
第二个问题,输入kas2i9e,逐个分析,输入k,进行循环之后,首先if语句判断字符变量c的值要在字符0~9之间,如果不在这个范围内就无法进行下一语句,那么实际上,只有2和9这两个字符可以运行if后面的语句。但是,因为你发的代码看着太乱了,结果我猜应该是2*10+9=29.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2018-07-10 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6292万
展开全部
  1. ①(c=getchar( )) != "\n’的含义是什么?——从键盘接收一个字符赋给变量c,若c不是回车,while进入下一轮循环,若是回车则退出循环。

  2. ②如果输入kas2i9e则程序的最后输出结果是什么——输出是29。因为if(c>='0'&& c<='9')限制只处理0~9这10个字符,n的初值是0,遇到2时n=10*0+'2'-'0'==0+2==2('2'-'0'把字符2变成了数字2);下一次遇到9时n=10*2+'9'-'0'==20+9==29。毕。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式