C语言:结构程序设计 的一点简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 12:57:15
1.【编写程序】:设计一个保存学生信息的结构,学生信息包括学号、姓名、年龄。输入n个学生的信息,要求计算并输出学生的平均年龄及年龄最大的学生信息。

2.【编写程序】:从键盘输入n(n<10)本书的名称和单价并存入结构数组中,按照单价从高到低的顺序进行排序并输出。
要求:①编写函数实现排序过程;
②在主函数中输入数据,调用排序函数排序后返回主函数输出排序结果。
这是我们的实验课的内容,我们刚学习了struct结构,还有些地方不是很懂,例如第一题,学生人数n是一个不确定数,要求我们自己输入输出。我编的第一道题的源程序是:
#include<stdio.h>
#define N 4//可改
struct student{
int num;
char name[20];
int age;
};
int max_age(struct student age);

int main(void)
{
int i,j,sumage=0,index,maxage;
struct student stu[N];

printf("Please input the information of the student:\n(include

number,name and age)\n");
for(i=0;i<N;i++){
printf("NO.%d:",i+1);
scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].age);
sumage+=stu[i].age;
}

for(i=0;i<N-1;i++){
index=i;
for(j=i+1;j<N;j++)
if(stu[j].age>stu[index].age)
index=j;<

new是C++的关键字,C语言里不能用的。C语言动态内存分配用malloc,如下:
int n;
struct student *stu;
printf("Input n:\n");
scanf("%d",&n);
stu=(struct student *)malloc(sizeof(struct student)*n);
......
/*最后别忘了释放内存*/
free(stu);
自己的程序自己改,多练习才有提高!
至于调用排序子函数,你需要自己写一个。

不使用#define N 人数 在主函数中提示输入输出n,应该怎么使用语句?

答:使用动态内存分配
int n;
student *pstu;
...
pstu= new student[n];
for(i=0;i<n;i++)
pstu[i]=....