c语言问题,输入执行12345# 求答案135的原因

#include<stdio.h>
int main()
{char c;
for(c=getchar();getchar()!='#';c=getcar))
putchar(c);
return 0;
}

第1个回答  2013-06-06
12345#
第一次循环,c=getchar()读取1,此时c=1;
getchar()读取2,2!='#';
执行putchar(c),即数出1
第二次循环,c=getchar()读取3,此时c=3;
getchar()读取4,4!='#';
执行putchar(c),即数出3
第三次循环,c=getchar()读取5,此时c=5;
getchar()读取#,2=='#';
结束执行
总结:数出13本回答被提问者和网友采纳
第2个回答  2013-06-06
首先c=getchar() 读取了1赋给c
getchar()!='#' 读取2并判断2是否为‘#’
putchar(c); 输出c 也就是1
c=getchar() 读取了3赋给c
getchar()!='#' 读取4并判断4是否为‘#’
putchar(c); 输出c 也就是3
c=getchar() 读取了5赋给c
getchar()!='#' 读取‘#’并判断‘#’是否为‘#’ 这时循环结束

应该是输出13吧
第3个回答  2013-06-06
getchar()!='#' 原因是这里的判断语句也执行了一次getchar

c语言问题,输入执行12345# 求答案135的原因
12345 第一次循环,c=getchar()读取1,此时c=1;getchar()读取2,2!='#';执行putchar(c),即数出1 第二次循环,c=getchar()读取3,此时c=3;getchar()读取4,4!='#';执行putchar(c),即数出3 第三次循环,c=getchar()读取5,此时c=5;getchar()读取#,2=='#';结束执行 总结:数出13 ...

C语言输入的程序12345输出一二三四五怎么编
printf("error !\\n");\/\/如果输入数字非12345则输出error!} 试过了 可以用

...逆序输出每一数位上的数字 如输入12345 输出5 4 3 2 1
输入一个整数,将其每位剥离,并记录在一个数组中,此时每位数即是逆序排列的。include <stdio.h>#define ARRAY_LEN 100 \/*数组长度*\/void numToDigit (int num, int arr[]) { \/*将数字按位剥离并存储在数组中,该算法剥离出的每位数即是逆序排列的*\/int i,j,n;for (i = 0, n = num...

...个程序实现输入一个五位数得到各位上数字的和,比如属如“12345...
} \/\/可以自己加判断语句 看输入的c是不是数字 c<'0'||c>'9'

...输入一个数,将其各位数字正序输出 输入 12345 输出 1 2 3 4...
include <stdio.h>int main(void){ char num[1024] = {0}; gets_s(num, 1024); \/\/若不支持c11,请替换为gets(num); for(int i = 0; num[i] != '\\0'; ++i) printf("%c ", num[i]); putchar('\\n'); return 0;} ...

C语言这个小程序输入12345咋个只输出一个6,不是23456?
缺少大括号,没有大括号的话,编译器认为循环体只有c=a[i]+1;printf只执行了一次。改成下面这样既可:for(i=0;i<5;i++){ c=a[i]+1;printf("%d",a[i]);}

根据素数位置复制 C语言列如输入12345,则输出235,求大神指教!
判断素数的地方 for(i=0;i<=sqrt(n);i++)这个应该是 for(i=2;i<=sqrt(n);i++)不能从计算0 和1. 对0 取余会出错,对1取余,任何一个都是0

...整数按输入顺序的反方向输出,例如,输入数是12345,要求输出结果是54321...
第二句是输入提示 第三句是把输入的值赋给m 第四句是将n赋值为1 (可以省略)第五句是一个循环(期中结束的条件是mod_mn==0)第六句是每次叫m的值拿来求余10把值赋给mod_mn 第七句是打印(m-mod_mn*n*10)\/n---实现逆序 第八句是结束条件 第九句是每次扩大n的值扩大10倍。

C语言编程,输入一个五位数,输出反向数。例如12345,输出为54321...
{ do { printf("%d", x%10); x=(int)x\/10; } while (x>0); } else printf("Data error."); return 0;}

C语言:输入12345#后,写出下列程序的输出结果
”,此时缓冲区中的‘4’已经被读取且未输出;第三次循环开始的时候先执行c=getchar(),此时c=‘5’,因为此时getchar()==’#’不满足循环条件,所以未进行输出。你想表达的意思应该是下面这样吧:void main(){ char c;for(c=getchar(); c!='#'; c=getchar())putchar(c);return;} ...

相似回答