这次C语言实验中(★)

时间:2019-05-15 07:22:36下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《这次C语言实验中》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《这次C语言实验中》。

第一篇:这次C语言实验中

这次C语言实验中,新运用到逗号表达式。他的功能是把两个表达式连接起来组成一个表达式,表达式作用是分别求两个表达式的值并以表达式2的值作为整个逗号表达式的值,需要注意的是逗号表达式也可以形成嵌套结构例如 表达式1,(表达式2,表达式3)。

我认为比较难得一到题目是水仙花数的计算。由于它特有的计算模式,需要很多循环和嵌套语句才能实现水仙花数的计算。在这题上我耽搁了很久,但是通过自己完成后明白了不少。

第二篇:C语言实验

C语言实验

实验一:C语言程序调试基础

一、实验目的

1.掌握C语言源程序的编写方法和调试方法

2.学会使用VC6开发工具及调试过程的查错纠错能力。

二、任务

调试课本例子:例2.19、例3.5、例5.9

三、实验过程及结果

1.鼠标左键双击VC,打开程序;单击打开的New的页面中,单击

键,选择键,选择,在新,最后单击键,就可以建立一个新的页面。

2.在界面中输入例2.19的内容,单击

键进行调试,底下的对话框出现

一句话时,说明我们编写的程序无错,就可以单击键,来运行程序。运行结果及编写程序内容如图:

4.关闭这两个窗口,再单击

实验二:顺序程序设计

一、实验目的:

1.掌握顺序程序的设计方法;

键,选择

2.掌握输入输出控制语句。

二、实验任务与要求

1.第3章课后习题T2 2.第3章课后习题T7

三、实验过程及结果

实验三:分支程序设计

一、目的

1.掌握分支程序控制语句的语法格式及纷争程序设计方法。2.了解分支程序的条件表达式及运算规则; 3.掌握分支程序控制语句的嵌套使用方法。

二、任务

1.第4章课后习题T6 2.第4章课后习题T8 3.第4章课后习题T12

三、实验过程及结果

实验四:循环程序设计

一、目的

1.掌握循环程序的控制语句的语法规则;

2.掌握循环程序的编写方法;

3.掌握循环程序的嵌套与退出控制方法。

二、任务

1.求100~200间的全部素数。2.第5章课后习题T8 3.第5章课后习题T10

三、实验过程及结果

实验五:数组

一、目的

1.掌握数组的定义及使用方法 2.掌握字符数组的相关操作函数。

二、任务

1.用数组求Fibonacci数列的钱40项,每5个一行。2.将一个3行8列的数组A转置为数组B。3.已知字符串str1=”abcde”,str2=”hijklm”,比阿尼写程序分别实现str1与str2的连接、求长度、比较等操作。

三、实验过程及结果

实验六:函数

一、目的

1.掌握函数的定义与调用方法。2.掌握函数参数的专递方式。

3.掌握函数的嵌套调用和递归调用方法。

二、任务

1.编写一函数,用冒泡排序法实现对数组A的排序。2.编写一函数,用选择排序法实现对数组A的排序。3.编写一函数,实现对给定年year是不是闰年。4.编写一函数,实现对给定整数m是不是素数。

5.利用递归算法,编写一函数,求Fibonacci数列的第n项。

三、实验过程及结果

实验七:变量作用域

一、目的

1.了解变量的存储类型及生命周期、作用域的性质。2.准确使用局部变量和全局变量。

二、任务

1.根据变量作用域知识,分析下列程序的运行效果。2.调试程序,分析个变量的作用范围和生命期。

#include int i=5;void fun1(){ int i=5;static int j=20;i+=5;j=j-3;printf(“i=%d.j=%dn”,i,j);} void main(){

Printf(“i=%dn”,i);

int i=40;

printf(“i=%dn”,i);

fun1();

fun1();}

三、实验过程及结果

实验八:结构体

一、目的

1.掌握结构体的定义方法和使用。

二、任务

定义一日期(年、月、日)结构体,编程实现日期的输入、日期的输出、日期加上一个整型天数、两个日期数据相减等功能。

