第一篇:这次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
Printf(“i=%dn”,i);
int i=40;
printf(“i=%dn”,i);
fun1();
fun1();}
三、实验过程及结果
实验八:结构体
一、目的
1.掌握结构体的定义方法和使用。
二、任务
定义一日期(年、月、日)结构体,编程实现日期的输入、日期的输出、日期加上一个整型天数、两个日期数据相减等功能。
三、实验过程及结果
第三篇:C语言-实验四
实
验
报
告
课程名称实验项目
学院 系别 班级/学号 学生姓名 实验日期 成绩 指导教师
程序设计基础(C语言)实验四 数组
(二)
一、实验目的
1.掌握二维数组的定义和初始化。2.掌握二维数组元素的引用及其应用。
二、实验内容
注:本次实验完成前三个题目或者仅完成第四个题目最高分为90分,完成全部四个题目最高分100分。
题目1:输入十个人的姓名,并按升序输出。(用选择法或者冒泡法排序)
流程图:
代码:
#include
{ 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 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 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;j } k=1;printf(“鞍点[%d]是%d:行下标%d,列下标%dn”,k,a[i][t],i,t);k++;} return 0;} 运行结果: 题目4:学生成绩统计 一个班共有6名学生,已知每个学生有5门课程的成绩 请输出每个学生的平均成绩 请输出每门课程的平均成绩 请输出学生的最高平均成绩和序号 请输出课程的最高平均成绩和序号 流程图: #include 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 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;} } } 运行结果: 心得体会:这几道题加深了我对数组的理解,及其相关应用。 求两个数之和。在两种情况下完成: ①数据在程序内部定义变量时赋初值,或者通过赋值语句赋值。②数据通过scanf()函数输入。静态输入: #include #include 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。要求用scanf 输入数据,输出计算结果。#include l=%6.2fn”,l);printf(“圆的面积为 s=%6.2fn”,s);printf(“圆柱的表面积为 sq=%6.2fn”,sq);printf(“圆柱的体积为 vz=%6.2fn”,vz);} 输入a、b、c三个整数,求出其中最大者,并连同三个源数据一起输出。#include 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 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 n++; sum=sum+1/n;} printf(“此时sum的值是:%fn”,sum);printf(“此时n的值为%fn”,n);} 计算M=11+ 22+ 33+…+ NN,直到N等于15为止,输出N和对应的M。(要求用for语句做) #include 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 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 t=t*n; s=s+t;} printf(“1!+2!+3!+...+10!的和是:%en”,s);} 注意该程序的结果为:1!+2!+3!+...+10!的和是:4.037913e+006 是以科学计数法表示的结果,因为int的定义范围只能以此表示,如果用long int来输出,则可以得到正常表示的结果 #include 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 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 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 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 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 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 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 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 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 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 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 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 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 if(*(p1+i++)==' ')return(0); return(*(p1+i)-*(p2+i));} 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,用赋初值的方法输入5个学生的数据到结构体数组中,输出每个学生3门课的平均成绩。#include { 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 { 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); } } 实验10 文件程序设计 一、实验目的 1、掌握文件、文件指针的概念。 2、学会使用文件打开、关闭、读、写等文件操作函数。 二、实验内容 1.改错题 (1)下列程序的功能为:在键盘输入4行字符写到D盘data1.dat文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_1.c保存。#include gets(ch); j=0; while(ch[j]!=’ ’) { fputc(fp1,ch[j]); j++; } fputc(fp1,’n’);} fclose(fp1);}(2)下列程序的功能为:随机产生10个整数,写入一个文本文件中。纠正程序中存在的错误,以实现其功能。程序以文件名sy10_2.c保存。#include 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 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 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 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 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语言实验题目
第五篇:C语言实验十