《最新C上机实验报告(DOC).doc》由会员分享,可在线阅读,更多相关《最新C上机实验报告(DOC).doc(108页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC上机实验报告(DOC)第9章 上机实验实验一 顺序结构程序设计【实验日期】 年 月 日【实验目的】1. 熟悉VC+6.0调试环境,掌握运行一个C程序的基本步骤。2. 掌握基本输入、输出函数的使用。3. 能够编写简单的顺序结构程序,实现简单的数据处理。4. 掌握C程序的查错方法。【实验内容】l 调试示例改正下列程序中的错误,求华氏温度1000F对应的摄氏温度。计算公式
2、如下,其中:c表示摄氏温度,f表示华氏温度。源程序(有错误的程序)#include “stdoi.h”void main() int c;f;f=100;c=5*(f-32)/9;printf(“f=d,c=%dn”,f,c);运行结果(改正后程序的运行结果)f=100,c=37调试过程:(1) 输入源程序。(2) 使用菜单或工具栏来完成编译、连接和运行操作。(3) 单击编译(Compile)按钮,编译时出现的第一条错误信息是:Cannot open include file:stdoi.h:no such file or directory通过拖动信息窗口右侧的滚动块或将信息窗口拉大可查看错
3、误信息。双击该错误信息,箭头指向源程序的第一行,因为“stdio.h”被误写为“stdoi.h”。改正为“stdio.h”后,重新编译,新产生的第一条错误信息是:f:undeclared identifier双击该错误信息,箭头指向源程序的第四行,错误信息指出“f”变量没有被定义。仔细观察后,发现“f”前的分号应该为逗号。将“f”前的分号改为逗号后,重新编译,编译正确。(4) 单击连接(Build)按钮,连接正确。(5) 单击运行(Build Execute)按钮,运行结果为:f=d,c=100。结果不符合题目的要求,仔细检查源程序,发现函数printf中“f=d”的“d”应为 “%d”。改正
4、后,重新编译、连接和运行,运行结果与题目要求的结果一致。l 改错题改正下列程序中的错误,计算x的平方y,并分别以“y=x*x”和“x*x=y”的形式输出x和y的值。源程序(有错误的程序)/*found*/#include “stdoi.h”void main() int y,x;printf(“Input x:”);scanf(“%d”,&x);y=x*x;/*found*/printf(“%d=%d*%dn”,x);/*found*/printf(“%d*%d=%dn”,y);运行结果1(改正后程序的运行结果)运行结果2Input x:5 Input x:425=5*516=4*45*5=2
5、54*4=16l 编程题1、已知某位学生的数学、英语和计算机课程的成绩分别是82分、78分和91分,求该生3门课的平均成绩。输出示例: Math=82,eng=78,comp=91,average=832、 当n为152时,分别求出n的个位数字(d1)、十位数字(d2)和百位数字(d3)的值。输出示例: 整数152的个位数字是2,十位数字是5,百位数字是1提示:n的个位数字d1的值是n%10,十位数字d2的值是(n/10)%10,百位数字d3的值是n/100。思考:如果n是一个四位数,任何求出它的每一位数字?指导教师:实验二 选择、循环程序设计【实验日期】 年 月 日【实验目的】1. 掌握关系
6、运算符及逻辑运算符。2. 掌握if语句、switch语句的格式及执行过程。3. 掌握while语句、do-while语句和for语句的格式和执行过程。4. 掌握选择结构、循环结构程序设计的基本方法。【实验内容】l 改错题 1/x (x0)y=f(x)= 0 (x=0)1、改正下列程序中的错误,输入x、计算并输出下列分段函数f(x)的值(保留一位小数)。源程序(有错误的程序)/*found */#include “stdoi.h”void main() double x,y;printf(“Enter x:”);/* found */scanf(“%lf”,x);if(x!=0)/* found
7、 */y=1/xelsey=0;printf(“f(%.2f)=%.1fn”,x,y);运行结果1(改正后程序的运行结果)Enter x:5F(10.00)=0.2运行结果2Enter x:0F(0.00)=0.02、改正下列程序中的错误,计算表达式1+2+3+100的值。源程序(有错误的程序)#include “stdio.h”void main()/*found*/ int i,sum;/*found*/for(i=1,i=100,i+)sum=sum+i;printf(“sum=%dn”,sum);运行结果(改正后程序的运行结果)Sum=5050l 编程题1、输入三角形的3条边a,b,c
8、,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“不构成三角形”。在一个三角形中,任意两边之和大于第三边。三角形面积计算公式:area= ,其中s=(a+b+c)/2输入输出示例(运行2次)第一次运行:请输入三角形的三边:3 4 5area=6.00 perimeter=12.00第二次运行:请输入三角形的三边:1 3 1不构成三角形2、输入1个正整数n,计算1+的前n项之和,输出时保留2位小数。输入输出示例(运行2次)第一次运行:Enter n:3sum=1.53第二次运行:Enter n:10sum=2.13指导教师:实验三 函数程序设计【实验日
9、期】 年 月 日【实验目的】1. 熟练掌握函数的定义和调用。2. 熟练掌握使用函数编写程序。3. 掌握函数的实参、形参和返回值的概念和使用。【实验内容】l 改错题改正下列程序中的错误,计算1!+2!+3!+10!的值,要求定义并调用函数fact(n)计算n!,函数类型是double。输出示例1!+2!+10!=4037913.000000源程序(有错误的程序)#include “stdio.h”double fact(int n);/*对函数进行声明*/void main() int i; /*found*/double sum;/*found*/for(i=1;i10;i+)sum=sum+
10、fact(i);printf(“1!+2!+10!=%fn”,sum);/*found*/double fact(int n); int i;double r=1;for(i=1;i0) a=even(x);if(a=1) sum=sum+x;scanf(“%d”,&x);printf(“其中偶数的和是:%dn”,sum);2、编写一个程序,包含两个函数,一个函数fun1(int x)用来判定x是否为偶数,另一个函数fun2(int x)用来x是否为素数,函数的判断结果可用1和0分别表示肯定和否定。自定义main函数,在main函数中输入两个正整数m和n,调用fun1函数判定m是否为偶数,调用
11、fun2函数判定n是否为素数。(此题为思考题)指导教师:实验四 数组程序设计【实验日期】 年 月 日【实验目的】1. 熟练掌握使用一维数组编程的方法。2. 熟练掌握使用字符数组处理字符串的方法。3. 掌握用数组名作为函数参数的编程方法。【实验内容】l 改错题1、输入一个以回车结束的字符串(少于80个字符),把字符串中的所有数字字符(09)转换为整数,去掉其他字符。例如,字符串“4a56bc”转换为整数后是456。输入输出示例Abc85xyz648564源程序(有错误的程序)#include “stdio.h”#include “string.h”void main()/* found */ i
12、nt i,s;char str80;gets(str);for(i=0;istrlen(str);i+)/* found */if(stri=9)s=s*10+stri-48;printf(“%d”,s);2、输入1个正整数n(0n9)和一组(n个)有序的整数,再输入一个整数x,把插入到这组数据中,使该组数据仍然有序。运行结果(改正后程序的运行结果)请输入数据的个数n:5请输入这5个整数:1 2 3 6 8请输入要插入的整数:4插入后:1 2 3 4 6 8【提示:先找到插入点,从插入点开始,所有的数据顺序后移,然后插入数据。】源程序(有错误的程序)#include “stdio.h”void
13、 main()/*found*/ int i,j,n,x,an;printf(“请输入数据的个数n:”);scanf(“%d”,&n);printf(“请输入这%d个整数:”,n);for(i=0;in;i+)scanf(“%d”,&ai);printf(“请输入要插入的整数:”);scanf(“%d”,&x);j=n; /*假设插在最后*/for(i=0;in;i+)if(x=j;i-) /*从插入点开始,所有的数据顺序后移*/*found*/ai =ai+1;/*found*/ai=x; /*插入数据*/printf(“插入后:”);for(i=0;in+1;i+)printf(“%d ”
14、,ai);putchar(n);l 编程题1、输入1个正整数n(1n10),再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。输入输出示例请输入数据个数n值:5请输入这5个数:4 6 2 9 8处理后的结果是:2 6 4 8 9需要完善的程序如下:#include “stdio.h”int ex(int a,int n)void main() int i,a10,n,x,t;printf(“请输入数据个数n(1n10):”);scanf(“%d”,&n); printf(“请输入这%d个数:”,n);for(i=0;in;i+)scanf(“%d”,&ai
15、);ex(a,n);for(i=0;in;i+)printf(“%d ”,ai);printf(“n”);2、输入一组整数(数据个数在110之间),输出该组数据的和。要求定义并调用函数sum(int a,int n)实现求数组a中n个元素的和,并返回求得的结果。输入输出示例(运行2次)第一次运行:请输入数据个数n(1n10):5请输入这5个数:3 5 2 9 6这些数的和是:25第二次运行:请输入数据个数n(1n10):3请输入这3个数:6 7 8这些数的和是:21需要完善的源程序如下:#include “stdio.h”int sum(int a,int n)void main() int
16、i,a10,n,x,t;printf(“请输入数据个数n(1n10):”);scanf(“%d”,&n); printf(“请输入这%d个数:”,n);for(i=0;in;i+)scanf(“%d”,&ai);t=sum(a,n);printf(“这些数的和是:%dn”,t);指导教师:实验五 指针程序设计【实验日期】 年 月 日【实验目的】1. 掌握指针、地址的基本概念。2. 掌握通过指针操作数组元素的方法。【实验内容】l 改错题1、有n个整数,使前面各数顺序循环移动m个位置(mn)。编写一个函数实现以上功能,在主函数中输入n个整数并输出调用后的n个整数。运行结果(改正后程序的运行结果)请
17、输入n,m(mn):5,3请输入这5个整数(用空格键或Tab键或回车键间隔):1 2 3 6 8移动后: 3 6 8 1 2源程序(有错误的程序)#include stdio.hvoid mov(int *,int,int);void main()int i,m,n,a80,*p;printf(请输入n,m(mn):);scanf(“%d,%d,&n,&m);printf(请输入这%d个整数:,n);for(p=a,i=0;in;i+)/*found*/scanf(“%d”,&p+);mov(a,n,m);printf(移动后:); for(i=0;in;i+) printf(%5d ,ai)
18、;void mov(int *x,int n,int m)/*将a数组中n个元素顺序移动m个位置*/ int i,j,k;for(i=0;i0;j-)/*实现从最后一个元素开始依次后移*/ xj=xj-1;/*found*/x0=xk; l 编程题1、在数组a中查找指定元素。输入一个正整数n(1n10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应的下标,否则输出“没找到”。要求定义并调用函数search(a,n,x),它的功能是在数组a中查找元素x,若找到则返回下标,否则返回-1。输入输出示例(运行2次)第一次运行:请输入n值(1n10):3请输入这3
19、个数:1 2 5请输入x值:22的下标是1第二次运行:请输入n值(1n10):5请输入这5 个数:2 7 5 -1 4请输入x值:9没找到需要完善的源程序如下:#include “stdio.h”int search(int *a,int n,int x)void main() int i,a10,n,x,t;printf(“请输入n值(1n10):”);scanf(“%d”,&n); printf(“请输入这%d个数:”,n);for(i=0;in;i+)scanf(“%d”,&ai);printf(“请输入x值:”);scanf(“%d”,&x);t=search(a,n,x);if(t!
20、=-1) printf(“%d的下标是%dn”,x,t);else printf(“没找到”);2、 以下程序中,函数fun的功能是判断一串字符是否为“回文”,若是返回1,否则返回0。所谓“回文”,是指顺读和倒读都一样的字符串。如果“ABCBA”和“xyzzyx”都是“回文”。 输入输出示例(运行3次)第一次运行:Enter a string:abcddcbaYES第二次运行:Enter a string:12321YES第三次运行:Enter a string:xyzyNO需要完善的源程序如下:#include “stdio.h”#include “string.h”int fun(char
21、 *s)void main() int a; char str80;printf(“Enter a string:”);scanf(“%s”,str);a=fun(str);if(a=1) printf(“YES”);else printf(“NO”); 指导教师: 实验六 结构体程序设计【实验日期】 年 月 日【实验目的】1. 掌握结构体数组的基本使用方法。2. 掌握链表的基本概念。【实验内容】l 改错题1、输入n(3n10)个学生的成绩信息,包括学号、姓名和3门课程的成绩,输出总分最高的学生姓名和总分。输入输出示例输入n:5输入第1个学生的学号、姓名和3门课成绩:1 赵丽 78 67 84
22、输入第2个学生的学号、姓名和3门课成绩:2 钱君 89 65 90输入第3个学生的学号、姓名和3门课成绩:3 刘芳 75 78 82输入第4个学生的学号、姓名和3门课成绩:4 陈伟 77 69 68输入第5个学生的学号、姓名和3门课成绩:5 宋平 80 76 85总分最高的学生是:钱君,244分源程序(有错误的程序)#include stdio.htypedef struct student/*定义结构体类型*/long num;char name9;int score3;int sum;STU;void main()int i,j,k,n,max=0;STU a10;printf(输入n:)
23、;scanf(“%d”,&n);for(i=0;in;i+)printf(输入第%d个学生的学号、姓名和3门课成绩:,i+1);scanf(“%d”,&ai.num);scanf(“%s”,ai.name);ai.sum=0;for(j=0;j3;j+)/*found */scanf(“%d”,&scorej);ai.sum+=ai.scorej;for(i=0;imax)max=ai.sum; k=i;/* found*/printf(总分最高的学生是:%s,%dn, name, sum);l 编程题1、从键盘输入n(3n10)个学生的数据,每个学生包括学号、姓名和3门课程的成绩,输出每个学
24、生的姓名和平均成绩,输出的平均成绩保留2位小数。输入输出示例输入n:3输入第1个学生的学号、姓名和3门课成绩:1 赵丽 78 64 83输入第2个学生的学号、姓名和3门课成绩:2 钱君 89 65 90输入第3个学生的学号、姓名和3门课成绩:3 刘芳 71 78 82赵丽,75.00分钱君,81.33分刘芳,77.00分需要完善的源程序如下:#include stdio.htypedef struct student/*定义结构体类型*/long num;char name9;int score3;float aver;STU;void main() 指导教师:实验七 文件程序设计【实验日期】
25、 年 月 日【实验目的】1. 掌握文件的基本概念。2. 掌握文件的打开、关闭方法。3. 掌握文件的读、写方法。【实验内容】l 改错题从键盘输入一行字符,写到文件a.txt中。源程序(有错误的程序)#include “stdio.h”void main()char ch;/* found */FILE fp;/* found */if(fp=fopen(“a.txt”,“w”)!=NULL)printf(“cannot open filen”);exit(0);while(ch=getchar()!=n)fputc(ch,fp);fclose(fp);l 填空题1、下面程序完成的功能是:从键盘输
26、入一行字符,反序后输出。请填空并运行程序。(程序从键盘接受字符的同时就用头插法建立链表,所建立的链表本身就已经是反序排序的。因此反序输出字符的时候只需沿着链表的第一个结点开始,顺序输出即可。)#include “stdio.h”#include “stdlib.h”struct nodechar data;struct node *next;void main()char ch;struct node *head,*p;head=NULL;while(ch=getchar()!=n)p=(struct node *)malloc(sizeof(struct node);p-data=ch;p-
27、next= ;head= ; ;while(p!=NULL)printf(“%c”,p-data);p=p-next;l 编程题1、从键盘输入一串字符,将其中的小写字母转换成大写字母,其它字符不变,输出到文件test.txt中。2、从键盘输入n(3n10)个学生的数据,每个学生包括学号、姓名和3门课程的成绩,由程序计算出每个学生的平均成绩,将每个学生的输入数据和计算出的平均成绩写入文件stud.dat中。需要完善的源程序如下:#include stdio.htypedef struct student long num; char name9; int score3; float aver;STU;void main() 3、将上题创建的文件stud.dat中的学生数据依次读出,并显示在屏幕上。#include stdio.htypedef struct student long num; char name9; int score3; float aver;STU;void main() 指导教师:-
限制150内