C语言实习报告.docx

上传人:b****4 文档编号:27101168 上传时间:2023-06-27 格式:DOCX 页数:27 大小:338.66KB
下载 相关 举报
C语言实习报告.docx_第1页
第1页 / 共27页
C语言实习报告.docx_第2页
第2页 / 共27页
C语言实习报告.docx_第3页
第3页 / 共27页
C语言实习报告.docx_第4页
第4页 / 共27页
C语言实习报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C语言实习报告.docx

《C语言实习报告.docx》由会员分享,可在线阅读,更多相关《C语言实习报告.docx(27页珍藏版)》请在冰豆网上搜索。

C语言实习报告.docx

C语言实习报告

设计报告

一,实验目的:

通过上机实习,熟练掌握循环语句、选择语句、指针以及结构体的运用技巧。

在实习中通过实际操作,编写程序,发现问题,最后解决问题,提升对c语言实用性的理解,在实践中巩固各知识点。

C语言是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点,上机实习可以帮助我们更好地理解这种结构式的中级语言以及其各式各样的数据类型和高效率的运算程序,为我们进一步学习C++打下坚实基础。

同时,在实习过程中,通过互相发现问题,共同解决问题,不仅锻炼了我们的合作能力,而且也让我们发现了一些自己的个人误区以及其他人容易犯的错误,从而在今后的学习中更加谨慎,达到事半功倍的效果;通过询问老师,也让我们养成了不耻下问的好习惯,这将很有利于以后的学习。

闲乐-一个人闲。

不如大家一块儿乐http:

//www.xlw.cc

 

二,总体设计:

1,学生成绩排名

1,流程图:

假?

真?

假?

真?

<通过冒泡法对数组进行排序>

<测试时由于循环语句循环次数的错误导致部分数据没有排序,修改FOR语言中的条件即可调试成功>

 

2,程序:

#include

intmain()

