请帮我解释一道C语言程序题

作者&投稿:汪虎 (若有异议请与网页底部的电邮联系)
getchar()是获取字符
getchar()!='#'是取得的字符不为‘#’则循环
每getchar()一次就取一个字符
只循环一次
c=1; //初始
2!=#; //条件
putchar(c); //条件为真,执行,这时c就是1
c=3 //是最后执行的

所以答案是1呀

不是1啊
这是一个输入什么字符就输出什么字符的程序
从程序的本意上看,应该是输入'#'跳出循环,程序结束
for(c=getchar();getchar()!='#';c=getchar())
上句改为for(c=getchar();c!='#';c=getchar())会有输入#跳出的功能
正是由于有getchar()!='#'这句才会有输出1的结果。

输入123#,c得到1,然后getchar()又得到2,!='#',所以输出1
然后继续循环,c得到3,getchar()得到#,程序跳出,不用输出了
所以只有一个1,如果找我所说上述改法,将输出123

c=getchar()取第一个'1' getchar()!='#'取第二个'2' for中的第二个c=getchar()取第三个'3' 执行第二次循环时getchar()正好是#

for( ①; ②; ④ ){ ③ }
循环的步骤是①先设定初值;②判断条件;条件成立执行③;然后执行循环步骤④;再重复判断②和执行③④;直到②不满足条件,退出循环。

所以,该程序的for循环执行步骤是:
1.设定初值c=getchar(),读取字符'1',c='1';
2.判断条件getchar()!='#',读取字符'2',条件满足,执行循环;
3.putchar(c),显示字符c的内容'1';
4.执行循环步骤c=getchar(),读取字符'3',c='3';
5.判断条件getchar()!='#',读取字符'#',条件不满足,退出循环。

运行结果为:1

第一次进入循环,通过getchar获得字符1,然后判断getchar()是否为字符'#',getchar()获取一个字符后指向下一个,第一次判断的时候通过getchar()获取的是字符'2',因此结果为true;进入循环输出c,然后再执行c = getchar(),此时c的值是字符'3',然后执行判断,此时getchar()获取的字符是'#',循环就结束了。

帮我解答一道C语言程序设计题~

#include#include int main(){ int n=5; int a[5][3]; int i,j; for(i=0;i0;i--) { for(j=0;j<i;j++) { if(avg[j]<avg[j+1]) { double t=avg[j]; avg[j]=avg[j+1]; avg[j+1]=t; int it=index[j]; index[j]=index[j+1]; index[j+1]=it; } } } for(i=0;i<5;i++) { printf("%d%.2f
",index[i],avg[i]); } system("pause"); return 0;}

c语言程序帮解读

哪位大虾可以帮我解释一道C语言的题目?我看不懂啊...给我读读这个程序...
答:case 1:switch(c){ case 1:printf("$"); //若是c=1,则输出"$*" ;若是c=2则输出"*"case 2:printf("*");break;default:printf("#"); //当c=3时,选此,输出"#"} } } //整个程序好像不是很完整。以上纯属个人理解。你看看 ...

解释一下程序(C语言)
答:int jsValue(int a[10][9]) /*标准答案*/ //这个答案也有错的时候 ,特别有些是多余的,估计是其他类似题目,拿来修改一下。{int I,j,k=0;int hun,ten,data ,bb[100]; // 按答案,这里声明一个数组bb[100];for(I=100;I<=999;I++) // {j=10;while(j*j<=I){if (I==j...

求解释一个C语言程序
答:0, 0) 继续执行 i = 2 + 1因此第一个数选择3,继续 调用 DFS(1, 3) 需要第 1 个数,选择范围从 3 + 1 到 m(3), 很明显这里的循环将不能执行,因为循环条件是假的,因此退出 DFS(1, 3) 返回到 DFS(0, 0) 继续执行 循环:循环条件不满足。返回到 主程序 main 执行结束。

c语言程序设计的基础题目求教,请给解析(多追积分)
答:4:若有定义:int a=10,b=9,c=8;接着顺序执行后下列语句是,变量b中的值是()c=(a-=(b-5));c=(a%11)+(b=3);由上面的几题为基础,c=(a-=(b-5))相当于c=(a=a-(b-5)),c=(a=10-(9-5)),c=(a=6),所以a=6,c=6,b=9(表达式b-5并没有改变b的值)c=(a%11)+...

请帮忙解释一道C语言程序的思路与步骤
答:include"stdio.h"struct student { char num[10]; //10位的学号 char name[10]; //10位字符串的名字 int score[3]; //数组存放3门分数 float aver; //记录平均分 } stu[5]; //定义个含有5个元素全局结构体数组,5个是因为有5个学生,以后用这个数组代表学生啦。void m...

解释一下这个C语言小程序
答:include<stdio.h> void main(){ int x,y;x=y=0;while(x<15){ y++,x+=++y;printf("%d,%d\n",y,x);} printf("%d,%d",y,x);} 2,2 4,6 6,12 8,20 8,20Press any key to continue上面是运行结果,执行一次while中的语句,y值增加2,x加上的值是y增加2后的值 ...

求救一道C语言的题目,求详细解答过程!非常感谢!!
答:1.int i;int f[20]={1,1};程序定义了一个变量i和一个长度为20的整型一维数组并把数组的前两个值均初始化为1后面初始化为0 2.for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1];在i从2到20每次自增1的循环过程中,其实就是在给数组第3个数(数组下标从0开始,所以循环从2开始)到第...

C语言的一道题,求大神详细解释下子。。。
答:这是一个很简单的C语言程序。include<stdio.h> //引入必要的头文件,支持printf函数。main() //主函数定义 {int x=15; //声明整数类型x,并赋初值15 while(x>10&&x<50) //当x大于10,并且x小于50的时候 {x++; //x增1,变成16 if(x/3) {x++;break;} //注意这...

一道c语言题,解释一下。
答:结果是8 define N 2 define M N+1 define MUN (M+1)*M/2 宏定义的带入是直接带入 也就是如下:MUN = (M+1)*M/2 = (N+1 + 1) * N+1/2 后一个N+1没有括号,这是规则。= (2 + 1+ 1)* 2 + 1/2 = 8 (%d)打印结果是8 所以 ...

C语言程序题求大神解释。
答:int x[3][2]={0} 这种定义方法为定义一个3*2的数组,同时把第一个元素x[0][0]赋值为0. 由于C语言的规则,当数组定义时部分赋值时,其他没有显式赋值的元素自动赋值为0。 所以这个操作是把x中所有元素都赋值为0 然后如你所说 for循环输入三个数存在你所说的x[0][0],x[1][0],x[2]...