转运符图片:switch语句错在哪了?

来源:百度文库 编辑:高考问答 时间:2024/04/29 16:58:16
#include <stdio.h>
main()
{
char grade;
scanf("%c",grade);
switch(grade)
{
case 'a':printf("85~100\n"); break;
case 'b':printf("70~84\n"); break;
case 'c':printf("60~69\n"); break;
case 'd':printf("<60\n"); break;
default :printf("error\n");
}
getch();
}

scanf("%c",&grade);

好象没问题,提示的错误是什么?

#include <stdio.h>
#include<conio.h>
#include<string.h>
void main()
{

char grade;
scanf("%c",&grade);
switch(grade)
{
case 'a':printf("85~100\n"); break;
case 'b':printf("70~84\n"); break;
case 'c':printf("60~69\n"); break;
case 'd':printf("<60\n"); break;
default :printf("error\n");
}
getch();

}
注意这句scanf("%c",&grade);

scanf("%c",&grade);

scanf函数的参数是一个地址的,如果你直接给grade 的话,由于grade 里面是一个乱数字,可能涉及到系统地址,导致错误。用&grade取他的地址后就好了,这个地址是系统给你分配的一个可用的地址。用于存储这个变量的