{

inta[11],i,j,t,b,c,temp1,temp2,temp3;//定义一个数组a[11],用以存放学生的成绩

printf("从键盘输入10个学生成绩:

\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);//输入10个学生成绩

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(a[j]

{t=a[j];a[j]=a[j+1];a[j+1]=t;}//采用冒泡法,将学生成绩按照从高到低进行排序

printf("10个学生成绩数组:

\n");

for(i=0;i<10;i++)

printf("%5d",a[i]);

printf("\n");

printf("再输入一个学生的成绩\n");

scanf("%d",&b);//再输入一个学生的成绩

c=a[9];

if(b

a[10]=b;

else

{for(i=0;i<10;i++)

{if(a[i]

{temp1=a[i];a[i]=b;

for(j=i+1;j<11;j++)

{temp2=a[j];a[j]=temp1;temp1=temp2;

}break;

}

}

}

printf("11个学生成绩数组:

\n");//输入11个学生成绩

for(i=0;i<11;i++)

printf("%5d",a[i]);

printf("\n");

for(i=0;i<5;i++)//排好序的成绩单进行反序存放

{

temp3=a[i];

a[i]=a[10-i];

a[10-i]=temp3;

}

printf("排好序的成绩单进行反序存放为:

\n");

for(i=0;i<11;i++)//输出反序存放后的学生成绩数组

printf("%5d",a[i]);

printf("\n");

return0;

}

 

3,运行结果:

 

2,根据条件进行学生成绩排名

1,流程图:

Sort1sort2

假?

 

真?

 

 

Sort3

假?

 

假?

真?

真?

 

2,程序:

#include

voidsort1(inta[10])//定义函数

{inti,j,t;

printf("输入10个学生成绩:

\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);//输入n个学生成绩

for(i=0;i<10;i++)//冒泡法对n个数字排序

for(j=0;j<9-i;j++)

if(a[j]

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

printf("10个学生成绩从高到低排名是:

\n");

for(i=0;i<10;i++)//输出结果

printf("%5d",a[i]);

printf("\n");

}

voidsort2(inta[],intn)//定义函数

{

inti,j,t;

printf("请输入学生个数n:

\n");

scanf("%d",&n);

printf("输入n个学生成绩:

\n");

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

for(j=0;j

if(a[j]

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

printf("n个学生成绩从高到低排名是:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

}

voidsort3(inta[],intn,charstyle)

{charc;getchar(c);

printf("请输入style类型:

aord\n");

style=getchar();

printf("请输入学生个数n:

\n");

scanf("%d",&n);

printf("输入n个学生成绩:

\n");

inti,j,t;

for(i=0;i

scanf("%d",&a[i]);

if(style==97)

{printf("对n个数字升序排列为:

\n");

for(i=0;i

for(j=0;j

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

elseif(style==100)

{printf("对n个数字降序排列为:

\n");

for(i=0;i

for(j=0;j

if(a[j]

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

printf("n个学生成绩排名是:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

}

 

intmain()//主函数

{

{printf("sort1:

\n");//调用sort1函数

inta[10];

sort1(a);}

{printf("sort2:

\n");//调用sort2函数

inta[30000],n;

sort2(a,n);}

{printf("sort3:

\n");//调用sort3函数

inta[30000],n;

charstyle;

sort3(a,n,style);}

return0;

}

<这个程序中输入字符时由于前面的程序的干扰,第一个输入字符语句会直接跳过,所以要另加一个空白的输入字符的语言,从而使程序中输入字符的语句能够正常运行>

<由于数组的长度必须要定义,而且不能用变量定义,鉴于要进行比较的数据量n是一个整形的数,定义数组为一个较长数组即可>

 

3,运行结果:

 

3,用指针优化学生成绩排名

1,流程图:

Sortcopy

main

2,程序:

#include

#include

voidsort(int*p)//定义函数sort

{//将成绩数组按照从高到低进行排序,要求用函数实现

inti,j,t;

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(*(p+j)<*(p+j+1))

{t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;}

}

voidcopy(char*a,char*b)//定义函数copy

{

for(;*a!

='\0';a++,b++)//复制该字符串,用函数实现

{*b=*a;}

*b='\0';

}

intmain()

{

inti,j,t,stu[10],*p;//定义一个数组stu[10]存放10个学生的成绩

p=stu;

printf("请输入10个数据:

\n");

for(i=0;i<10;i++)//从键盘输入数据,用指针实现

scanf("%d",p+i);

printf("数组stu[10]的内容为:

\n");

for(i=0;i<10;i++)//将数组stu[10]的内容输出到屏幕上,用指针实现

printf("%5d",*(p+i));

printf("\n");

for(i=0;i<9;i++)//将成绩数组按照从高到低进行排序,用指针实现

for(j=0;j<9-i;j++)

if(*(p+j)<*(p+j+1))

{t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;}

printf("成绩数组按照从高到低进行排序为:

\n");

p=stu;

for(i=0;i<10;i++)

printf("%5d",*(p+i));

printf("\n");

p=stu;

sort(p);//调用函数sort

printf("第三步内容放在函数中实现为:

\n");

for(i=0;i<10;i++)

printf("%5d",*(p+i));

printf("\n");

printf("采用指针方法,输入字符串studentscore:

\n");

char*a="studentscore";

charb[14];

copy(a,b);//调用函数copy

printf("%s\n",b);

return0;

}

<指针的传递是双向的,在赋值中有多种方法,比如说对数组直接赋值,或者直接对指针变量进行赋值>

<复制该字符串,用函数实现时是用循环语句把一个字符串的每一个字符赋值给另一个字符串>

3,运行结果:

4,学生成绩单制作

1,流程图:

<结构体语言具有简洁,方便,模块化的特点,在初始化及输出过程中要注意输入输出方式>

<在输入字符串的时候,输入语句中不应有&>

2,程序:

#include

StructStudent//定义结构体

{

charnumber[10];

charname[10];

intscore[3

];

floataverage;

}student[10];

intmain()

{

inti,j,t;

for(i=0;i<10;i++)//初始化结构体

{printf("\n输入student%d成绩:

\n",i+1);

printf("number:

");

scanf("%s",student[i].number);

printf("name:

");//存放10个学生的学号,姓名,三门课的成绩

scanf("%s",student[i].name);

for(j=0;j<3;j++)

{printf("score%d:

",j+1);

scanf("%d",&student[i].score[j]);

}

student[i].average=(student[i].score[0]+student[i].score[1]+student[i].score[2])/3.0;

printf("average:

%f",student[i].average);

}

printf("\n");

printf("输出数学成绩最高的学生的学号、姓名、以及该门课程的成绩:

\n");//输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩

intmax=0,max_math=0,max_chinese=0,max_english=0,max_average=0,max_i=0;

for(i=0;i<10;i++)

{

if(max_math

{max_math=student[i].score[0];

max_i=i;}

}

printf("number=%s,name=%s,max_math=%d\n",student[max_i].number,student[max_i].name,student[max_i].score[0]);

printf("输出中文成绩最高的学生的学号、姓名、以及该门课程的成绩:

\n");

for(i=0;i<10;i++)

{

if(max_chinese

{max_chinese=student[i].score[1];

max_i=i;}

}

printf("number=%s,name=%s,max_chinese=%d\n",student[max_i].number,student[max_i].name,student[max_i].score[1]);

printf("输出中文成绩最高的学生的学号、姓名、以及该门课程的成绩:

\n");

for(i=0;i<10;i++)

{

if(max_english

{max_english=student[i].score[0];

max_i=i;}

}

printf("number=%s,name=%s,max_english=%d\n",student[max_i].number,student[max_i].name,student[max_i].score[2]);

printf("输出三门课程的平均分数最高的学生的学号、姓名及其平均分:

\n");//输出三门课程的平均分数最高的学生的学号、姓名及其平均分

for(i=0;i<10;i++)

{

if(max_average

{max_average=student[i].average;

max_i=i;}

}

printf("number=%s,name=%s,max_average=%f\n",student[max_i].number,student[max_i].name,student[max_i].average);

for(i=0;i<9;i++)//将10个学生按照平均分数从高到低进行排序

for(j=0;j<9-i;j++)

if(student[j].average

{t=student[j].average;student[j].average=student[j+1].average;student[j+1].average=t;}

printf("numbernamemathChineseEnglishaverage\n");

for(i=0;i<10;i++)//输出排序后的结果

printf("%8s%8s%9d%9d%9d%6.2f\n",student[i].number,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].average);

return0;

3,运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1