读书人

新手请问有关问题

发布时间: 2012-05-28 17:59:33 作者: rapoo

新手请教问题
输入学生的学号、姓名、成绩,统计不及格人数、按成绩排序、按学号检索学生信息。其中排序用自定义函数完成。
各种不会,同学们帮忙改一下啊。
#include<stdio.h>
#define N 10
struct k
struct q
struct student//定义结构体类型
{
long number;
char xingming[3];
float chengji;
};
/*void paixu (struct a[N], int i,int j,struct k) 这里是排序的函数,但是函数学的很烂,完全不对,求修改。
{
for(i=0;i<=N-2;i++)
for(j=0;j<=N-2-i;j++)
if(a[j].chengji>=a[j+1].chengji)
{k=a[j];a[j]=a[j+1];a[j+1]=k;}
}*/
void main()
{
int s,t=-1,m=0,n,r;
long xuehao;
struct student stu[N];//定义结构体数组
printf("请按以下格式输入 %d 个学生的信息\n",N);
printf("number xingming chengji\n");
for(s=0;s<N;s++)//为结构体元素赋值
{
printf("请输入第 %d 个学生的信息:\n",s+1);
scanf("%ld%s%f",&stu[s].number,&stu[s].xingming,&stu[s].chengji);
}
for(n=1;n<=N;n++)//统计不及格人数 这里也有问题,统计出的人数总是比实际多一个,不知道什么情况。
if(stu[n].chengji<60)m++;//这里有问题,为什么总是多一个?
printf("不及格人数为:%d人\n",m);
printf("请输入要检索的学生的学号:\n");
scanf("%ld",&xuehao);
for(s=0;s<N;s++)//检索所需数据
if(xuehao==stu[s].number)
{t=s;
break;
}
if(t!=-1)//输出检索结果
printf("%ld %s %f\n",stu[t].number,stu[t].xingming,stu[t].chengji);
else
printf("检索的学生不存在!\n");

/*paixu(struct stu,int r,int p,struct q) 按成绩排序的函数调用,应该完全不对吧,需要修改。。。
printf("%ld %s %f\n",stu[r].number,stu[r].xingming,stu[r].chengji);*/
}

[解决办法]

C/C++ code
#include<stdio.h>#define N 5 struct student//定义结构体类型 {     long number;     char xingming[10];     float chengji; }; void paixu (struct student a[N])// 这里是排序的函数,但是函数学的很烂,完全不对,求修改。 {       struct student k;     int i,j;    for(i=0;i<=N-2;i++)        for(j=0;j<=N-2-i;j++)            if(a[j].chengji>=a[j+1].chengji)            {                k=a[j];a[j]=a[j+1];a[j+1]=k;            } } void main() {        int s,t=-1,m=0,n,r;     long xuehao;     struct student stu[N];//定义结构体数组     printf("请按以下格式输入 %d 个学生的信息\n",N);     printf("number xingming chengji\n");     for(s=0;s<N;s++)//为结构体元素赋值     {         printf("请输入第 %d 个学生的信息:\n",s+1);         scanf("%ld%s%f",&stu[s].number,&stu[s].xingming,&stu[s].chengji);     }     for(n=0;n<N;n++)//统计不及格人数 这里也有问题,统计出的人数总是比实际多一个,不知道什么情况。         if(stu[n].chengji<60)m++;//这里有问题,为什么总是多一个?     printf("不及格人数为:%d人\n",m);     printf("请输入要检索的学生的学号:\n");     scanf("%ld",&xuehao);     for(s=0;s<N;s++)//检索所需数据         if(xuehao==stu[s].number)         {             t=s;             break;         }     if(t!=-1)//输出检索结果         printf("%ld %s %f\n",stu[t].number,stu[t].xingming,stu[t].chengji);     else         printf("检索的学生不存在!\n");     paixu(stu); //按成绩排序的函数调用,应该完全不对吧,需要修改。。。     for(s=0;s<N;s++)         printf("%ld %s %f\n",stu[s].number,stu[s].xingming,stu[s].chengji); } 

读书人网 >C语言

热点推荐