华南农业大学C语言实验上机实验第四版参考答案

2024-05-23

华南农业大学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 main(){

} 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 int main(){

} 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 int main(){ float c,F,a,b;

} scanf(“%f”,&c);a=9*c;b=a/5;F=b+32;printf(“%f”,F);

典型测试数据(输入): 35 应输出(上机前自己分析的结果): 95

上机时遇到的问题: wu 解决办法:

实际运行结果:95

5.程序文件名为ex1_5,源程序清单如下:

#include int main(){

} 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 int main(){

} 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 void main(){

int x;

x=27

printf(“%4d,%o,%Xn”,x,x,x);}

输出结果:

解释:

2./* e2.c */ #include void main(){

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 void main(){

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的每一行均除以该行的主对角元素,然后最大值,试编制程序。

实验报告要求

篇6:华南农业大学C语言实验上机实验第四版参考答案

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 #include int main(void){

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 #include int main(void){

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 #include int main(void){

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);

}

上一篇:小学语文三年级上册第一单元的测试卷下一篇:如何对小学生进行感恩教育