c语言练习题2
来源:互联网 发布:c语言实现银行家算法 编辑:程序博客网 时间:2024/04/28 18:43
1、将学生成绩存储在数组中,并用函数调用的形式实现学生成绩的输入与输出、求最高分、最低分、平均分、排序
#include<stdio.h>
#define NUM 10
//输入学生成绩
void arrayinput(int * array,int count)
{
int i;
printf("输出成绩:\n")
for (i=0;i<count;i++)
{
printf("请输入第%d个学生的成绩:",i+1);
scanf("%d",array++);
}
}
//求最高分
int arrayMax(int * array,int count )
{
int i;
int max=*array;
for(i=1;i<count;i++)
{
if(max<*(++array))
max=*array;
}
return max;
}
//求最低分
int arrayMin(int * array,int count)
{
int i;
int min=*array;
for(i=1;i<count;i++)
{
if(min>*(++array))
min=*array;
}
return min;
}
//求平均分
float averscore(int array[],int count)
{
int i;
int sum=0;
for(i=0;i<count;i++)
sum+=array[i];
return sum/count;
}
//排序
void arraySort(int array[],int count,int order) //order为0是降序排列,为1是升序排列
{
if (order)
{
for (int i=0; i<count-1; i++) {
for(int j=i+1;j<count;j++)
{
if(*(array+i)>*(array+j))
{
int t=*(array+i);
*(array+i)=*(array+j);
*(array+j)=t;
}
}
}
}
else //降序排列
{
for (int i=0; i<count-1; i++)
{
for(int j=i+1;j<count;j++)
{
if(*(array+i)<*(array+j))
{
int t=*(array+i);
*(array+i)=*(array+j);
*(array+j)=t;
}
}
}
}
}
//输出成绩
void arrayprint(int * array,int count)
{
int i;
for(i=0;i<count;i++)
printf("%d\n",array[i]);
}
int main(int argc,const char * argv[])
{
int score[NUM];
arrayinput(score,NUM);
arrayprint(score,NUM);
printf("10个成绩中最高分是%d\n",arrayMax(score,NUM));
printf("10个成绩中最低分是%d\n",arrayMin(score,NUM));
printf("平均成绩是%f\n",averscore(score,NUM));
arraySort(score,NUM,1);
printf("\n从大到小排序为:\n");
arrayprint(score,NUM);
return 0;
}
2、实现学生信息的结构体定义
姓名
学号
年龄
成绩
定义10名学生的信息,
通过控制台录入这10名学生信息,求
这10名学生中的最高分的姓名和分数, 最低分的姓名和分数,平均分。(提示:结构指针)
#include<stdio.h>
#include<string.h>
#define NUM 10
typedef struct _Student{
char name[20];
int number;
int age;
int score;
}student;
void maxscore(student st[],int count ) //求最高分
{
int i;
student *pstu=st;
int max=pstu->score;
student *head;
for(i=0;i<count;i++)
{
if(max<=(pstu->score))
{
max=pstu->score;
head=pstu;
}
pstu++;
}
printf("最高分学生的姓名是:%s,分数为:%d\n",head->name,head->score);
}
void minscore(student st[],int count )//求最低分
{
int i;
student *pstu=st;
int min=pstu->score;
student *head;
for(i=0;i<count;i++)
{
if(min>=(pstu->score))
{
min=pstu->score;
head=pstu;
}
pstu++;
}
printf("最低分学生的姓名是:%s,分数为:%d\n",head->name,head->score);
}
int averscore(student st[],int count)//求平均分
{
int i;
int sum=0;
for(i=0;i<count;i++)
sum+=st[i].score;
return sum/count;
}
int main(int argc,const char *argv[])
{
student stu[NUM];
student *pstu;
int i;
printf("请输入学生信息:\n");
for(i=0;i<NUM;i++)
{
printf ("请输入第%d个学生姓名 学号 年龄 成绩:\n",i+1);
scanf ("%s %d %d %d",stu[i].name,&stu[i].number,&stu[i].age,&stu[i].score);
}
pstu=stu;
for(i=0;i<NUM;i++)
{
printf("学生姓名:%-10s 学号:%-4d 年龄:%-4d 成绩:%-4d\n",stu[i].name,stu[i].number,stu[i].age,stu[i].score);
}
maxscore(stu,NUM);
minscore(stu,NUM);
printf("平均成绩是:%d\n",averscore(stu,NUM));
return 0;
}
- c语言练习题2
- C语言练习题(2)
- c语言练习题2
- C语言练习题2
- C语言基础练习题及代码2
- c语言练习题 2-1 正整数打印
- c语言练习题 2-5 反弹
- c语言练习题 4-2 矩阵运算
- Objective-c语言_数组练习题2:
- c语言练习题——基础2
- C语言位运算练习题2
- C 语言练习题
- c语言循环练习题
- C语言程序练习题
- c语言练习题
- c语言练习题1
- c语言练习题3
- c语言练习题
- Linux tcpdump命令详解
- 关系数据库中的几个范式
- 几个ZigBee协议栈和操作系统
- linux 磁盘空间不足,挂载盘
- 派生中的构造与析构的执行顺序
- c语言练习题2
- 心智的成长之路
- mysql的用户管理(二)
- mybatis动态SQL语句
- Calendar Game
- JavaScript中location对象的属性总结
- 适用于Java程序员的通信顺序进程
- arcgis之切割合并操作
- WSN/Zigbee开源协议栈