调用没有返回值的函数,怎么调用?
#include<stdio.h>structstudent{intnum;charname[10];intscore;chargrade;};structstudent...
#include<stdio.h>
struct student{
int num;
char name[10];
int score;
char grade;
};
struct student stu[10];
struct student *p;
void set_grade();
int main(void)
{
struct student stu[10];
int i,fail=0;
for( i=0;i<10;i++)
{
printf("请输入学号,姓名,成绩:");
scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].score);
printf("%d\t%s\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].score,p->grade);//在这个地方,我想输出第i个grade,怎么改?
}
for(i=0;i<10;i++)
if(stu[i].score<60)
fail++;
printf("%d",fail);
return 0;
}
void set_grade()
{
if(p->score<=59)
p->grade='D';
if(p->score>=60&&p->score<=69)
p->grade='C';
if(p->score>=70&&p->score<=84)
p->grade='B';
if(p->score>=85&&p->score<=100)
p->grade='A';
} 展开
struct student{
int num;
char name[10];
int score;
char grade;
};
struct student stu[10];
struct student *p;
void set_grade();
int main(void)
{
struct student stu[10];
int i,fail=0;
for( i=0;i<10;i++)
{
printf("请输入学号,姓名,成绩:");
scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].score);
printf("%d\t%s\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].score,p->grade);//在这个地方,我想输出第i个grade,怎么改?
}
for(i=0;i<10;i++)
if(stu[i].score<60)
fail++;
printf("%d",fail);
return 0;
}
void set_grade()
{
if(p->score<=59)
p->grade='D';
if(p->score>=60&&p->score<=69)
p->grade='C';
if(p->score>=70&&p->score<=84)
p->grade='B';
if(p->score>=85&&p->score<=100)
p->grade='A';
} 展开
1个回答
展开全部
与函数结果传递,(1)可以通过全局量,(2)可以通过函数实参与形参,(3)可以通过函数返回。
按你写的函数,无法传递。
解决办法:可以添加形参,通过函数实参与形参传递。
做法:
void set_grade(struct student *p); 函数原型声明。
void set_grade(struct student *p){...} 函数定义。
函数调用,插在输入语句以后,打印语句以前。
set_grade(&stu[i]);
结果在 stu[i].grade 里面。打印 stu[i].grade
按你写的函数,无法传递。
解决办法:可以添加形参,通过函数实参与形参传递。
做法:
void set_grade(struct student *p); 函数原型声明。
void set_grade(struct student *p){...} 函数定义。
函数调用,插在输入语句以后,打印语句以前。
set_grade(&stu[i]);
结果在 stu[i].grade 里面。打印 stu[i].grade
追问
不行啊。。改完了之后,没有错误,但是运行不起来,还是有错的。
追答
错误信息是什么?是不是其它地方有错,例如,输入数据是否有错。
我只给你解决 “没有返回值的函数,怎么调用”问题。
set_grade(&stu[i]); printf("%c\n", stu[i].grade); //看看打印什么。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询