爱问知识人 爱问教育 医院库

帮忙看看这道c语言编程题,关于do-while的

首页

帮忙看看这道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;
}

要求编一个程序,把1……
提交回答
好评回答
  • 2009-12-29 19:40:38
    while(!(asd='e'||'E'));本身就是一个错误。“=”是赋值号,“==”才是条件判断符,而且不能||'E' 这么写,这么写的话就只能相当于(asd='e')||('E')而已,那么'E'就直接成为判断值。
    正确的写法:
    while(!('e'==asd || 'E'==asd));
    或者
    while('e'!=asd && 'E'!=asd);

    k***

    2009-12-29 19:40:38

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 175-194
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):