求助!!!
本帖最后由 生姜ZYX 于 2021-4-17 15:35 编辑百分制成绩转换为2分制成绩,如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!
为什么下面的程序输出不了
#include<stdio.h>
int main()
{
int score;
char grade;
scanf("%d",&score);
if (score< 0 ||score > 100|| scanf("%d", &score)!=1)
printf("Input error!\n");
else if(score>=60)
grade='A';
else
t='B';
printf("%c",grade);
} #include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int score;
char grade;
int flag = scanf("%d",&score);
if (score< 0 ||score > 100 || flag != 1) printf("Input error!\n");
else if(score>=60) grade ='A';
else grade ='B';
printf("%c",grade);
return 0;
} baige 发表于 2021-4-17 15:13
请问那样写为什么不对呢{:10_254:}{:10_266:} 生姜ZYX 发表于 2021-4-17 15:18
请问那样写为什么不对呢
你那样写不是要执行俩次scanf与题意不符 本帖最后由 肖-肖 于 2021-4-17 15:36 编辑
生姜ZYX 发表于 2021-4-17 15:18
请问那样写为什么不对呢
你把A这个字符给了变量t
但是你没有定义字符型的变量:t
你定义的是字符型的grade
所以用grade接收是可以的
用t接收它是找不到这个变量t的,所以报错
然后你又在if括号内加了scanf所以会让用户输入两次
这不是你想的结果
所以直接用flag接收就能解决了
肖-肖 发表于 2021-4-17 15:33
你把A这个字符给了变量t
但是你没有定义字符型的变量:t
你定义的是字符型的grade
可是改成grade还是不对啊{:10_243:} wp231957 发表于 2021-4-17 15:29
你那样写不是要执行俩次scanf与题意不符
噢噢,懂了,谢谢{:10_323:} 生姜ZYX 发表于 2021-4-17 15:36
可是改成grade还是不对啊
然后你又在if括号内加了scanf所以会让用户输入两次
这不是你想的结果
所以直接用flag接收就能解决了
如下:
int flag = scanf("%d",&score);
if (score< 0 ||score > 100 || flag != 1) printf("Input error!\n"); 肖-肖 发表于 2021-4-17 15:39
然后你又在if括号内加了scanf所以会让用户输入两次
这不是你想的结果
所以直接用flag接收就能解决了
谢谢,懂了{:10_278:} 生姜ZYX 发表于 2021-4-17 15:39
谢谢,懂了
嗯嗯 懂了就行了
页:
[1]