C++小程序 if函数

来源:百度知道 编辑:UC知道 时间:2024/06/07 19:20:13
我的程序如下
#include<stdio.h>
#define N 1
struct student{
int num;
char name[20];
int score;
char grade;
};
int set_grade(struct student *p);

int main(void)
{
struct student stu[N],*ptr;
int i,count;
ptr=stu;
printf("输入学生的学号,姓名,等级:\n");
for(i=0;i<N;i++)
{
printf("No %d:",i+1);
scanf("%d%s%c",&stu[i].num,stu[i].name,&stu[i].grade);

}
count=set_grade(ptr);
printf("等级为A:%d\n",count);
printf("学生成绩:\n");
for(i=0;i<N;i++)
printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].score);
return 0;
}

int set_grade(struct student *p)
{
int i,n=0;
for(i=0;i<N;i++,p++)
{
if(p->grade=='A')
{
p->score=85;
n++;}
else if(p->grade=='B')
p

给输入地方的代码改成:
printf("输入学生的学号,姓名,等级:\n");
for(i=0;i<N;i++)
{
printf("No %d:",i+1);
scanf("%d",&stu[i].num);
getchar();
gets(stu[i].name);
stu[i].grade=getchar();

}
这个输入是要回车进行输入的。。。
只是提供错误原因。

问题主要出现在你输入的时候
%s接受了名字和等级(A)
而那个grade应该接受了回车。

你的错误出在输入的形式上,我给你改了
for(i=0;i<N;i++)
{
printf("No %d:\n",i+1);
scanf("%d %s %c",&stu[i].num,stu[i].name,&stu[i].grade);

}
就这么简单

参考:
#include<stdio.h>
#include<iostream>
#define N 1
struct student{
int num;
char name[20];
char grade;
int score;
};
int set_grade(struct student *p);
int main()
{
struct student stu[N],*ptr;
int i,count;
printf("输入学生的学号,姓名,等级:\n");
for(i=0;i<N;i++)
{
ptr=&stu[0];
printf("No