c++程序一运行就显示程序弹出对话框显示遇到问题需要关闭,望高手解答,程序是计算单词加法的
#include<iostream.h>voidmain(){inti,j,sum,m=0,n=0,p=0,q=0;chara[10][6]={"zero","one",...
#include<iostream.h>
void main(){ int i,j,sum,m=0,n=0,p=0,q=0; char a[10][6]={"zero","one","two","three","four","five","six","seven","eight","nine"}; char b[28]; cin.getline(b,28); for(i=0;;i++) { if(a[i][0]==b[0]&&a[i][1]==b[1]) break; } m=i; for(j=0;;j++) { if(b[j]==32) break; j+=1; } for(i=0;;i++) { if(a[i][0]==b[j]&&a[i][1]==b[j+1]) break; } n=i; for(;;j++) { if(b[j]==43) break; } j+=1; for(i=0;;i++) { if(a[i][0]==b[j]&&a[i][1]==b[j+1]) break; } p=i; for(;;j++) { if(b[i]=32) break; j+=1; } for(i=0;;i++) { if(a[i][0]==b[i]&&a[i][1]==b[j+1]) break; } q=i; sum=m*10+n+p*10+q;cout<<sum<<endl;}, 展开
void main(){ int i,j,sum,m=0,n=0,p=0,q=0; char a[10][6]={"zero","one","two","three","four","five","six","seven","eight","nine"}; char b[28]; cin.getline(b,28); for(i=0;;i++) { if(a[i][0]==b[0]&&a[i][1]==b[1]) break; } m=i; for(j=0;;j++) { if(b[j]==32) break; j+=1; } for(i=0;;i++) { if(a[i][0]==b[j]&&a[i][1]==b[j+1]) break; } n=i; for(;;j++) { if(b[j]==43) break; } j+=1; for(i=0;;i++) { if(a[i][0]==b[j]&&a[i][1]==b[j+1]) break; } p=i; for(;;j++) { if(b[i]=32) break; j+=1; } for(i=0;;i++) { if(a[i][0]==b[i]&&a[i][1]==b[j+1]) break; } q=i; sum=m*10+n+p*10+q;cout<<sum<<endl;}, 展开
2个回答
展开全部
你这程序不报错才怪了。。。
每一个循环都会产生死循环。
第一个for如果输入的b不是a中的字符,就一辈子跳不出来。死循环直到程序崩溃
第二个for已经写了j++你还在后面j += 1相当于每次跳两位,b一共就28个字符,你的j也是没有限制。如果b[j]不是32,就一直j++下去,能有b[100]这个元素吗?肯定还是报错。。。。
剩下的就不说了,同理。
你整理一下思路。把for循环的条件都写全了。逻辑都想明白,别有遗漏
最好画个流程图,你每次一步想干什么都写下来
每一个循环都会产生死循环。
第一个for如果输入的b不是a中的字符,就一辈子跳不出来。死循环直到程序崩溃
第二个for已经写了j++你还在后面j += 1相当于每次跳两位,b一共就28个字符,你的j也是没有限制。如果b[j]不是32,就一直j++下去,能有b[100]这个元素吗?肯定还是报错。。。。
剩下的就不说了,同理。
你整理一下思路。把for循环的条件都写全了。逻辑都想明白,别有遗漏
最好画个流程图,你每次一步想干什么都写下来
追问
我的设想是 输入0到9的英文单词,实现运算(例 one two+one two=24)所有的for循环全通过break跳出。
问题就在于我不知道该怎么实现数组种元素的计数,来跳过数组中的空格和加号
追答
呵呵。那你想用C++?加号周围有空格没?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询