三、实验过程及结果

第三篇:C语言-实验四

课程名称实验项目

学院 系别 班级/学号 学生姓名 实验日期 成绩 指导教师

程序设计基础(C语言)实验四 数组

(二)

一、实验目的

1.掌握二维数组的定义和初始化。2.掌握二维数组元素的引用及其应用。

二、实验内容

注:本次实验完成前三个题目或者仅完成第四个题目最高分为90分,完成全部四个题目最高分100分。

题目1:输入十个人的姓名,并按升序输出。(用选择法或者冒泡法排序)

流程图:

代码:

#include #include int main(){

{ int i,j;char a[10][5],t[2];printf(“请输入十个人的名字:n”);for(i=0;i<10;i++){ } for(j=0;j<10;j++){

} printf(“排序输出:n”);for(i=0;i<10;i++)for(i=0;i<10-j;i++){

} if(strcmp(a[i],a[i+1])>0){

} strcpy(t,a[i]);strcpy(a[i],a[i+1]);strcpy(a[i+1],t);gets(a[i]);} puts(a[i]);return 0;}

题目2:求两个矩阵的积。如:

运算规则为:

第i行第j列相乘得到结果矩阵中r[i][j]的值。比如:

r[0][0] = 1*1+2*5+3*8=35;r[0][1] = 1*5+2*3+3*1=14;r[1][0] = 4*1+5*5+6*8=77;r[1][1] = 4*5+5*3+6*1=41;要求:

1.数组的行数和列数不超过100。

2.输入第一行中,第一个正整数m,表示第一个矩阵的行数,输入第二个正整数n,表示第一个矩阵的列数,也即是第二个矩阵的行数,输入第三个正整数p,表示第二个矩阵的列数。

3.接下来的m*n个数是第一个矩阵中的数。4.再接下来的n*p个数是第二个矩阵中的数。5.输出计算结果,为一个m行,p列的矩阵。流程图:

#include int main(){

int a[100][100]={0},b[100][100]={0},c[100][100]={0},i,j,k,n,m,p;printf(“请输入第一个矩阵的行数m:n”);scanf(“%d”,&m);printf(“请输入正整数n(第一个矩阵的列数,也是第二个矩阵的行数):n”);

