与用c语言编写程序,求解?

Galactus_hao 2020-03-06 11:33:27
定义一个结构体数组用以保存5个学生的以下信息:学号、姓名、性别、家庭住址、3门课程成绩。

要求:

1.从键盘输入5个学生的数据。

2.显示5个学生中有一门不及格和所有课程均不及格的人数。

3.检索学号为NUM的学生的3门课程成绩,NUM由键盘输入。
...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chxchxkkk 2020-03-06
  • 打赏
  • 举报
回复
数组名可以不要,这个是数组元素,必须得要。p可以不要&, p[i]必须得要&
自信男孩 2020-03-06
  • 打赏
  • 举报
回复
引用 3 楼 chxchxkkk 的回复:
贴个简单的代码供参考。

#include <stdio.h>
#define STUSIZE 5
struct student
{
int num;
char name[20];
char sex[4];
char homeaddr[50];
float yuwen;
float shuxue;
float waiyu;
};

//输入学生信息
void input_stu(struct student p[])
{
int i;
for (i=0; i<STUSIZE; i++)
{
printf("请输入第%d个学生信息:\n", i+1);
printf("请输入学号:\n");
scanf("%d", &p[i].num);
printf("请输入姓名:\n");
scanf("%s", &p[i].name);
printf("请输入性别:\n");
scanf("%s", &p[i].sex);
printf("请输入住址:\n");
scanf("%s", &p[i].homeaddr);
printf("请输入语文成绩:\n");
scanf("%f", &p[i].yuwen);
printf("请输入数学成绩:\n");
scanf("%f", &p[i].shuxue);
printf("请输入外语成绩:\n");
scanf("%f", &p[i].waiyu);
}
}

//检索学生信息
void findstu(struct student stu[], int num)
{
int i = 0;
for(i=0; i<STUSIZE; i++)
{
if(stu[i].num == num)
{
printf("此学生三门课成绩为:语文%.2f 数学%.2f 外语%.2f\n",stu[i].yuwen,stu[i].shuxue, stu[i].waiyu);
break;
}
else
{
printf("未找到此学生!\n");
}
}
}

//显示不及格学生人数
void showstu(struct student stu[])
{
int i, icount=0, acount=0;
for(i=0; i<STUSIZE; i++)
{
if(stu[i].yuwen < 60 || stu[i].shuxue < 60 || stu[i].waiyu < 60)
{
icount ++;
}
if(stu[i].yuwen < 60 && stu[i].shuxue < 60 && stu[i].waiyu < 60)
{
acount ++;
}
}
printf("有一门不及格的人数是:%d 所有课程都不及格的人数是: %d", icount, acount);
}

int main()
{
int n=0;
struct student stu[STUSIZE] = {0};
input_stu(stu);
printf("请输入要检索的学生学号:\n");
scanf("%d", &n);
findstu(stu, n);
showstu(stu);

return 0;
}



scanf("%s", &p[i].name);
scanf("%s", &p[i].homeaddr);

这两行代码去掉&才对吧。因为数组名就是地址呀
chxchxkkk 2020-03-06
  • 打赏
  • 举报
回复
贴个简单的代码供参考。

#include <stdio.h>
#define STUSIZE 5
struct student
{
int num;
char name[20];
char sex[4];
char homeaddr[50];
float yuwen;
float shuxue;
float waiyu;
};

//输入学生信息
void input_stu(struct student p[])
{
int i;
for (i=0; i<STUSIZE; i++)
{
printf("请输入第%d个学生信息:\n", i+1);
printf("请输入学号:\n");
scanf("%d", &p[i].num);
printf("请输入姓名:\n");
scanf("%s", &p[i].name);
printf("请输入性别:\n");
scanf("%s", &p[i].sex);
printf("请输入住址:\n");
scanf("%s", &p[i].homeaddr);
printf("请输入语文成绩:\n");
scanf("%f", &p[i].yuwen);
printf("请输入数学成绩:\n");
scanf("%f", &p[i].shuxue);
printf("请输入外语成绩:\n");
scanf("%f", &p[i].waiyu);
}
}

//检索学生信息
void findstu(struct student stu[], int num)
{
int i = 0;
for(i=0; i<STUSIZE; i++)
{
if(stu[i].num == num)
{
printf("此学生三门课成绩为:语文%.2f 数学%.2f 外语%.2f\n",stu[i].yuwen,stu[i].shuxue, stu[i].waiyu);
break;
}
else
{
printf("未找到此学生!\n");
}
}
}

//显示不及格学生人数
void showstu(struct student stu[])
{
int i, icount=0, acount=0;
for(i=0; i<STUSIZE; i++)
{
if(stu[i].yuwen < 60 || stu[i].shuxue < 60 || stu[i].waiyu < 60)
{
icount ++;
}
if(stu[i].yuwen < 60 && stu[i].shuxue < 60 && stu[i].waiyu < 60)
{
acount ++;
}
}
printf("有一门不及格的人数是:%d 所有课程都不及格的人数是: %d", icount, acount);
}

int main()
{
int n=0;
struct student stu[STUSIZE] = {0};
input_stu(stu);
printf("请输入要检索的学生学号:\n");
scanf("%d", &n);
findstu(stu, n);
showstu(stu);

return 0;
}

「已注销」 2020-03-06
  • 打赏
  • 举报
回复
这个作业简单也简单,说难也难,估计老师就没讲过键盘输入中的异常情况需求,各种确认以后的更改需求,哈哈. 用键盘太恶心了,能用文本当输入源码
寻开心 2020-03-06
  • 打赏
  • 举报
回复
要想学习,这种题目就自己写,错了的话贴代码提问
要想交作业糊弄老师,就百度源码去吧

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