几个简单的c语言小问题 解决一题给十分

一。main()
{ int a=0,b=1,c=0,d=20;
if(a) d=d-10;
else if(!b)
if(!c) d=15;
else d=25;
printf(d="d\n",d)
}
输出结果是多少?

二。设int x=10,y,z;执行y=z=x;x=y==z后,变量x的结果是多少?

三。#include<stdio.h>
main()
while(c=getchar()!="\n")
switch(c-""2")
{case 0:
case1:putchar(c+4);
case2:putchar(c+4);break;
case3:putchar(c+3);
default:putchar(c+2);break;
}
printf("\n");
}

一题十分,谢谢了
第三题 漏了问题 从键盘上输入446755 程序的输出是什么

原题全都是双引号 而且是int c 不是char

我只是打漏了第一个花括号而已

我知道代码错误多。。。。有的是我打错了,有的是原题错了。。。各位大神不要纠结细节了OTZ.....意会就好。。。只求解答过程。。。。

一。 d=20 if(a) d=d-10; a=0 if条件语句为假不执行 else if(!b) 不执行 if(!c) d=15; else d=25;是 else if(!b)下的语句 也不执行
二。 x=1 y=z=x; 赋值语句 x先赋给z 再赋给y x=y==z 先判断条件语句 y==z 是真
的 语句值为1 再赋给x
三。 第三题是要干什么
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-27
第一题:最后一行printf有错,应该改成:printf("d=%d\n",d);
答案是 d=20

第二题:x结果为1

第三题:不知道输入什么,所以不知道输出什么。且程序多处错误,main函数大括号不匹配,字符应该用单引号括起而不是双引号等。追问

第三题题目上写的就是双引号

第2个回答  2012-06-27
第一题
答: d=15
解析:注意程序的结构,多加几个括号程序就很清晰了
main()
{ int a=0,b=1,c=0,d=20; if(a) { d=d-10; } else if(!b) { if(!c) { d=15; } } else d=25; printf("d=%d\n",d); }
第二题
答: x = 1
解析:执行y=z=x后,y=z=x=10,注意赋值是从右到左;
执行x=y==z,实际上是先执行y==z,这个是个判断语句,成立值为1,不成立值为0
故x = 1

第三题
具体不知道要干啥,可是好些地方写错了,就当程序改错吧
int main()
{ char c; while((c=getchar()) != '\n') { switch(c - '2') { case 0: case1:putchar(c+4); case2:putchar(c+4);break; case3:putchar(c+3); default:putchar(c+2);break; } } printf("\n");}追问

提问已经修改了 请帮忙看一下谢谢。。。。。。

第3个回答  2012-06-27
第一个:结果为d=20
printf(d="d\n",d) / / 这里错误。
修改为:
printf("d=%d\n",d);追问

那个是打漏的。。。笔误。。。细节就不要计较了。。。。
第三题怎么做?(看问题补充)

追答

代码错误太多。

结果:88898787

修改后代码:
#include

main()
{
int c;

while((c=getchar())!='\n')
{
switch(c-'2')
{
case 0:
case 1:
putchar(c+4);
case 2:
putchar(c+4);
break;
case 3:
putchar(c+3);
default:
putchar(c+2);
break;
}
}
printf("\n");
}

追问

我知道代码错误多。。。。有的是我打错了,有的是原题错了。。。各位大神不要纠结细节了OTZ.....意会就好。。。只求解答过程。。。。

追答

main()
{
int c;

while((c=getchar())!='\n') // 输入:446755
{
switch(c-'2')// 字符串446755经过c-'2'处理后,对应数字224533
{
case 0:
case 1:
putchar(c+4);
case 2:
putchar(c+4); // 前2个22,执行这里,对应字符串44,加4后,输出88
break;
case 3:
putchar(c+3);// 33执行这里,对应字符串55,加3后,变成88,由于没有break;
所以接着执行default,putchar(c+2);,加2后是77,所以输出为8787
default:
putchar(c+2);// 45执行这里,对应字符串67,加2后,输出89
break;
}
}
printf("\n");
}

追问

1.这是字符串,题目却是int c 请问是题目出错了吗
2.switch(c-'2')// 字符串446755经过c-'2'处理后,对应数字224533 以后的程序是要在原字符串的基础上修改,而不是在-2后的数字上修改对吧。。。?
3. putchar(c+3);// 33执行这里,对应字符串55,加3后,变成88,由于没有break; 所以接着执行default,putchar(c+2);,加2后是77,所以输出为8787这里完全不懂。。。OMG

追答

1.int c没有错。它存储,字符的ASCII码值。
2 以后的程序是要在原字符串的基础上修改。
3
case 3: putchar(c+3);// 由于这里没有break;所以执行完毕此case后,它会顺序执行,也就是执行哪个default。
default: putchar(c+2);break;

你单步跟踪代码就知道了。

第4个回答  2012-06-27
1.d = 20 2.x = 1 3.88898787