中易网

c语言程序为何有一半不运行

答案:2  悬赏:0  
解决时间 2021-03-12 03:59
//给一个不多于5位的正整数,
#include
#include
int main()
{
int num,indiv,ten,hundred,thousand,ten_thousand,place;
printf("请输入一个整数(0~99999):");
scanf("%d",&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else place=1;
printf("位数:%d\n",place);
printf("每位数字为:");
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{case5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand);
break;
case3:printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d,%d,%d\n",indiv,ten,hundred);
break;
case2:printf("%d,%d",ten,indiv);
printf("\n反序数字为:");
printf("%d,%d\n",indiv,ten);
break;
case1:printf("%d",indiv);
printf("\n反序数字为:");
printf("%d\n",indiv);
break;
}
return 0;
}
最佳答案
你的数据格式输入输出有错误。
case5 应该是case 空格 5 ;你丢失了空格所以错误了。
全部回答
有点儿意思。原因却出乎意料的简单。 char *rwtab[27]={"main","if","then","while","do"," static","int"," double","struct","break","else","long","switch","case","typedef","char","return","const","float","short","continue","for","void","sizeof","default","do"}; 少了一项,只有26项,rwtab[26]是空指针,访问到它时,就出错了。错误提示如下: 我没有修改这一句的时候,在你指出出错的地方加了下面一句: for(n=0;n<27;n++) if(strcmp(token,rwtab[n])==0)//比较是否关键字 { printf("cathch a key-word\n"); // } 出错了,提示信息如下: 这意味着,访问了一个空指针。 修改如下: char *rwtab[27]={"main","if","then","while","do","static","int",\"double","struct","break","else","long","switch","case",\"typedef","char","return","const","float","short","continue",\"for","void","sizeof","default","do","long"};//数组少一项,没有27项,另外几个关键词前面有空格,也应该删除。 加了续行符号。修改之后,运行成功: 我用你的程序做a.txt,生成文件b.txt,c.txt,今天不知什么情况,不能上传。 为什么这样?很玄妙: rwtab数组少一项,rwtab[26]会引用一个空指针,产生错误。这儿没有语句时,循环没有实质性语句,编译程序优化, 不会编译这个循环的语句,程序中根本没有这几句的内容,因而不会出错。有了语句,就不能省略了,就出错了。 就是这样简单。 另外,你的程序必须当做c++程序编译,否则通不过。c不允许在有实质语句之后定义变量,变量说明要全部放到相应段的最前面,也不支持//注释。我是用devc++编译成功的,用wintc编译失败。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
淘宝最近一周的那个点数怎么算的呢
只有淘宝网有聊天软件么?其他购物网站买家与
金剑小区二期地址在什么地方,想过去办事
车证.身份证过期的问题!!!!!!!!!!!!!
有欠条找没有还款日期借款人居无定所打官司能
洞村大众菜馆地址在什么地方,想过去办事
百度超级会员,哪里有好价
与私人教育机构有纠纷 应该找什么部门投诉
有那首歌曲里面歌词是一(什么)的总是重复着
中国烟草(西门大街店)这个地址在什么地方,我
我想问下商标注册,找天猫的人注册可靠吗?办
振邦木业在哪里啊,我有事要去这个地方
重庆天生三桥和天空悬廊是同一个地方么
打玻尿酸丰下巴,用先敷麻药吗?
孝道——读《弟子规》有感
推荐资讯
音响发出放屁声
雅昌艺术网交易成功光绪元宝当制钱二十文成交
秋水依人洗衣旗舰店在哪里啊,我有事要去这个
流星蝴蝶剑怎么操作
各位大师 想问下 家门口对着个消火栓好还是不
鼠标托架有用吗?
承翰早教中心在什么地方啊,我要过去处理事情
I ofen go over ___ I have learned. A. that
国购金融中心A座地址在什么地方,想过去办事
亲们结婚彩礼要多少?
舞之恋艺术培训学校(蒋峪店)地址好找么,我有
mac热卖色是哪个色
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?