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条)

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图