C中的放坡点
这是我的代码,一切正常,但当我输入字母表而不是数字时,它显示A-。 我只是想知道为什么会这样。为什么它只显示了一个-。有人能解释为什么会这样吗C中的放坡点,c,C,这是我的代码,一切正常,但当我输入字母表而不是数字时,它显示A-。 我只是想知道为什么会这样。为什么它只显示了一个-。有人能解释为什么会这样吗 #include<stdio.h> int main(){ int num; printf("Enter Your number "); scanf("%d" ,& num); if(num>79) { printf("Congratulation you got A+"); } else if(num&
#include<stdio.h>
int main(){
int num;
printf("Enter Your number ");
scanf("%d" ,& num);
if(num>79)
{
printf("Congratulation you got A+");
}
else if(num>69)
{
printf("Congratulation you got A ");
}
else if(num>59)
{
printf("Congratulation you got A-");
}
else if(num>49)
{
printf("Congratulation you got B");
}
else if(num>39)
{
printf("Congratulation you got C");
}
else if(num>32)
{
printf("Congratulation you got D");
}
else
{
printf("You are a student like me(Shuvo) \nBetter Luck next time");
}
return 0 ;
}
#包括
int main(){
int-num;
printf(“输入您的号码”);
scanf(“%d”和&num);
如果(数值>79)
{
printf(“祝贺你得了A+”;
}
否则,如果(数值>69)
{
printf(“祝贺你得了A”);
}
否则,如果(数值>59)
{
printf(“祝贺你得了A-”;
}
如果(数量>49),则为else
{
printf(“祝贺你得了B”);
}
如果(数量>39),则为else
{
printf(“祝贺您获得C”);
}
如果(数量>32),则为else
{
printf(“祝贺你获得D”);
}
其他的
{
printf(“你是像我一样的学生(Shuvo)\n祝你下次好运”);
}
返回0;
}
在使用变量num之前将其初始化为。我的意思是将行“int num;”替换为“int num=0;”。这是我的解决办法
#include <stdio.h>
int main(){
int num = 0;
printf("Enter Your number ");
scanf("%d", &num);
if (num > 79)
{
printf("Congratulation you got A+");
}
else if (num > 69)
{
printf("Congratulation you got A ");
}
else if (num > 59)
{
printf("Congratulation you got A-");
}
else if (num > 49)
{
printf("Congratulation you got B");
}
else if (num > 39)
{
printf("Congratulation you got C");
}
else if (num > 32)
{
printf("Congratulation you got D");
}
else
{
printf("You are a student like me(Shuvo) \nBetter Luck next time");
}
return 0;
}
#包括
int main(){
int num=0;
printf(“输入您的号码”);
scanf(“%d”和&num);
如果(数值>79)
{
printf(“祝贺你得了A+”;
}
否则,如果(数值>69)
{
printf(“祝贺你得了A”);
}
否则,如果(数值>59)
{
printf(“祝贺你得了A-”;
}
如果(数量>49),则为else
{
printf(“祝贺你得了B”);
}
如果(数量>39),则为else
{
printf(“祝贺您获得C”);
}
如果(数量>32),则为else
{
printf(“祝贺你获得D”);
}
其他的
{
printf(“你是像我一样的学生(Shuvo)\n祝你下次好运”);
}
返回0;
}
如果数据与格式说明符不匹配,scanf将丢弃输入流中的任何输入
代码中的scanf说明符为%d,丢弃除整数以外的任何字符。要检查scanf()读取的字符数,最好打印scanf()返回数据
整数计数=扫描频率(…) 那么,预期的输入是任意整数,输出是分数注释信息。如果您的输入像字符一样意外,那么您会得到意外的结果,对吗
scanf("%d" ,& num);
scanf中的占位符%d需要整数输入,因此如果您为其提供字符,则它将不会读取任何整数值
要解决此问题,可以添加错误检查语句:
#include<stdio.h>
#include<stdlib.h> /*for exit*/
int main(){
int num;
printf("Enter Your number ");
if(scanf("%d" ,& num) <= 0)
{
printf("Bad input!\n");
exit(1);
}
if(num>79)
{
printf("Congratulation you got A+");
}
else if(num>69)
{
printf("Congratulation you got A ");
}
else if(num>59)
{
printf("Congratulation you got A-");
}
else if(num>49)
{
printf("Congratulation you got B");
}
else if(num>39)
{
printf("Congratulation you got C");
}
else if(num>32)
{
printf("Congratulation you got D");
}
else
{
printf("You are a student like me(Shuvo) \nBetter Luck next time");
}
return 0 ;
}
#包括
#包括/*用于退出*/
int main(){
int-num;
printf(“输入您的号码”);
if(scanf(“%d”,&num)79)
{
printf(“祝贺你得了A+”;
}
否则,如果(数值>69)
{
printf(“祝贺你得了A”);
}
否则,如果(数值>59)
{
printf(“祝贺你得了A-”;
}
如果(数量>49),则为else
{
printf(“祝贺你得了B”);
}
如果(数量>39),则为else
{
printf(“祝贺您获得C”);
}
如果(数量>32),则为else
{
printf(“祝贺你获得D”);
}
其他的
{
printf(“你是像我一样的学生(Shuvo)\n祝你下次好运”);
}
返回0;
}
#包括
#包括
#包括
int main(){
char-str[100],ch;
国际一级,等级[5];
浮动信用[5],gpa=0.0,总信用=0.0;
/*从用户处获取字母等级和学分*/
printf(“每个科目的字母等级和学分:\n”);
对于(i=0;i<5;i++){
printf(“科目%d(学分):”,i+1);
ch=getchar();
等级[i]=ch;
scanf(“%f”、&credit[i]);
getchar();
}
/*打印输入的分数和学分*/
printf(“\n对象|等级|信用\n”);
对于(i=0;i<5;i++){
printf(“%d |%c |%.0f\n”,i+1,等级[i],学分[i]);
}
/*计算gpa值*/
对于(i=0;i<5;i++){
开关(等级[i]){
案例S:
平均成绩=平均成绩+10*学分[i];
总信用=总信用+信用[i];
打破
案例“A”:
gpa=gpa+9*学分[i];
总信用=总信用+信用[i];
打破
案例“B”:
平均成绩=平均成绩+8*学分[i];
总信用=总信用+信用[i];
打破
案例“C”:
平均成绩=平均成绩+7*学分[i];
总信用=总信用+信用[i];
打破
案例“D”:
平均成绩=平均成绩+6*学分[i];
总信用=总信用+信用[i];
打破
案例“E”:
平均成绩=平均成绩+5*学分[i];
总信用=总信用+信用[i];
打破
违约:
printf(“给出的分数错误!!\n”);
出口(0);
}
}
printf(“GPA:%f\t信用证:%f\n”,GPA,totCredit);
gpa=gpa/总积分;
printf(“你成绩的平均成绩:%.2f\n”,平均成绩);
返回0;
}
#包括
内部主(空){
int-num;
printf(“输入您的标记”);
scanf(“%d”和&num);
printf(“您输入了%d”,num);//打印输出
如果(数值>=80){
printf(“你得了分数”);//打印输出
}
else if(num>=60){//注意else与if之间的空格
printf(“你得了B级”);
}
如果(数值>=40),则为else{
printf(“你得了C级”);
}
否则如果(数值<40){
printf(“你这次考试不及格”);
}
返回0;
}
未定义的行为?%d
格式说明符需要一个数字输入。当它发现一个字母字符时停止扫描,该字符保留在输入缓冲区中。您没有初始化int num;
,因此任何事情都可能发生。只有前导空格被丢弃,任何其他非数字字符都会被丢弃
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[100], ch;
int i, grade[5];
float credit[5], gpa = 0.0, totCredit = 0.0;
/* get the letter grade and credits from the user */
printf("Letter Grade and Credits for each subject:\n");
for (i = 0; i < 5; i++) {
printf("Subject %d(Grade|Credit):", i + 1);
ch = getchar();
grade[i] = ch;
scanf("%f", &credit[i]);
getchar();
}
/* print the input grades and credits */
printf("\nSubject | Grade | Credit\n");
for (i = 0; i < 5; i++) {
printf(" %d | %c | %.0f\n", i + 1, grade[i], credit[i]);
}
/* calculate gpa value */
for (i = 0; i < 5; i++) {
switch (grade[i]) {
case 'S':
gpa = gpa + 10 * credit[i];
totCredit = totCredit + credit[i];
break;
case 'A':
gpa = gpa + 9 * credit[i];
totCredit = totCredit + credit[i];
break;
case 'B':
gpa = gpa + 8 * credit[i];
totCredit = totCredit + credit[i];
break;
case 'C':
gpa = gpa + 7 * credit[i];
totCredit = totCredit + credit[i];
break;
case 'D':
gpa = gpa + 6 * credit[i];
totCredit = totCredit + credit[i];
break;
case 'E':
gpa = gpa + 5 * credit[i];
totCredit = totCredit + credit[i];
break;
default:
printf("Given Wrong grade!!\n");
exit(0);
}
}
printf("GPA: %f\tcredit: %f\n", gpa, totCredit);
gpa = gpa / totCredit;
printf("GPA for your score: %.2f\n", gpa);
return 0;
}
#include <stdio.h>
int main(void){
int num;
printf("Enter your mark ");
scanf("%d",&num);
printf(" You entered %d", num); // printing outputs
if(num >= 80){
printf(" You got A grade"); // printing outputs
}
else if ( num >=60){ // Note the space between else & if
printf(" You got B grade");
}
else if ( num >=40){
printf(" You got C grade");
}
else if ( num < 40){
printf(" You Failed in this exam");
}
return 0;
}