几个简单的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

几个简单的c语言小问题 解决一题给十分
一。 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 是真 的...

请教几个简单的C语言问题!急!在线等!
4、二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。5、空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中...

两个C语言小问题,十分简单
x+a%3*(int)(x+y)%2\/4 \/\/先算(int)(x+y)=2.5+7%3*7%2\/4 =2.5+1*7%2\/4 =2.5+7%2\/4 =2.5+1\/4 \/\/1\/4是整数除,因此为0 =2.5+0 =2.5 a\/=a+a 相当于 a=a\/(a+a)=12\/24 \/\/12\/24是整数除,因此为0 =0 ...

简单的C语言问题
第一个问题:2\/4实际的值是0.5,但是由于是整型数值进行运算,所以,它的值系统会截断,即为0,那么后面的表达式为0,所以第一个式子的值为x,即2.5 第二个问题:这个表达式其实是一个逗号表达式,逗号表达式的值是最后一个语句,即x+1的值,但是这个过程里要从左至右依次进行运算 第三个问题:...

C语言问题简单的很,菜鸟送分,在线等
不就是输入一个正整数,然后反序输出么,关键部分无非就是 while(k!=0){ m=k%10;t=t*10+m;k\/=10;} 10可以直接取一个数的个位数,\/10则相当于将个位数去掉,把原来的十位数变成现在的个位数,然后就可以用%10取个位数(即原来的十位数),以此类推,可以取完该数的各位数....

用简单的C语言编写,有加分。
{ int stu[10]={65,75,45,80,90,60,39,95,78,55};int i=0,sum=0;if(i<10){ sum+=stu[i];i++;} printf("平均分:%f",sum*0.1);} 第二题 include<stdio.h> int main(){ int pf[8],i=0,max,min,sum=0;float ave;do{ printf("请%d号评委打分:");scanf("%d",&pf...

几个简单的C语言
1.include <stdio.h> int gcd( int a, int b ){ int rem;while ( b ){ rem = a % b;a = b;b = rem;} return rem;} int main( ){ int a, b;scanf("%d%d", &a, &b);printf("%d\\n", gcd( a, b ));return 0;} 2.include <stdio.h> int gcd( int a, int b...

简单c语言问题
首先 --x==y++ 前加减运算是先加减,后运算;后加减运算是先运算,后加减。因此,在进行==比较前,x=x-1=9,y=9 所以--x==y++的结果为真,执行--x分支,此时,x=x-1=8,得到a=8 最后y=y+1=10 然后到b=x++,先用x给b赋值,然后再加加,所以,b=8 最后c=y得到c=10;因此 a...

C语言问题简单的很,菜鸟送分,在线等
1.程序分析:用第一个与最后一个交换。2.程序源代码:define N 5 main(){ int a[N]={9,6,5,4,1},i,temp;printf("\\n original array:\\n");for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N\/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;} printf("...

简单的c语言题目
x初值为12,n初值为5 x%=(n%=2)n%=2就是n除以2的余数,结果为1 然后x%=1表示x除以1的余数,结果为0 所以x%=(n%=2)=0 3*a*e\/b\/*c错在b,c之间,有2个运算符了\/*,去掉其中之一就可以了。

相似回答