for(i=0;i

for(j=0;j

printf(“这两个矩阵的和为:n”);for(i=0;i

} for(j=0;j

题目3:求矩阵的鞍点。鞍点位置上的元素在该行中值最大,在该列中值最小。如下面矩阵的鞍点为35。

【输入】前两个数为行数和列数,其后是矩阵中的元素

【输出】如果没有鞍点,输出NO;如果有输出格式为:[值1,行下标1,列下标1],[值2,行下标2,列下标2]…… 流程图:

#include int main(){

int a[100][100];int m,n,i,j,t,k;printf(“请输入行数m和列数n:n”);scanf(“%d%d”,&m,&n);printf(“请输入这个%d*%d矩阵:n”,m,n);for(i=0;i

for(j=0;j

for(t=0,j=1;ja[j][t])break;if(j>=m){

} k=1;printf(“鞍点[%d]是%d:行下标%d,列下标%dn”,k,a[i][t],i,t);k++;} return 0;} 运行结果:

题目4:学生成绩统计

 一个班共有6名学生,已知每个学生有5门课程的成绩  请输出每个学生的平均成绩  请输出每门课程的平均成绩  请输出学生的最高平均成绩和序号  请输出课程的最高平均成绩和序号 流程图:

#include int main(){

float a[7][6],b[7],c[6];int m,n,i;printf(“请输入6名学生的5门课程的成绩:n”);for(m=1;m<7;m++){

} for(m=1;m<7;m++){

} for(n=1;n<6;n++){

} for(m=1;m<7;m++)c[n]=0;for(m=1;m<7;m++)c[n]+=a[m][n];b[m]=0;for(n=1;n<6;n++)b[m]+=a[m][n];for(n=1;n<6;n++)scanf(“%f”,&a[m][n]);b[m]=b[m]/5;printf(“第%d名学生的平均成绩为%.1fn”,m,b[m]);c[n]=c[n]/6;printf(“第%d门课的平均成绩为%.1fn”,n,c[n]);

} {

} for(m=1;m<6;m++){

} return 0;i=0;for(n=1;n<6;n++){

} if(i==5)printf(“第%d门课成绩最高为%.1fn”,m,c[m]);if(c[m]>=c[n])i++;i=0;for(n=1;n<7;n++){

} if(i==6)printf(“第%d名学生成绩最高为%.1fn”,m,b[m]);if(b[m]>=b[n])i++;运行结果:

题目5:井字格游戏

程序大致的执行过程如图所示: 功能包括:

1.允许两个玩家下棋 2.允许玩家输入下棋的坐标 3.显示当前棋盘状态

4.判断玩家是否下错位置,即在已经下过棋的位置再次下棋 5.判断玩家下棋后,输赢状态 6.在屏幕提示中指导玩家交替下棋

流程图: 省列。代码:

#include #include int c,i,j,kongzhi=1,i=1;int basic[3][3]={0,0,0,0,0,0,0,0,0};int tasic[3][3]={0,0,0,0,0,0,0,0,0};char T[3][3];int printerA(int site1,int site2){ if(tasic[site1][site2]==0&&basic[site1][site2]==0){basic[site1][site2]=1;

T[site1][site2]='X';for(i=0;i<3;i++){

printf(“-------n”);for(j=0;j<3;j++){ printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2)

} else return 99;} printf(“-------n”);} return 0;int printerB(int site1,int site2){

if(tasic[site1][site2]==0&&basic[site1][site2]==0){ tasic[site1][site2]=-1;T[site1][site2]='O';for(i=0;i<3;i++){ printf(“-------n”);for(j=0;j<3;j++)

{ printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2){ printf(“-------n”);} } return 0;} else return-99;} int main(){ int m,n,a,b;while(kongzhi==1){

if((basic[0][0]+basic[0][1]+basic[0][2]==3)||(basic[1][0]+basic[1][1] do { a=0;printf(“请A下子:”);scanf(“%d%d”,&m,&n);

a=printerA(m,n);if(a==99)printf(“对不起,您下错位置了!n”);} while(a==99);+basic[1][2]==3)||(basic[2][0]+basic[2][1]+basic[2][2]==3)||(basic[0][0]+basic[1][1]+basic[2][2]==3)||(basic[0][2]+basic[1][1]+basic[2][0]==3)){ printf(“A赢了!n”);return 0;} do { b=0;printf(“请B下子:”);scanf(“%d%d”,&m,&n);

b=printerB(m,n);if(b==-99)

printf(“对不起,您下错位置了!n”);} while(b==-99);if((tasic[0][0]+tasic[0][1]+tasic[0][2]==-3)||(tasic[1][0]+tasic[1][1]+tasic[1][2]==-3)||(tasic[2][0]+tasic[2][1]+tasic[2][2]==-3)||(tasic[0][0]+tasic[1][1]+tasic[2][2]==-3)||(tasic[0][2]+tasic[1][1]+tasic[2][0]==-3))

{ printf(“B赢了!n”);return 0;} i++;if(i==9){ printf(“平局!”);return 0;} } } 运行结果:

心得体会:这几道题加深了我对数组的理解,及其相关应用。

第四篇:C语言实验题目

求两个数之和。在两种情况下完成:

①数据在程序内部定义变量时赋初值,或者通过赋值语句赋值。②数据通过scanf()函数输入。静态输入:

#include void main(){ int a=1,b=2,s;s=a+b;printf(“这两个数的和是%dn”,s);} 动态输入:

#include void main(){ int a,b,s;printf(“请您输入两个数:”);scanf(“%d,%d”,&a,&b);s=a+b;printf(“这两个数的和是%dn”,s);}

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。要求用scanf 输入数据,输出计算结果。#include void main(){ float r,h,l,s,sq,vz;float pi=3.1415926;printf(“请输入圆的半径r,圆柱高h:”);scanf(“%f,%f”,&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vz=pi*r*r*h;printf(“圆的周长为

