我的《C语言程序设计》综合实习报告封面及正文格式
- 格式:doc
- 大小:46.00 KB
- 文档页数:8
《C语言程序设计》
综合实习报告
学号0918420
姓名
班级
指导教师
安徽工业大学工商学院
2010年6 月
课题二:用指针优化学生成绩排名
一、目的
1.熟悉变量的指针和指向变量的的指针变量的概念和使用.
2.熟悉数组的指针和指向数组的的指针变量的概念和使用.
二、实习环境
个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境
三、实习内容、步骤与要求
1.定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现
2.将数组stu[10]的内容输出到屏幕上,要求用指针实现
3.将成绩数组按照从高到低进行排序,要求用指针实现
4.将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单
5.采用指针方法,输入字符串“student score ”,复制该字符串并输出(复、制字符串采用库函数或用户自定义函数)
四、程序算法及运行结果
#include <stdio.h>
compare(stu)
{
int i,j,k;
int *a;
a=stu;
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(*(a+i)<*(a+j))
{
k=*(a+j);*(a+j)=*(a+i);*(a+i)=k; }
for(i=0;i<10;i++)
printf("%d\t",*(a+i));
}
main()
{
int i,stu[10],*p;
char *s1,*s2;
s2="student score:";
s1=s2;
p=stu;
printf("Please input 10 numbers:"); for(i=0;i<10;i++)
scanf("%d",p+i);
puts(s1);
for(i=0;i<10;i++)
printf("%d\t",*(p+i));
printf("the sorted score:");
compare(stu);
getch();
}
五、知识点、难点及解决办法。
知识点:变量的指针、指针变量的概念、数组指针。
难点:如何定义指针使其指向变量以及数组。
解决办法:正确理解变量指针和数组指针,从概念入手,了解如何运用指针。
六、编程小结或体会。
小结和体会:学习C语言和运用C语言是两码事!把C语言知识点了解清楚是第一步,正确运用才是必要的!通过此次的编程练习,我知道编程不简单!不过,也不难。
只要发现了问题,解决了就行了!没难的!编程不是一次两次就行的。
是长期的练习,实际动手去编你才会的!编程是一个长期的过程!
课题三:学生成绩单制作
一、目的
1.掌握结构体变量及数组的定义、赋值、初始化、输入、输出
2.结构体数组的操作。
二、实习环境
个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境
三、实习内容、步骤与要求
1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩
2.从键盘输入10个学生的以上内容
3.输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩
4.输出三门课程的平均分数最高的学生的学号、姓名及其平均分
5.将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:
number name math Chinese English average
103 tom 90 90 100 95
101 alice 90 80 70 80
四、程序算法及运行结果
#include <stdio.h>
int max_Math,max_English,max_Chinese,max_aver;
int i,j,k,t;
float aver[10];
struct student {
int number;
char name[20];
float Math;
float Chinese;
float English;}
stu[10],s;
void main()
{
printf("Pleaese input students' information:\n");
for(i=0;i<10;i++)
{
scanf("%d%s%f%f%f",&(stu[i].number),&(stu[i].name),&(stu[i].Math),&( stu[i].Chinese),&(stu[i].English));
}
max_Math=stu[0].Math;
max_English=stu[0].English;
max_Chinese=stu[0].Chinese;
for(i=0;i<10;i++)
if(max_Math<stu[i].Math) max_Math=stu[i].Math;
for(i=0;i<10;i++)
{
if(max_Math==stu[i].Math)
printf("Math\t%d\t%s\t%0.1f\n",stu[i].number,stu[i].name,stu[i].Math );
}
for(i=0;i<10;i++)
if(max_Chinese<stu[i].Chinese)max_Chinese=stu[i].Chinese;
for(i=0;i<10;i++)
{
if(max_Chinese==stu[i].Chinese)
printf("Chinese\t%d\t%s\t%0.1f\n",stu[i].number,stu[i].name,stu[i].C hinese);
}
for(i=0;i<10;i++)
if(max_English<stu[i].English)max_English=stu[i].English;
for(i=0;i<10;i++)
{
if(max_English==stu[i].English)
printf("English\t%d\t%s\t%0.1f\n",stu[i].number,stu[i].name,stu[i].E nglish);
}
for(i=0;i<10;i++)
aver[i]=(stu[i].Math+stu[i].Chinese+stu[i].English)/3;
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(aver[k]<aver[j])
{
k=j;
t=aver[k];
aver[k]=aver[i];
aver[i]=t;
s=stu[k];
stu[k]=stu[i];
stu[i]=s;
}
}
printf("number\tname\tMath\tChinese\tEnglish\taver\n");
for(i=0;i<10;i++)
printf("%-9d%-9s%-9.1f%-9.1f%-9.1f%-9.1f\n",stu[i].number,stu[i].nam e,stu[i].Math,stu[i].Chinese,stu[i].English,aver[i]);
getch();
}
五、知识点、难点及解决办法。
知识点:结构体变量、数组以及结构体数组。
难点:结构体数组的定义等操作。
解决办法:了解数组的定义、赋值、初始化、输入和输出,正确运用!~
六、编程小结或体会。
觉得编程很不容易,但也发现也很有乐趣!当你完成一个程序,当它运行结果正确,你会很高兴的!这就是编程的乐趣!
正确理解知识点是编程的前提,很重要!。