帮忙看看这道c语言编程题,关于do-while的
要求编一个程序,把1000到3000之间的阿拉伯数字转换成罗马数字,保持程序持续运行下去,直到用户输入“e”或者“E”。前面都不成问题,但是运行时,在while那里,直接循环,跳过让用户输入的选项。哪里有问题?帮忙看看。加急!!!!!!!谢谢 #include<stdio.h> #include<iostream> int main() { char *a[][10]={"","I","II","III","IV","V","VI","VII","VIII","IX", "","X","XX","XXX","XL","L","LX","LXX","LXXX","XC", "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM", "","M","MM","MMM"}; int n, t, i, m, d, f; char asd; do { printf("Please enter an four-digit integer Arabic number from 1000 to 3000:"); scanf("%d",&n); printf("%d=",n); for(m=0, i=10000; m<4; m++, i=i/10) { d=n%i; f=i/10; t=d/f; printf("%s", a[3-m][t+1]); } printf("\n"); printf("Press Enter to continue. If you want to end this program, please enter 'e' or 'E'.\n"); asd=getchar(); printf("\n"); }while(!(asd='e'||'E')); system("pause"); return 0; }
while(!(asd='e'||'E'));本身就是一个错误。“=”是赋值号,“==”才是条件判断符,而且不能||'E' 这么写,这么写的话就只能相当于(asd='e')||('E')而已,那么'E'就直接成为判断值。 正确的写法: while(!('e'==asd || 'E'==asd)); 或者 while('e'!=asd && 'E'!=asd);
答:UC问的不无道理 以前有人问过类似问题 看样子我当时的理解就跟现在的情况不同:$ 现在的情况,从第一年开始,牛的数量组成数列a[n]: 1,2,3,4,6,9。...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>