l=%6.2fn”,l);printf(“圆的面积为

s=%6.2fn”,s);printf(“圆柱的表面积为

sq=%6.2fn”,sq);printf(“圆柱的体积为

vz=%6.2fn”,vz);}

输入a、b、c三个整数,求出其中最大者,并连同三个源数据一起输出。#include int max(int x,int y,int z){ int max;if(x>y){

if(x>z)

max=x;

else

max=z;} else {

if(y>z)

max=y;

else

max=z;} return(max);} void main(){ int max(int x,int y,int z);

int a,b,c,w;

printf(“请您输入三个整数:”);

scanf(“%d,%d,%d”,&a,&b,&c);

printf(“您输入的三个数是:%d,%d,%dn”,a,b,c);

w=max(a,b,c);

printf(“这三个数中最大的是:%dn”,w);}

给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。要求输入一个成绩并打印出对应的等级制成绩。要求用switch语句完成。#include void main(){ int grade,c;printf(“请您输入一个成绩:”);scanf(“%d”,&grade);while(grade>100||grade<0){

printf(“您输入了一个错误的成绩!请重新输入n”);

scanf(“%d”,&grade);} c=grade/10;switch(c){ case 10: case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default: grade='E';} printf(“您输入的成绩的等级为:%Cn”,grade);}

计算当n为何值时,不等式sum=1 + 1/2 + 1/3 +… + 1/n >limit成立,输出n对应的sum(limit从键盘输入,要求用while、或do...while 语句,limit=10)。#include void main(){ float n=0,sum=0,limit=0;printf(“请输入一个limit的值:”);scanf(“%f”,&limit);while(sum<=limit){

n++;

sum=sum+1/n;} printf(“此时sum的值是:%fn”,sum);printf(“此时n的值为%fn”,n);}

计算M=11+ 22+ 33+…+ NN,直到N等于15为止,输出N和对应的M。(要求用for语句做)

#include void main(){ int n;float M;M=0.0;for(n=1;n<10;n++){

M=M+(n+10*n);} for(n=10;n<=15;n++){

M=M+(n+100*n);} n--;printf(“当n是%d时,M的值为%fn”,n,M);}

100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马一匹驮0.5担,计算大、中、小马数目并输出。#include void main(){ int big,mid,small,sum=0;for(big=0;big<33;big++)

for(small=0;small<100;small+=2)

for(mid=0;mid<50;mid++)

{

if(3*big+2*mid+small/2==100&&big+mid+small==100)

{

printf(“big:%dt,mid:%dt,small:%dn”,big,mid,small);

sum++;

}

}

printf(“一共有%d种组合方式n”,sum);}

求 sum=1!+2!+3!+...+10!,并输出结果。#include void main(){ float s=0,t=1;int n;for(n=1;n<=10;n++){

t=t*n;

s=s+t;} printf(“1!+2!+3!+...+10!的和是:%en”,s);} 注意该程序的结果为:1!+2!+3!+...+10!的和是:4.037913e+006 是以科学计数法表示的结果,因为int的定义范围只能以此表示,如果用long int来输出,则可以得到正常表示的结果 #include void main(){ long s=0,t=1;int n;for(n=1;n<=10;n++){

t=t*n;

s=s+t;} printf(“1!+2!+3!+...+10!的和是:%ldn”,s);}

1!+2!+3!+...+10!的和是:4037913

设数列为1,3,5,7,9,11,13,15,17,19,动态输入在数组array中,然后顺序打印输出该数列,再逆序打印输出该数列。#include #define N 10 void main(){ int array[10];printf(“请您输入10个整数:n”);int i=0;for(i=0;i

scanf(“%d”,&array[i]);printf(“您输入的10个整数的顺序排列是:n”);for(i=0;i

printf(“%-4d”,array[i]);printf(“n”);printf(“您输入的10个整数的逆序排列是:n”);for(i=N-1;i>=0;i--)

printf(“%-4d”,array[i]);printf(“n”);}

