初学 C,遇上了几个简单问题,求解决

2021-10-18 00:03:00 +08:00
 tiRolin

使用的平台是 devc++

目标是想要将 0 到 100 分,分成 abcde 五个等级

#include <stdio.h>

int main()

{ int grade; printf("请输入你的成绩:"); scanf("%d\n",&grade); if ( grade>=90 ) { printf("你本次测验的成绩为 A"); } else if ( 80<=grade < 90) { printf("你本次测验的成绩为 B"); } else if ( 70<=grade < 80 ){

printf("你本次的测验的成绩为 C");

} else if (60<=grade < 70){

printf("你本次测验成绩为 D");
}

else if ( grade < 60){

printf("你本次测验的成绩为 E");
}
return 0;

}

出现的问题,运行时只要输入低于 80 的分数,结果都只会显示成 B 且输入数字按下回车后需要再输入数字才能出结果

目标,设计一个让用户猜数字大小并能够让用户知道自己猜了多少次的小游戏

#include <stdio.h> int main() { int number = 55; int count = 0; double a; do { scanf("%lf\n", &a); count++; if ( a > number ){

	printf("大了");
	
	}
	else if ( a < number ){
		printf("小了");
		
	}
	
}
while ( a != number );

printf("总共耗费%d 次猜对", count);

	
 


return 0;

}

问题,在运行里输入的次数必须是两次才会进行一次判定,且会计入总猜题数

1572 次点击
所在节点    问与答
10 条回复
Tucao
2021-10-18 00:32:08 +08:00
最好对着一本合适的入门书,先敲敲代码,课后练习也做一做。
这种程度基本功,后面的问题只会越来越多。如果你打算每次遇到小问题就发帖问的话当我没说。
wevsty
2021-10-18 00:37:53 +08:00
建议先排版好再问问题。
问题 1:70<=grade < 80 这里错在哪里自己想想。
问题 2: 浮点数和整数比较相等永远都是有风险的,为什么,自己想想。
ayase252
2021-10-18 00:42:00 +08:00
当 grade = 80
80 <= grade < 90 的结果是什么?
CEBBCAT
2021-10-18 01:01:06 +08:00
贴代码可以用 Gist 、Pastebin 之类的东西,或者学一下 Markdown 语法,这样才能把代码贴得比较好。

我记得 C/C++里面应该不能连续比较,就像"80<=grade < 90"这样,刚才 Google 了一下也说是不行。你是从 Python 带过来的知识吗?切换语言的时候最好看一下简单的介绍。

另外,关于连续的 if else,其实可以做成分开的,然后如果进入 if 里面,就直接 return 就好了,或者让程序干脆走到底。
Procumbens
2021-10-18 01:27:08 +08:00
80<= grade < 90 的结果一定是 true
因为 80<=grade 的判断结果为布尔结果,转化为整数就是 0 或 1,这个值是一定小于 90 的。
要判断区间的话就是 80 <= grade && grade < 90 。
windyskr
2021-10-18 01:28:37 +08:00
这不是谭浩强 C 语言教材的课后习题吗...
villivateur
2021-10-18 09:02:36 +08:00
c 语言的语法是非常严谨的,不能随便写,a < b < c 这种写法是不允许的
Leonard
2021-10-18 09:22:05 +08:00
你这代码贴的也太乱了。
如#7 所说 C 语音不要多个不等式放在一起写
salor
2021-10-18 16:49:43 +08:00
第一个问题,想用一个表达式判断两个运算符的时候要用『且&&』『或||』去判断,分析见#5

第二个问题,scanf 加了\n,分析 https://stackoverflow.com/questions/19499060/what-is-the-effect-of-trailing-white-space-in-a-scanf-format-string
salor
2021-10-18 17:01:01 +08:00
要学会多 printf 打印值找 bug 。编译器的语法提示,断点找 bug 都很有用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/808410

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX