已有140人关注
有关于转义字符(回车换行)的错误
发表在C语言答疑区 2018-05-07 悬赏:1 学分
是否精华
版块置顶:

#include<stdio.h>

int main()

{

int grade;

printf("cheng ji is");

scanf("%d\n",&grade);

    if(grade>=100&&grade>=90)

grade=90;

if(grade>=80&&grade<=89)

grade=80;

if(grade>=70&&grade<=79)

grade=70;

if(grade>=60&&grade<=69)

grade=60;

switch(grade)

{

case 90:

printf("A");

break;

case 80:

printf("B");

break;

case 70:

printf("C");

break;

case 60:

printf("D");

break;

default:

printf("E");

}

}

问题是这段编码第一次不计算结果,第二次会计算正确结果,如果取消scanf里的换行则没有这种错误,为什么会这样?如果要换行,正确的位置应该写在哪?

分享到:
精彩评论 3
李木子
学分:2954 LV11
2018-05-08
沙发

你好:

 这段是哪本书的代码呀,我这边运行看一下

mingricopy1995
学分:147 LV3
2018-05-08
板凳

老师:

 这不是书上的代码

是我根据书上有一例根据成绩输出等级的代码  

然后自己想到switch中不使用除以10这种算法而使用了使用if来进行定义时间了一下可行性

可是就是结果就是第一次输入不计算结果  第二次输入计算结果且结果正确  如果取消scanf中的回车换行,程序无任何问题。

VS6.0不是可以粘贴么,老师你试试呗!

李木子
学分:2954 LV11
2018-05-09
地板

mingricopy1995 发表于2018-05-08 23:24

老师:

 这不是书上的代码

是我根据书上有一例根据成绩输出等级的代码  

然后自己想到switch中不使用除以10这种算法而使用了使用if来进行定义时间了一下可行性

可是就是结果就是第一次输入不计算结果  第二次输入计算结果且结果正确  如果取消scanf中的回车换行,程序无任何问题。

VS6.0不是可以粘贴么,老师你试试呗!

这句话scanf("%d\n",&grade);不加\n

首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照