将3x3阶二维数组的关于主对角线对称的元素互换。二维数组的第1至3行元素分别为1、2、3、4、5、6、7、8、9。用矩阵形式分别输出互换前、后的数组元素值。#include void main(){ int i,j,t,array[3][3]={1,2,3,4,5,6,7,8,9};printf(“Before Exchanged:n”);for(i=0;i<3;i++){

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

printf(“%5d”,array[i][j]);

printf(“n”);} for(i=1;i<3;i++)

for(j=0;j

{

t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

printf(“After Exchanged:n”);

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

{

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

printf(“%5d”,array[i][j]);

printf(“n”);

} }

定义两个字符数组s1、s2,并用赋初值的方法把两个字符串“Computer”和“Language” 分别存放到s1、s2中,要求不用库函数strcat(),把s2连接到s1的尾部,然后以%s格式输出连接后的字符串s1。#include void main(){

char s1[80],s2[40];

int i=0,j=0;

printf(”input string1:“);

scanf(”%s“,&s1);

printf(”input string2:“);

scanf(”%s“,&s2);

while(s1[i]!='')

i++;

s1[i]=' ';

i++;

while(s2[j]!='')

s1[i++]=s2[j++];

s1[i] = '';

printf(”The new string is:%sn“,s1);}

用赋初值的方法把字符串”C is a general purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.“存放到字符数组s中,编程统计其中的大写字母、小写字母、数字、空格、逗号的个数。#include void main(){

char s[512] = ”C is a general purpose, procedural, imperative “

”computer programming language developed in 1972 by Dennis“

”Ritchie at the Bell Telephone Laboratories for use with “

”the Unix operating system.“;int upper=0,lower=0,digit=0,space=0,comma=0;int i=0;while(s[i])

{

if(s[i]>='A'&&s[i]<='Z')upper++;

if(s[i]>='a'&&s[i]<='z')lower++;

if(s[i]>='0'&&s[i]<='9')digit++;

if(s[i]==' ')space++;

if(s[i]==',')comma++;

i++;

}

printf(”这串字符串有大写字母%d个,小写字母%d个,数字%d个,空格%d个,逗号%d个n“,upper,lower,digit,space,comma);}

试从主函数输入10个数据到数组中,编写对偶数项求和的子函数,它将计算结果返回给主函数,由主函数输出。#include int oqh(int a[], int x){

int i,s;s=0;

for(i=1;i

s=s+a[i];

return(s);}

void main(){ int a[10];int i,s;printf(”请您在数组内输入10个数:“);for(i=0;i<10;i++)

scanf(”%d“,&a[i]);s=oqh(a,10);printf(”这个数组的偶数项的和是:%dn“,s);} 注意:oqh并无其他含义,是本人定义的一个函数名,偶数项求和的缩写。编写一个判断素数的程序,其中主函数用于完成输入一个整数并给出判断结果,单独编写一个函数用于判断其参数是否为素数,其返回值为1表示为素数,为0表示为非素数。#include #include int prime(int n){ int m,i=2,t;t=(int)sqrt(n);for(;i<=t;i++){

if(n%i==0)

{

m=0;

break;

}

if(i>t)

m=1;

else

continue;} return(m);} void main(){ int n;int i;printf(”请输入你要判断的数:n“);scanf(”%d“,&n);while(n<=1){

printf(”您输入了一个错误的数据,请重新输入:n“);

scanf(”%d“,&n);} if(prime(n))

printf(”您输入的是一个素数n“);else

printf(”您输入的不是一个素数n“);

}

输入三个整数,按由小到大的顺序输出。(要求使用指针来排序输出)#include void sort(int *a,int *b,int *c){ int t=0;if(*a>*b){

t=*a;

*a=*b;

