第一题标准做法
#include<stdio.h>
#include<stdlib.h>
typedef struct _tagStudent
{
int id;
char name[9];
float score;
}Student;
Student* getinfo(int count)
{
int i;
Student *student=NULL;
student=(Student*)malloc(count*sizeof(Student));
if(NULL==student)
{
printf("获取学生信息失败!\n");
exit(0);
}
printf("请输入%d个学生的学号,姓名,成绩,用空格分割!\n",count);
for(i=0;i<count;i++)
scanf("%d %s %f",&student[i].id,student[i].name,&student[i].score);
return student;
};
void clearinfo(Student *student)
{
if(NULL==student)
return ;
free(student);
student=NULL;
}
Student maxscore(Student *student,int count)
{
int i;
Student maxstu=student[0];
Student temp={0,"",0.0};
if(NULL==student)
{
return temp;
}
for(i=0;i<count;i++)
if(maxstu.score<student[i].score)
maxstu=student[i];
return maxstu;
};
float avrgscore(Student *student,int count)
{
int i;
float avrg=0.0;
if(NULL==student)
return 0.0;
for(i=0;i<count;i++)
avrg+=student[i].score;
return avrg/(float)count;
};
int main()
{
Student *stu=NULL,maxstu;
int count=10;
stu=getinfo(count);
maxstu=maxscore(stu,count);
printf("%d个学生中,最高分学生的学号是:%d,姓名是:%s,成绩是:%3.1f\n",
count,maxstu.id,maxstu.name,maxstu.score);
printf("%d个学生的平均成绩是%.1f\n",count,avrgscore(stu,count));
clearinfo(stu);
return 0;
}
偷懒做法
#include<stdio.h>
typedef struct _tagStudent
{
int id;
char name[9];
float score;
}Student;
int main()
{
Student student[10],maxstu;
float avrg=0.0;
int i;
printf("请输入10个学生的学号,姓名,成绩,用空格分割!\n");
for(i=0;i<10;i++)
scanf("%d %s %f",&student[i].id,student[i].name,&student[i].score);
maxstu=student[0];
for(i=0;i<10;i++)
if(maxstu.score<student[i].score)
maxstu=student[i];
for(i=0;i<10;i++)
avrg+=student[i].score;
avrg/=10.0;
printf("10个学生中,最高分学生的学号是:%d,姓名是:%s,成绩是:%3.1f\n",
maxstu.id,maxstu.name,maxstu.score);
printf("10个学生的平均成绩是%.1f\n",avrg);
return 0;
}
第二题
#include<stdio.h>
#include<stdlib.h>
int isPerfectnumber(int num)
{
int i,sum;
sum=0;
for(i=1;i<num;i++)
{
if(num%i==0)
sum+=i;
}
if(sum==num)
return 1;
else
return 0;
}
int main()
{
int n,i;
FILE *fp;
printf("请输入正整数n: ");
scanf("%d",&n);
if(n<6)
printf("输入非法!\n");
else
{
fp=fopen("d:\\result.txt","w");
for(i=1;i<=n;i++)
if(isPerfectnumber(i))
fprintf(fp,"%d\n",i);
fclose(fp);
}
}