[此贴子已经被作者于2005-2-26 13:48:17编辑过]
[此贴子已经被作者于2005-2-26 13:48:17编辑过]
#include <stdio.h> #include <ctype.h>
main() { char x,y; x=0;
while (isupper(x)==0){ printf("Please input again:\n"); x=getchar(); getchar(); y=x+32; printf("%c %d\n",x,x); printf("%c %d\n",y,y); } } =============== 这样就可以了
程序我看了一下,和下面的程序属同一个问题: 就是接收了输入字符后的回车作为输入。呵呵! 解决方法:1. 将while里面的 scanf("%c", &x); 改为 scanf(" %c", &x); 就是在%c前加一个空格以不接收类似空格之类的字符。 2.可以和下面这处程序解决方法一样。在此不再重复,呵呵。
引用:
帮我找看错在那里啊[求助]
我一个刚学C的小鸟,做拉一个“计算两个数并且显示出来”的程序。调试的时候就是不能显示,我找不到是什么原因
/* 原程序我修改了一下个人的风格,内容没有变 建议作者多看一下编程风格和规范方面的书籍 */ #include "stdio.h" main() { /*定义变量,a,b为输入数据,c为输出结果,d为运算符号*/ int a,b,c; char d; /*do循环判断输入的a,b都不为0*/ do { printf("please put in the first num\n"); scanf("%d",&a); printf("please put in the second num\n"); scanf("%d",&b); if (a*b==0) printf("doing is wrong\n"); } while (a*b==0);
/* 出错在这里:当你输入第二个数的时候,要用回车确认,此时标准输入流(stdin)中包括“b的输入值”和“回车” 而"scanf("%d", b);"这一个语句只接收了“b的输入值”, “回车”则仍在stdin中,下一句"d = getch();"所接收到的是“回车”,而不是你输入的运算符. */
/*获取输入的运算符号*/ printf("please put in the char"); /* 解决方法:1.在此加多一句 "d = getchar();" 以接收掉“回车”; 2.在此加多一句 "fflush(stdin)" 以刷新标准输入流stdin; */ d=getchar(); d=toupper(d); /*选择语句判断根据所输入的运算符号,选择运算和打印*/ switch (d) { case '+' : c=a+b; printf("c=a+b=%d+%d=%d",a,b,c); break; case '-' : c=a-b; printf("c=a-b=%d-%d=%d",a,b,c); break; case '*' : c=a*b; printf("c=a*b=%d*%d=%d",a,b,c); break; case '/' : c=a/b; printf("c=a/b=%d/%d=%d",a,b,c); break; case '%' : c=a%b; printf("c=a%b=%d%%d=%d",a,b,c); break; }
[此贴子已经被作者于2005-2-20 22:02:34编辑过]