*b=t;} if(*a>*c){

t=*a;

*a=*c;

*c=t;} if(*b>*c){

t=*b;

*b=*c;

*c=t;} } void main(){ int a,b,c;printf(”请您输入三个整数:“);scanf(”%d %d %d“,&a,&b,&c);sort(&a,&b,&c);printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);}

或者是

#include void main(){

void swap(int *p1,int *p2);

int a,b,c;

int *p1,*p2,*p3;

printf(”请您输入三个整数:“);

scanf(”%d %d %d“,&a,&b,&c);

p1=&a;

p2=&b;

p3=&c;

if(a>b)swap(p1,p2);

if(a>c)swap(p1,p3);

if(b>c)swap(p2,p3);

printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);} void swap(int *p1,int *p2){

int p;

p=*p1;

*p1=*p2;

*p2=p;}

输入十个整数,放在数组list中,然后用指针法从后向前输出该数组中的整数。#include void main(){

int list[10],i,*p=list;

printf(”请您输入10个整数:n“);

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

scanf(”%d“,&list[i]);

printf(”这10个整数的逆序序列是:n“);

for(i=9;i>=0;i--)

printf(”%-4d“,*(p+i));}

如果输入的数字个数不定的情况,下面的代码可行 #include void main(){ void sort(char *p,int m);int i,n;char *p,list[30];printf(”请您输入n的值:“);scanf(”%d“,&n);printf(”请您输入%d个整数:n“,n);for(i=0;i

scanf(”%d“,&list[i]);p=&list[0];sort(p,n);printf(”这%d个整数的逆序序列是:n“,n);for(i=0;i

printf(”%-4d“,list[i]);printf(”n“);} void sort(char *p,int m){ int i;char t,*p1,*p2;for(i=0;i

p1=p+i;

p2=p+(m-1-i);

t=*p1;

*p1=*p2;

*p2=t;} }

编写一个函数,它能对一个字符串(“I am a student”)测出长度,要求函数的形参是一个指针变量,函数返回值是字符串的长度。#include void main(){ int length(char *p);int len;char str[20];printf(”input string:“);gets(str);len=length(str);printf(”The length of string is %d.n“,len);} int length(char *p){ int n;n=0;while(*p!=''){

n++;

p++;} //*p='';//n++;return(n);} 若要统计结果包含结束符,则启用*p='';n++;两条语句

编一个函数cstrcmp实现两个字符串的比较,具体为:

int cstrcmp(char *p1, char *p2)p1,p2分别指向字符串s1,s2;若s1=s2则函数返回0;若s1>s2,则函数返回1;若s1 #include char s1[20];char s2[20];void input(){ printf(”输入第1个字符串:n“);scanf(”%s“,s1);printf(”输入第2个字符串:n“);scanf(”%s“,s2);} int cstrcmp(char *p1,char *p2){ p1=s1;p2=s2;if(strcmp(p1,p2)==0){

return 0;} if(strcmp(p1,p2)>0){

return 1;} if(strcmp(p1,p2)<0){

return-1;} } void main(){ char *a;char *b;input();printf(”这两个字符串比较的结果是:%dn“,cstrcmp(a,b));}

如果要求返回的是不相同字母的ASCII码值: #include void main(){ int cstrcmp(char *p1,char *p2);int m;char str1[20],char str2[20],*p1,*p2;printf(”请在下面输入两个字符串:n“);gets(str1);gets(str2);p1=&str1[0];p2=&str2[0];m=cstrcmp(p1,p2);printf(”这两个字符串比较的结果是:%dn“,m);} int cstrcmp(char *p1,char *p2){ int i;i=0;while(*(p1+i)==*(p2+i))

if(*(p1+i++)=='')return(0);

return(*(p1+i)-*(p2+i));}

有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,用赋初值的方法输入5个学生的数据到结构体数组中,输出每个学生3门课的平均成绩。#include struct student

{ char num[6];

char name[8];int score[3];float avr;}stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}};void main(){ int i,j,sum;for(i=0;i<5;i++)

{

sum=0;

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

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;} printf(”number

name score1 score2 score3 averagen“);for(i=0;i<5;i++){

printf(”%3s%10s“,stu[i].num,stu[i].name);

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

printf(”%7d“,stu[i].score[j]);

printf(”%10.2fn“,stu[i].avr);} }

