信息科学与技术学院
课程设计报告
—学年第一学期
课程名称:C语言课程设计上机
设计题目:院职工工资管理系统
学 号:__________________
姓 名:__________________
专业班级:__________________
指导老师:__________________
____月____日
基础任务
学生成绩排名
用指针优化学生成绩排名
任务要求
1.学生成绩排名
定义一个数组a[11],用以存放学生的成绩。
从键盘输入10个学生成绩
采用冒泡法,将学生成绩按照从高到低进行排序
再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组
将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求
2. 用指针优化学生成绩排名
定义数组stu[10]存放10个学生的成绩,从键盘输入数据,用指针实现
将数组stu[10]的内容输出到屏幕上,要求用指针实现
将成绩数组按照从高到低进行排序,要求用指针实现
将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单
采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)
算法流程图
主要代码
1.学生成绩排名
for(j=0;j
{
for(i=0;i
{
if(a[i]
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
printf("按从高到低排列成绩:\n");
for(i=0;i
printf("%4d",a[i++]);
printf("请再输入一个学生的成绩:\n");
scanf("%d",&number);
printf("第%d个学生的成绩是:%d\n",N+1,number);//宏定义用得好!
end=a[N-1];//插入一个新数据按原顺序排列 是难点!
if(number
else
for(i=0;i
{
if(number>a[i])
{
t=a[i];
a[i]=number;
for(j=i+1;j
{
t1=a[j];//关键是要引入两个临时变量
a[j]=t;
t=t1;
}
break;
}
}
printf("插入后成绩排序是:\n");
for(i=0;i
printf("%4d",a[i]);
指针优化后的学生成绩排名
#include
#include
#define NULL 0
#define N 10
int main ()
{
void sort(int *p,int n);
void sort2(int *p,int n);
void inv(int *p,int n);
void copy_string(char *,char *);
int stu[N];
int *p=stu;
int i;
char a[20],b[20],c[20];
char *p1=a,*p2=b,*p3=c;
printf("请输入%d个学生的成绩:\n",N);
for(i=0;i
scanf("%d",p++);
printf("这%d个学生的成绩是:\n",N);
for(p=stu,i=0;i
printf("%4d",*p++);
printf("\n");
printf("从高到低排序:\n");
p=stu;//指针复位,一定不能漏!
sort(p,N);
for(i=0;i
printf("%4d",*p++);
printf("\n");
printf("逆序存放且输出:\n");
p=stu;//指针复位,一定不能漏!
inv(p,N);
for(i=0;i
printf("%4d",*p++);
printf("\n");
printf("realize the copy_string\n");//字符串输入和复制
p