51Testing软件测试论坛
标题:
请教各位一题C语言题目,请大家帮帮忙
[打印本页]
作者:
七明芝
时间:
2008-9-7 20:54
标题:
请教各位一题C语言题目,请大家帮帮忙
请教各位下面这个程序,
do while 语句一直不对,char型换成int 型却可以,请问各位是怎么回事?
#include "stdafx.h"
#include "stdio.h"
void main()
{
float x;
char a='y';
do
{
printf("Input the mark:\n");
scanf("%f",&x);
printf("mark=%3f\n", x);
if (x>=0 && x<=100)
if (x>=85)
printf("成绩优秀\n");
else
{
if (x>=60)
printf("成绩良好\n");
else
printf("不及格\n");
}
else
printf("输入错误\n");
printf("是否继续查询?是,请输入y;否,输入其他任何字符\n");
scanf("%c", &a);
}
while(a=='y');
}
作者:
zhanglu_8207
时间:
2008-9-8 10:11
除了开始的时候 没看懂为什么 给a直接赋值 y以外 其他的看不出错
所以要请高手来回答了..
[
本帖最后由 zhanglu_8207 于 2008-9-8 10:15 编辑
]
作者:
Tony`Wei
时间:
2008-9-8 13:39
貌似 printf("Input the mark:\n");
scanf("%f",&x);
printf("mark=%3f\n", x);
if (x>=0 && x<=100)
if (x>=85)
printf("成绩优秀\n");
这段应该加对括号
作者:
水印无痕
时间:
2008-9-8 16:10
scanf("%c", &a);
我记得这么用会出问题的
单个字符的输入最好避免用scanf
作者:
willsmas
时间:
2008-9-9 01:55
scanf("%f",&x);
。
。
。
scanf("%c", &a);这句不能正常接收字符
你可以用printf("a=%d\n",a);将a里面的数值显示出来看到底a读取什么字符,结果是 a=10 ,ASCII值为10是什么?换行即\n.
当你执行第一个语句scanf,输入x回车后,x和换行符留在缓冲区中。第一个scanf只读取了x,但是输入缓冲区里面还留有一个\n,因此第二个scanf读取这个\n,这个语句即使你使用getchar()也不能解决问题,读取的还是这个换行符,这属于键盘缓冲区残余信息问题,在使用第二个scanf之前,你必须清空它。
如果换成读取数据当然就不存在这个问题了。
作者:
heroing
时间:
2008-9-9 03:48
一个很基本的问题
CHAR型不能用SANF
作者:
heroing
时间:
2008-9-9 04:11
标题:
回复 1# 的帖子
#include "conio.h"
#include "stdio.h"
void main()
{
float x;
//char a;
do
{
printf("Input the mark:\n");
scanf("%f",&x);
printf("mark=%3f\n", x);
if (x>=0 && x<=100)
if (x>=85)
printf("成绩优秀\n");
else
{
if (x>=60)
printf("成绩良好\n");
else
printf("不及格\n");
}
else
printf("输入错误\n");
printf("是否继续查询?是,请输入y;否,输入其他任何字符\n");
}
while(getch()=='y'||'Y');
}
作者:
七明芝
时间:
2008-10-9 20:52
标题:
回复 6# 的帖子
高手,高手。受教了
我是新手,有时候真觉得计算机的脑子是个怪胎。
字母和数字我眼里都是抽象符号,怎么在计算机里就差别那么大呢?
难理解。。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2