如果按平均成绩由高到低排序后,输出每个学生的成绩 #include struct student

{ char num[6];

char name[8];

int score[3];float avr;

}stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}},temp;void main(){ int i,j,sum;

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

sum=0;

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

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;} for(i=0;i<4;i++)

for(j=i;j<4;j++)

if(stu[j].avr

{

temp=stu[j];

stu[j]=stu[j+1];

stu[j+1]=temp;

}

printf(”number

name score1 score2 score3 averagen“);

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

{

printf(”%3s%10s“,stu[i].num,stu[i].name);

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

printf(”%7d“,stu[i].score[j]);

printf(”%10.2fn",stu[i].avr);

} }

第五篇:C语言实验十

实验10 文件程序设计

一、实验目的

1、掌握文件、文件指针的概念。

2、学会使用文件打开、关闭、读、写等文件操作函数。

二、实验内容 1.改错题

(1)下列程序的功能为:在键盘输入4行字符写到D盘data1.dat文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_1.c保存。#include #include void main(){ FILE * fp1;char ch[80];int I,j;fp1=fopen(“d:data1.dat”,”b”);for(i=1;i<=4;i++){

gets(ch);

j=0;

while(ch[j]!=’’)

{

fputc(fp1,ch[j]);

j++;

}

fputc(fp1,’n’);}

fclose(fp1);}(2)下列程序的功能为:随机产生10个整数,写入一个文本文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_2.c保存。#include #include #include void main(){ int x[10],i,k;FILE *fp2;srand((unsigned)time(NULL));for(i=0;i<10;i++)

x[i]=rand();fp2=fopen(“data2.dat”,”wb”);if(fp2==NULL){

printf(“Open error n”);exit(0);} for(int k=0;k<10;k++)

fwrite(x[k],sizeof(int),fp2);fclose(fp2);}

(3)下列程序的功能为:从数组读入数据,建立ASCII码文件,并按下列格式输出。10 20 30 40 50 60 70 80 90 100(每个数据占5个字符宽度)纠正程序中存在的错误,以实现其功能。程序以文件名sy10_3.c保存。#include #include void main(){

FILE *fp3;int b[]={10,20,30,40,50,60,70,80,90,100},i=0,n;if((fp3=fopen(“e:file10_3.txt”,”w”))==NULL){

printf(“%s不能打开n”,”e:file10_3.txt”);

exit(1);} while(i<10){

fprintf(fp3,”%d”,b[i]);

if(i%3==0)fprintf(fp3,”n”);

i++;} fclose(fp3);if((fp3=fopen(“e:file10_3.txt”,”r”))==NULL){

printf(“%s不能打开n”,”e:file10_3.txt”);

exit(1);} fscanf(fp3,”%5d”,&n);while(!feof(fp3)){

printf(“%5d”,n);

fscanf(fp3,”%d”,&n);} printf(“n”);

fclose(fp3);}

2.程序填空题

(1)下列程序的功能是:从字符指针数组读出字符串,建立ASCII文件file10_4.txt。补充完善程序,以实现其功能。程序以文件名sy10_4.c保存。#include #include void main(){

FILE *fp;int i=0;char *str[]={“visual C++”, “visual Basic”, “visual java”, “visual foxpro”};if((fp=fopen(“e:file10_4.txt”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_4.txt”);

exit(1);} while(i<4){

fprintf(_______________________);

_________________________________;} fclose(fp);}

