我是一名C语言的初学者,想请教大家一个题目。
问题是这样的1个班有50个同学 共有5门功课
语文,数学,物理,化学,外语。
现在有两个问题
请问用怎样快捷简明的方法用键盘输入一个学生姓名,系统就显示他的5门成绩。用结构体类型吗?
第二个问题,怎样手动随意输入两位学生进行单门的成绩比较并且输出成绩好的人姓名呢?这个完全摸不着边。
谢谢。希望大家提供一下思路,或者给我做出一小部分我自己参考研习。
请教一个C语言编程构思
答案:3 悬赏:20 手机版
解决时间 2021-01-25 16:12
- 提问者网友:温柔港
- 2021-01-25 13:08
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-01-25 13:15
用结构体数组。
结构体应该包含6个数据,姓名和5门功课的成绩。
姓名的数据类型应该是字符串,其他的都用整型。
这里给你一个简单的例子,里面包含了结构体的定义和简单应用:
#include
void main()
{
struct student
{
char *name;
int yuwen,shuxue,wuli,huaxue,waiyu;
};
student students[50];
students[0].name="sss";
students[0].yuwen=40;
students[0].shuxue=60;
students[0].wuli=50;
students[0].huaxue=90;
students[0].waiyu=10;
printf("%s %d %d %d %d %d\n",students[0].name,
students[0].yuwen,
students[0].shuxue,
students[0].wuli,
students[0].huaxue,
students[0].waiyu);
}
你可以在程序中输入所有学生的数据,也可以在运行时输入。这种程序最好使用数据库,50个学生的数据输入太麻烦了,建议你改成5个学生,道理是一样的。~~~~~
对于第一问,等你数据输入完以后,想显示某位同学的信息的话,先顺序比对一下数组中有没有该同学的名字
for(n=0;n<=4;n++)
{
if(students[n].name=="你输入的名字")break;
}//执行完以后n就是该同学的编号。
然后输出相关信息即可。
但是这里还存在一个多个同学重名的问题,要注意一下。
对于第2问,可以用第一问的方法获得两个同学的信息,然后
if(students[n].某科成绩>=students[m].某科成绩)
{printf(students[n].name);}
else
{students[m].name;}
我只是说明了一下自己的思路,里面的代码都是伪代码,希望对你有所帮助^^
结构体应该包含6个数据,姓名和5门功课的成绩。
姓名的数据类型应该是字符串,其他的都用整型。
这里给你一个简单的例子,里面包含了结构体的定义和简单应用:
#include
void main()
{
struct student
{
char *name;
int yuwen,shuxue,wuli,huaxue,waiyu;
};
student students[50];
students[0].name="sss";
students[0].yuwen=40;
students[0].shuxue=60;
students[0].wuli=50;
students[0].huaxue=90;
students[0].waiyu=10;
printf("%s %d %d %d %d %d\n",students[0].name,
students[0].yuwen,
students[0].shuxue,
students[0].wuli,
students[0].huaxue,
students[0].waiyu);
}
你可以在程序中输入所有学生的数据,也可以在运行时输入。这种程序最好使用数据库,50个学生的数据输入太麻烦了,建议你改成5个学生,道理是一样的。~~~~~
对于第一问,等你数据输入完以后,想显示某位同学的信息的话,先顺序比对一下数组中有没有该同学的名字
for(n=0;n<=4;n++)
{
if(students[n].name=="你输入的名字")break;
}//执行完以后n就是该同学的编号。
然后输出相关信息即可。
但是这里还存在一个多个同学重名的问题,要注意一下。
对于第2问,可以用第一问的方法获得两个同学的信息,然后
if(students[n].某科成绩>=students[m].某科成绩)
{printf(students[n].name);}
else
{students[m].name;}
我只是说明了一下自己的思路,里面的代码都是伪代码,希望对你有所帮助^^
全部回答
- 1楼网友:青尢
- 2021-01-25 14:45
源程序如下:
#include<stdio.h> int mat[10][10]; void main() { int n,i,j; int ok=1; scanf("%d",&n); for(i=0;i<n;++i) for(j=0;j<n;++j) scanf("%d",&mat[i][j]); for(i=1;i<n;++i) { for(j=0;j<i;++j) if(mat[i][j]!=0) ok=0; } printf("%s\n",ok?"yes":"no"); }
- 2楼网友:煞尾
- 2021-01-25 13:24
第一个问题:是用结构体.
struct stu
{char name[10];
int ch;
int math;
int phy;
int che;
int eng;
};
第二个问题.先输入两个学生的名字,然后去结构体数组里面找到name为这两个名字的结构体,假设为a[i],aj];
然后比较,如if (a[i].ch>a[j]) printf("%c 's ch is better",a[i].name);
大概就是这样,自己再好好琢磨下吧.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