华南农业大学C语言实验上机实验第四版参考答案(共6篇)
篇1:华南农业大学C语言实验上机实验第四版参考答案
电子科技大学 学院
标 准 实 验 报 告
(实验)课程名称 高级语言程序设计实验
电 子 科 技 大 学
实
验
报
告
实验时间:
10月12日晚
一、实验室名称:
校公共机房
二、实验项目名称:顺序和分支程序设计
三、实验学时:4学时
四、实验原理:
使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。通过上机练习掌握在C编译器中编辑、编译、连接、和运行C程序的方法和过程。
五、实验目的:
1.熟悉C程序开发环境,熟悉C程序的编辑、编译、连接和运行的过程。2.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型、指针型变量,以及对它们赋值的方法。
3.掌握C语言的各种运算符,以及这些运算符的混合使用。4.掌握简单顺序程序设计方法。5.学会使用scanf和printf函数。
6.掌握分支结构各种语句的一般功能和执行过程,会使用分支结构编程。
六、实验内容:
上机完成以下编程实验,调试运行程序并完成报告。
1.编写一个C程序,输入三个整数,计算三个整数的和,并将结果输出。2.编写一个C程序,输入一个字符,找到这个字符前后各隔一个字符的字符。例如,输入‘d’,显示:‘b’和‘f’。3.习题2.22(p91)
4.习题2.23(p91)5.习题 3.3(p134)
6.输入一个两位数,输出对应的英文单词。
七、实验器材(设备、元器件):
硬件要求:普通pc机,1G内存,100G硬盘空间即可。
软件要求:Windows 7,包括C编译器的IDE。
八、实验步骤、实验编程与运行结果:
1.程序文件名为ex1_1,源程序清单如下:
#include
} int a,b,c,d;scanf(“%d %d %d”,&a,&b,&c);d=a+b+c;printf(“%d”,d);
典型测试数据(输入): 25 26 27
应输出(上机前自己分析的结果):78
上机时遇到的问题:wu
实际运行结果:78
2.程序文件名为ex1_2,源程序清单如下:
#include
void main(){
int x,y,z;scanf(“%c”,&x);y=x+2;z=x-2;
} printf(“%c %c”,y,z);
典型测试数据(输入): h
应输出(上机前自己分析的结果): j f
上机时遇到的问题: wu
实际运行结果:j f
3.程序文件名为ex1_3,源程序清单如下:
#include
} float r,s,c;scanf(“%f”,&r);s=3.14*r*r;c=2*3*r;printf(“s=%fn”,s);printf(“c=%f”,c);
典型测试数据(输入):5
应输出(上机前自己分析的结果):78.5 31.4
上机时遇到的问题: wu
实际运行结果:78.5 31.4
4.程序文件名为ex1_4,源程序清单如下:
#include
} scanf(“%f”,&c);a=9*c;b=a/5;F=b+32;printf(“%f”,F);
典型测试数据(输入): 35 应输出(上机前自己分析的结果): 95
上机时遇到的问题: wu 解决办法:
实际运行结果:95
5.程序文件名为ex1_5,源程序清单如下:
#include
} int a,b,c;scanf(“%d %d”,&a,&c);b=a-110;if(c==b){ } else if(c>=b+5){ } else if(c<=b-5){ } printf(“过瘦n”);printf(“过胖n”);printf(“标准n”);
典型测试数据(输入):180 70
应输出(上机前自己分析的结果):标准
上机时遇到的问题: 无
解决办法:多测试几组典型数据;
实际运行结果:标准
6.程序文件名为ex1_6,源程序清单如下:
#include
} else if(a>=2){
switch(a){ case 2:printf(“twenty”);break;case 3:printf(“thirty”);break;case 4:printf(“fouty”);break;case 5:printf(“fifty”);break;case 6:printf(“sixty”);break;case 7:printf(“seventy”);break;int a,b;scanf(“%1d%1d”,&a,&b);if(a==1)
{
switch(b){
} case 4:printf(“fourteen”);break;case 2:printf(“twelve”);break;case 5:printf(“fifteen”);break;case 6:printf(“sixteen”);break;case 7:printf(“seventeen”);break;case 8:printf(“eighteen”);break;case 9:printf(“nineteen”);break;default:printf(“n”);case 3:printf(“thirteen”);break;case 1:printf(“eleven”);break;
}
} case 8:printf(“eighty”);break;case 9:printf(“ninety”);break;default:printf(“n”);} switch(b){ case 1:printf(“one”);break;
} case 2:printf(“two”);break;case 3:printf(“threee”);break;case 4:printf(“four”);break;case 5:printf(“five”);break;case 6:printf(“six”);break;case 7:printf(“seven”);break;case 8:printf(“eight”);break;case 9:printf(“nine”);break;default:printf(“n”);
典型测试数据(输入): 55 应输出(上机前自己分析的结果):fiftyfive
上机时遇到的问题: wu 解决办法:
实际运行结果:fiftyfive
九、实验结论:课下应提前做好,不然时间来不及。
十、总结及心得体会:应用生疏
十一、对本实验过程及方法、手段的改进建议:无
报告评分:
指导教师签字:
篇2:华南农业大学C语言实验上机实验第四版参考答案
在科技高度发展的今天,计算机在人们之中的作用越来越突出。而C语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好C语言,这对我们以后的发展是十分重要的。
说到这,上机实验当然就是一个必不可少的环节了,C语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。
通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了C语言那就大错特错了。
我主要存在以下的这些缺点:
1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。而在最后输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。
2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解题了。
3、4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够深刻。
5、6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。
英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在一点问题。
为了能更好地学好C语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。
实验中我深刻意识到完成程序的编写,决不意味着万事大吉。认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。所以程序的调试是一个技巧性很强的工作,它可能比编一个程序耗时更多。由此可看出上机实践的重要性。
通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。编程的时候有因为顺利编出程序而开心过、有因为做得比人家慢而郁闷过、有因为不知从何入手而无奈过、有因为不知错出在哪而彷徨过„„但随着练习的增多,我对C语言比以前熟了很多,不再只是纸上谈兵,我都有能力独立做出一些程序,可能对于一些“高手来说这不算什么,或者他们早就会了,但我依然觉得很开心,因为我跟我自己比是进步了。
篇3:华南农业大学C语言实验上机实验第四版参考答案
根据夫琅和费衍射的理论, 当平行光垂直地投射到光栅平面上, 则光被衍射后, 凡衍射角适合条件:d) sin{=k) m K=0, 1, 2, … (1)
sin k=0=0时光将会加强, 其他方向将完全消失。式中{是衍射角, d= (a+b) 是缝隙, 称为光栅常数 (如图1光栅衍射) , K是光谱的级数。如果用会聚透镜把这些衍射后的平行光会聚起来, 则在透镜焦面上将出现亮线, 称为谱线。在{=0的方向上可以观察到中央极强, 称为零级谱线。其他级数的谱线对称地分布在零级谱线的两侧 (如图2光栅衍射后加聚透) 。而光源中的某一谱线 (如紫光) 在不同级数下有同一的波长, 则此谱线在不同级数又将有不同相对应的衍射角{。
测出各级数下的读数和光栅常数d, 其中利用公式:
计算出衍射角{, 利用'公'式:d) 'sin{'=k) m (3)
计1算/4波[长 (1λ1, /利14) 用[ (公11式:1D1) m]= (d1) cos1) i]) Di/k (4)
2 实验数据及处理dcosd/c kos/k
实验数据'1及1处/6理0见'1表/1 11/、860表0 2。/180
3 实验结果
通过用3种不过方法处理实验数据, 得到的误差均在5%以内, 说明这3种实验处理方法均合理。下面我们来看这3种方法的处理过程, 可以发现:
1) 传统的数据处理方法, 是老师在课堂上讲解的, 也是我们00-00最熟悉的, 通常都会选择用它来处理数据, 但它存在数据计算繁琐, 容易出错, 而且计算结果的精度也不高, 所以现在都在寻求更简洁的方法来处理数据。
2) 随着电脑的普及, 它给我们带来了更多的便利, 通过观察Excel表格来处理数据的过程可以看出, 他更加的方便、快捷, 处理数据的能力也很强, 而且他是Windows系统都带有Excel表格, 普通的计算机用户都可以使用。但它也存在一定得缺陷, 例如, 公式【I4= (H4-G4) /4+ (360-G5+H5) /4】并不是适用于任何实验数据的, 例如这样一组数据:293°24ˊ, 252°40ˊ, 113°25ˊ, 72°40ˊ;就不能用此公式计算。应该用公式【I4= (H4-G4) /4+ (H5-G5) /4】, 同时, Excel表格在四舍五入方面也存在陷阱, 不能用设置“小数位数”的办法来四舍五入, 而大多数用户不会注意这一点, 就会出错, 尤其是处理物理实验数据时要求很高的精确度。
3) 在这里我们发现C语言编程来处理数据完全可以避免Excel表格所出现的问题, 而且数据处理的精确度也很高, 但它的要求要会C语言编程, 可我们本科生是学过的, 而且还要通过国家二级考试的人来说是没有问题的。
最后通过三者的对比可以发现, C语言编程的方法较之用传统方法要方便简洁, 一目了然, 且很好的解决了用Excel处理数据时还要编辑不同公式的弊端。是对任何一组数据都适用的。
4 结论
分光计是一种测量光线偏转角度的仪器, 本实验用以研究了紫光在不同级数下的波长。并且分别用来Excel和C语言编程两种方法相比较地处理了实验数据, 简捷明了, 避免了传统方法的弊端, 为使用者提供了一个理论与实践结合的机会。
摘要:用C语言编程的方法处理比较复杂的实验数据, 简捷准确且避免了传统方法的弊端, 与用Excel处理数据的方法相比, 其结果更符合误差理论。
关键词:C语言编程,数据处理,波长,不确定度
参考文献
[1]竺江峰, 芦立娟, 鲁晓东.大学物理试验.北京:中国科学技术出版社, 2005, 8.
[2]穆松梅, 王文捷.C语言编程分光计测量三棱镜折射率实验[J].科学技术与工程, 2006, 7.
篇4:C语言程序设计上机实验报告
系部:计算机科学系 年级:2013 级 班级:
姓名:
学号:
实验时间:
实验成绩:
2013年月日
实验三顺序结构程序的设计
一 实验名称:顺序结构程序的设计
二.实验环境:windows XP系统,VC++6.0软件
三.实验目的:
四.实验内容:
五.算法描述流程图
六.源程序
七.测试数据及运行结果
八.实验心得
实验成绩评分要求
1、原创性发现抄袭或雷同成绩为0分
2、正确性程序正确60分
3、可读性格式清楚,有注释,变量命名规范20分
4、健壮性对特殊测试数据有考虑有测试10分
篇5:华南农业大学C语言实验上机实验第四版参考答案
简单的C程序设计和基本数据处理
实验目的:
1.掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。
2.通过编程进一步理解和掌握运算符的确切含义和功能。3.理解和掌握运算符与运算对象的关系,优先级和结合方向。
1.通过编程,掌握C语言的几种基本数据类型,int、char、flloat、double,以及由这些基本数据类型构成的常量和变量的使用方法。
2.掌握基本输入/输出函数的使用方法,包括printf()、scanf()、getchar()、putchar()。3.掌握简单的C程序的查错方法。实验内容:
一、输入程序,观察输出结果,并对语句做必要的注释。1./* e1.c */ #include
int x;
x=27
printf(“%4d,%o,%Xn”,x,x,x);}
输出结果:
解释:
2./* e2.c */ #include
char ch;
int k;
ch=’a’;k=10;
printf(“%d,%x,%o,%c”,ch,ch,ch,ch,k);
printf(“k=%%dn”,k);
} 输出结果:
解释:
3./* e4.c */ #include
float x=5/2,y=5.0/2;
printf(“x=%f,y=%fn”,x,y);} 输出结果:
解释:
二、编写程序。
1. 编程(c1.c)任意输入3个整型变量x,y,z和一个实型变量avg,计算并输出3个整数的平均值avg,从键盘输入数据并验证结果。观察运行结果。源程序:
输出结果: 解释:
2. 输入两个个整数给a,b,然后交换它们的值,源程序:
输出结果:
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验二
选择结构程序设计与循环结构程序设计
实验目的
1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
2、学会正确使用逻辑运算符和逻辑表达式;理解循环条件和循环体
3、熟练掌握if语句和switch语句;熟练使用while、do-while语句实现循环程序设计
4、熟练掌握switch语句中break语句的作用。实验内容 编程,输入一个整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3.输入输出示例:
输入一个整数:12345 12345有5位数,各位数字之和是15 提示:n表示一个整数,则n%10取个位数,n=n/10去掉个位数,组成一个新数。思考:如果要把每位数字转换为字符输出,如何编程。
3. 改错,输入2个正整数,分别将其逆向输出。输入输出示例: 123的逆向是321 321的逆向是123 void main(){
int n,m=0;
scanf(“%d”,n);
while(n>0)
{ m=m+n%10;
m=m*10;
n=n/10;}
printf(“%d的逆向是%dt”,n,m);}
4. 编程,找出200以内的所有完数,并输出其因子。一个数如恰好等于它的因子之和,这个数称为完数,如6=1+2+3,其中1、2、3为因子,6为因子和。输入输出示例: 1=1 6=1+2+3 28=1+2+4+7+14 main(){ int i,j n;printf();} 实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验三
数组
实验目的
1.熟练掌握数组的定义和初始化 2.熟练掌握使用数组元素的引用 3.继续掌握排序算法 实验内容
2.编程,输入1个正整数n(1 输入输出示例: 输入整数个数:5 输入5个整数:5 2 1 10 9 2 5 9 10 提示:注意下标的变化。 思考:如果输入的是实数,要求将绝对值最小的数与第1个数交换,绝对值最大的数与最后1个数交换,然后输出交换后的n个数,如何编程。 3.编程,输入1个正整数n(1 输入输出示例: 输入整数个数:10 输入10个整数:-11 2 8 5-3-16 9 7 6 10 排序后:2-3 5 6 7 8 9 10-11-16 5.编程,输入一个n行m列(n<=4,m<=4)的数组,先以n行m列的格式输出该数组,然后找出该数组中值最小的元素,输出该元素及其行下标和列下标。 输入输出示例: 输入数组行和列数n、m:2 3 输入2行3列的数组元素: 12-7 15-18 9 11 12.00-7.00 15.00-18.00 9.00 11.00 a[1][0]=-18.00 思考: 1)如果不从键盘输入数组元素,而是用初始化的方式给数组赋值,运行结果一样吗? 2)如何修改程序,求绝对值最大的元素? 3)将数组a的每一行均除以该行的主对角元素,然后最大值,试编制程序。 实验报告要求 char ch, filename[200]; int count = 0; FILE *fp; scanf(“%s”, filename); if((fp = fopen(filename, “r”))== NULL) { printf(“File open error!n”); exit(1); } while((ch = fgetc(fp))!= EOF) { count++; } printf(“%dn”,count); if(fclose(fp)) { printf(“File close error!n”); exit(1); } return 0;} 2.文件中数据的排序 #include int a[10], temp = 0, i = 0, j = 0, k = 0; char filename1[80], filename2[80]; FILE *fp1,*fp2; scanf(“%s”, filename1); scanf(“%s”, filename2); if((fp1 = fopen(filename1, “rb”))== NULL) { printf(“Input file open error!n”); exit(1); } if((fp2 = fopen(filename2,“wb”))== NULL) { printf(“Output file create error!n”); exit(1); } for(i = 0;i < 10;i++) { fread(&a[i], sizeof(int), 1, fp1); /* 读出数据 */ } for(i = 0;i < 9;i++) { k = i; for(j = i + 1;j < 10;j++) if(a[k] > a[j])k = j; if(k!= i) { temp = a[k]; a[k] = a[i]; a[i] = temp; } } for(i = 0;i < 10;i++) /* { fwrite(&a[i], sizeof(int), 1, fp2); } if(fclose(fp1)) { printf(“Input file close error!n”); exit(1); } if(fclose(fp2)) { printf(“Output file close error!n”); exit(1); } /*验证结果的代码,请不要改动*/ if((fp1 = fopen(filename2, “rb”))== NULL) { printf(“Result file open error!n”); exit(1); } /* 排序 */ 写入数据 */ for(i = 0;i < 10;i++) { fread(&a[i], sizeof(int), 1, fp1); /* 读出数据 */ } if(fclose(fp1)) { printf(“Result file close error!n”); exit(1); } for(i = 0;i < 9;i++) printf(“%d ”, a[i]); printf(“%dn”, a[i]); return 0;} 3 二进制数据文件/ #include int a[10], temp = 0, i = 0, j = 0, k = 0; char filename1[80], filename2[80]; FILE *fp1,*fp2; scanf(“%s”, filename1); scanf(“%s”, filename2); if((fp1 = fopen(filename1, “r”))== NULL) { printf(“Input file open error!n”); exit(1); } if((fp2 = fopen(filename2, “wb”))== NULL) { printf(“Output file open error!n”); exit(1); } for(i = 0;i < 10;i++) { fscanf(fp1, “%d”, &a[i]); fwrite(&a[i], sizeof(int), 1, fp2); } if(fclose(fp1)) { printf(“Input file close error!n”); exit(1); } if(fclose(fp2)) { printf(“Output file close error!n”); exit(1); } if((fp1 = fopen(filename2, “rb”))== NULL) { printf(“Result file open error!n”); exit(1); } for(i = 0;i < 10;i++) { fread(&a[i], sizeof(int), 1, fp1); } if(fclose(fp1)) { printf(“Result file close error!n”); exit(1); } for(i = 0;i < 9;i++) printf(“%d ”, a[i]); printf(“%dn”, a[i]); return 0;} 4.比较2个文本文件的内容 #include int i = 1, flag = 0; char filename1[80], filename2[80]; FILE *fp1, *fp2; /* 读出数据 */ scanf(“%s”, filename1); scanf(“%s”, filename2); if((fp1 = fopen(filename1, “r”))== NULL) { printf(“Input file1 open error!n”); exit(1); } if((fp2 = fopen(filename2,“r”))== NULL) { printf(“Input file2 open error!n”); exit(1); } while(!feof(fp1)) { if(fgetc(fp1)== fgetc(fp2)) i++; else { flag = 1; break; } } if(flag) printf(“%dn”, i); else printf(“is equaln”);if(fclose(fp1)) { printf(“Input file1 close error!n”); exit(1); } if(fclose(fp2)) { printf(“Input file2 close error!n”); exit(1); } 【华南农业大学C语言实验上机实验第四版参考答案】相关文章: 云南大学c语言实验08-01 华南农业大学实验报告05-12 大学计算机上机实验08-07 华南师范大学附属实验学校简介06-07 长安大学c实验报告06-14 海南大学实验自测答案05-28 大学物理实验及答案06-09 华南理工网络教育答案12-15 华南理工公共政策答案12-15 华南理工随堂练习答案12-15篇6:华南农业大学C语言实验上机实验第四版参考答案