(2)下列程序的功能为:从键盘输入字符,直到输入EOF(Ctrl+Z)为止。对于输入的小写字符,先转换为相应的大写字符,其他字符不变,然后逐个输出到文件text.txt中,行结束符回车('n’)也作为一个字符对待,最后统计文件中的字符个数和行数。补充完善程序,以实现其功能。程序以文件名sy10_5.c保存。#include main(){

FILE *fp;char c,str[256];int i=0,no=0,line=0;if((fp=fopen(“text.txt”,_________________))==NULL){ printf(“can’t open this file.n”);

exit(0);} printf(“please input a string.n”);while((c=getchar())!=EOF){

if(c>=’a’ && c<=’z’)_______________;

fputc(_________________,fp);} fclose(fp);if((fp=fopen(“text.txt”,”r”))==NULL){ printf(“can’t open this file.n”);

exit(0);} while(!eof(fp)){

c=__________________;

no++;

if(_________________)line++;} printf(“line=%d character_no=%dn”,line,no);fclose(fp);}

(3)下列程序的功能为:从字符指针数组读出字符串,建立和输出二进制文件file10_6.dat。补充完善程序,以实现其功能。程序以文件名sy10_6.c保存。#include #include #include void main(){ FILE *fp6;int i=0;char str[][20]={“visual C++”, “visual Basic”, “visual java”, “visual foxpro”};char s[20];if((fp6=fopen(“e:file10_6.dat”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_6.dat”);

exit(1);} while(i<4){

fwrite(_______________,_______________,1,fp6);

i++;} fclose(fp6);if((fp6=fopen(“e:file10_6.dat”,_________________))==NULL){ printf(“%s不能打开n”,”e:file10_6.dat”);

exit(1);} fread((______________,______________,1,fp6);while(!feof(fp6)){

printf(“%sn”,s);

fread((_______________,_____________,1,fp6);} fclose(fp6);} 3.编程题

(1)设文件number.dat中放了一组整数,编程计算并输出文件中正整数之和、负整数之和。程序以文件名sy10_7.c保存。

(2)根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将源文本文件的内容追加到目的文本文件的原内容之后,并在程序运行过程中显示源文件和目的文件中的文件内容,以此来验证程序执行结果。程序以文件名sy10_8.c保存。

(3)有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。程序以文件名sy10_9.c保存。

下载这次C语言实验中(★)word格式文档
下载这次C语言实验中(★).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    c语言实验6

    C语言程序设计(B) (2011-2012-2)实验报告6教学班级:土木104学号: 23姓名: 课程教师:实验辅导教师:试验题目:求整数数组b[5][5]主对角线的元素和 试验前数据: #include int main() { i......

    C语言实验12

    实验12指针与数组 一、实验目的 1. 掌握指针的定义和使用指针变量; 2. 学会使用字符串的指针和指向数组的指针变量; 3. 学会使用指针对数组的操作; 二、实验设备(软件、硬件)......

    C语言实验[推荐阅读]

    实验人员: 17自动化类03,学号1710221315,万里,实验日期:2018.3.27 实验一C语言上机基础 一实验目的 1 熟悉C语言运行环境——Microsoft Visual C++ 6.0中文版。 2 掌握C语言程序......

    C语言上机实验心得

    C语言上机实验心得 在科技高度发展的今天,计算机在人们之中的作用越来越突出。而C语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一......

    《C语言程序设计》实验四

    电子科技大学 计算机 学院 标 准 实 验 报 告 (实验)课程名称C语言程序设计 电子科技大学教务处制表电 子 科 技 大 学 实 验 报 告四 学生姓名:学 号:指导教师:刘 勇 实验地点:......

    《C语言程序设计》实验四

    电子科技大学 计算机 学院 标 准 实 验 报 告 (实验)课程名称C语言程序设计 电子科技大学教务处制表电 子 科 技 大 学 实 验 报 告四 学生姓名:学 号:指导教师:王瑞锦 实验地点......

    c语言实验二实验报告

    一、 实验目的 1、 2、 3、 4、 掌握关系表达式和逻辑表达式的使用。 掌握选择结构程序设计的一般方法。 熟练使用if语句进行程序设计。 掌握使用switch语句实现多分支选择......

    c语言实验目的5篇

    实验目的 1.‘掌握一维数据。多维数据的定义格式及下标范围 2.学习利用数据解决简单应用程序 3.掌握函数定义和调用的一般方法 4.理解变量的作用域和生存期 5.理解和掌握函......