EveryLink 2017-12-13 15:09 采纳率: 66.7%
浏览 1147
已采纳

请问有没有C语言大神指点我这个程序究竟是怎么运行?是做什么功能的?有运行截图!求解,谢谢

#include
#include
int main(void){
char ch;
long number=0;
while((ch=getchar())<'0'||ch>'6')
;
while(ch!='?'&&ch>='0'&&ch<='6'){
number=number*7+ch-'0';
printf("%ld#",number);
ch=getchar();
}
printf("\n");
}

图片说明

  • 写回答

4条回答 默认 最新

  • threenewbee 2017-12-13 15:24
    关注
     while ((ch = getchar()) < '0' || ch > '6');如果输入的不是0-6之间的字符,这个循环就会一直执行getchar(),如果遇到一个0-6之间的字符,就把这个字符赋值给ch。
    while (ch!= '?' && ch >= '0' && ch<= '6')这句意思就是如果ch!=‘?’和ch>='0'和ch<=‘6’这3个条件有一个为假时退出循环,否则执行循环体。
    当你输入c2470f?的时候,第一个循环读到c字符的适合不满足退出条件,所以继续执行getchar();读到2字符的时候,满足条件退出循环。
    这时候到第二个循环,ch = ‘2’满足循环条件,所以执行循环体,ch-'0'就是把char型转换成了int型,是按字符的ascii码计算的,在这里就是把数字字符转换成了数字,所以number = 0*7+2 = 2;
    打印出2#,然后下一个getchar读到了‘4’,还满足第二个循环条件,这个时候number = 2了,所以在执行 number =number * 7 + ch - '0';的时候number = 2*7+4 = 18,打印出18#,再次执行getchar的时候ch=‘7’,不满足循环条件,所以退出了。
    所以打印结果就是2#18#
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?