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