《C语言程序设计》(江宝钏著)实验三答案

时间:2019-05-13 09:27:50下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《《C语言程序设计》(江宝钏著)实验三答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《《C语言程序设计》(江宝钏著)实验三答案》。

第一篇:《C语言程序设计》(江宝钏著)实验三答案

3.5 实验三 选择结构程序设计

一、实验目的与要求

1.理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。

2.掌握利用if结构实现选择结构的方法。

3.掌握利用switch结构实现多分支选择结构。

4. 结合程序掌握一些简单的算法,学习调试程序

5. 实验4学时

二、实验内容

1.程序改错题

改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x)的值(保留1位小数)。1

x(x100)

yf(x)

x(x100)输入输出示例1(改正后程序的运行结果)

Enter x:f(100.00)= 0.1

输入输出示例2(改正后程序的运行结果)

Enter x:f(23.00)= 23.0

源程序(有错误的程序)

#include

#include

void main(void)

{

double x;

printf(“Enterx: n”);

scanf(“=%f”, x);

if(x = 100){

y = 1/sqrt(x)

}

else(x!= 100){

y = x;

}

printf(“f(%.2f)= %.1fn”,x,y);

}

答:

#include

#include

void main(void)

{

double x,y;

printf(“Enterx:n”);

scanf(“%lf”,&x);

if(x=100)

y = 1/sqrt(x);

else

y= x;

printf(“f(%.2lf)=%.1lfn”,x,y);

}

2.一般编程题

编程题1

输入任意三个整数a,b,c,求3个数中的最大值和最小值。

答:

#include

void main()

{

int a,b,c;

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

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

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;

printf(“最小值为:%dn”,a);

printf(“最大值为:%dn”,c);

}

编程题2

输入x,计算并输出下面分段函数f(x)的值(保留2位小数)。请调用sqrt函数求平方根,调用pow函数求幂。

2(x1)2x1

x(x0)

f(x)

x(x0)

输入输出示例(共运行3次)

Enter x:f(10.00)=3.16

Enter xf(-0.50)=-2.75

Enter x:f(0.00)=0.00

成本

答:

#include

#include

void main()

{

编程题3 double x,y;printf(“Enterx:n”);scanf(“%lf”,&x);if(x<0)y=pow(1+x,2)+2*x+1/x;else y=sqrt(x);printf(“f(%.2f)=%.2fn”,x,y);}

有一函数:

x(-5

y=x-1(x=0)

x+1(0

编写程序,要求用scanf函数输入x的值,输出y的值。

具体要求如下:

(1)用if语句实现分支,自变量和函数值均用实数类型。

(2)自变量用scanf函数输入,给一些输入提示。

(3)运行程序,输入x的值(分别为-5

答:

#include

#include

void main()

{

double x,y;

printf(“Enterx:n”);

scanf(“%lf”,&x);

if(x>0&&x<10)

y=x+1;

else if(x==0)

y=x-1;

else if(x>-5&&x<0)

y=x;

printf(“f(%.2f)=%.2fn”,x,y);

}

编程题4

某服装店经营成套服装的买卖,同时也允许单件销售。若一次购买不少于70套,则每套90元;若不足70套,则每套110元;只买上衣每件70元;只买裤子每条60元。请编写程序假设用户买入x件上衣和y条裤子,请编写程序计算相应的应付款是多少?

答:

#include

#include

void main()

{

double x,y,z;

printf(“输入上衣x件,裤子y件:n”);

scanf(“%lf%lf”,&x,&y);

if(x>=y&&y>=70)

z=90*y+70*(x-y);

else if(y>=x&&x>=70)

z=90*x+60*(y-x);

else if(x>y&&y<70)

z=110*y+70*(x-y);

else if(y>x&&x<70)

z=110*x+60*y-x;

printf(“应付:%.3f(元)n”,z);

}

编程题5

编写程序实现:输入一个整数,判断它能否被3、5、7整除,同时输出如下信息。

(1)能同时被3、5、7整除;

(2)能同时被其中的哪二个数整除;

(3)能被其中的哪一个数整除;

(4)不能被3、5、7任一个数整除。

答:

#include

void main()

{

int x,a,b,c,d;

scanf(“%d”,&x);

a=x%3;

} a=a/a*100;b=x%5;b=b/b*10;c=x%7;d=a+b+c;switch(d){ case 100:printf(“能被5,7整除n”);case 10 :printf(“能被3,7整除n”);case 1:printf(“能被3,5整除n”);case 110:printf(“能被7整除n”);case 101:printf(“能被5整除n”);case 11 :printf(“能被3整除n”);case 111:printf(“不能被3,5,7整除n”);case 0:printf(“能被3,5,7整除n”);}

3.较难编程题

编程题1

请用switch语句编程计算员工每月的薪水。(exph3_1.cpp)

已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与提成的关系如下(计量单位:元):

profit≤1000没有提成;

1000<profit≤2000提成10%;

2000<profit≤5000提成15%;

5000<profit≤10000提成20%;

10000<profit提成25%。

分析:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、……),如果将利润profit整除1000,则相邻两个区间的重叠。为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可:

profit≤1000对应0

1000<profit≤2000对应1

2000<profit≤5000对应2、3、4

5000<profit≤10000对应5、6、7、8、9

10000<profit对应10、11、12、……

答:

#include

void main()

{

double p,m,t,q;

int n;

printf(“某月所接工程利润为:”);printf(“nn”);scanf(“%lf”,&p);m=p-1;n=(int)m/1000;switch(n){ case 0 :printf(“n薪水为:500n”);break;case 1 :q=500+p*0.1;printf(“n薪水为:%.2lfn”,q);break;case 2 : case 3 : case 4 :q=500+p*0.15;printf(“n薪水为:%.2lfn”,q);break;case 5 : case 6 : case 7 : case 8 :

case 9 :q=500+p*0.2;printf(“n薪水为:%.2lfn”,q);break;default:q=500+p*0.25;printf(“n薪水为:%.2lfn”,q);

}

}

编程题2

编写程序实现如下功能:输入二个运算数(exp1,exp2)和一个运算符(op),计算表达式exp1 op exp2的值,其中OP可以为+、-、*、/、%五个符号中的任一种(提示:用switch语句实现)。

答:

#include

void main()

{

float exp1,exp2,x;

char op;

printf(“输入:”);

scanf(“%f%c%f”,&exp1,&op,&exp2);

switch(op)

{

case '+':x=exp1+exp2;break;

case '-':x=exp1-exp2;break;

case '*':x=exp1*exp2;break;

case '/':x=exp1/exp2;break;

}

printf(“nnn%5.2f%c%5.2f=%5.2fnnn”,exp1,op,exp2,x);}

+

第二篇:C语言程序设计实验四(本站推荐)

C语言程序设计实验

(四)[实验1] scanf()、printf()函数的使用。

1.实验题目

输入1个学生学号和4门课程成绩,输出这个学生的学号、4门课程成绩和平均成绩。

2.实验要求

(1)按表格的形式输出,以行内输出一个学生的信息。

(2)学号用长整型,各科成绩用单精度型。

3.实验目标

(1)掌握实现人机对话形式的方法,scanf()输入。

(2)体会根据需要控制输出格式的方法,printf()输出。

4.实验指导

利用格式的数据宽度控制数据的对位输出。输出如下格式:

The number and score of a student is:

|---|

|number | score1 | score2 | score3 | sco re4 | average |

|---|

|10011| 67.5|88.0 |93.5 |78.0|81.75 |

|---|

[实验2] getchar()、putchar()函数的使用

1.实验题目

用getchar()函数读入a~v之间的一个字母,用putchar()函数输出一个5行5列的矩阵,该矩阵第一行为读入的字母,下一行为紧跟该字母后的字母,依此类推。如输入a,则输出的矩阵为:

aaaaa

bbbbb

ccccc

ddddd

eeeee

2.实验要求

(1)运用getchar()进行字符输入。

(2)运用putchar()进行字符输出。

3.实验目标

(1)体会根据需要控制输出格式的方法。

[实验3] 3.6 下面程序运行时在键盘上如何输入?如果a=3,b=4,x=8.5,y=71.82,c1=’A’,c2=’a’,请写出对应每个scanf函数的输入情况。

main()

{ int a,b;float x,y;char c1,c2;

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

scanf(“□%f %e”,&x,&y);

scanf(“□%c %c”,&c1,&c2);

}

3.7编一程序,从键盘输入一个圆半径值,求圆周长、圆面积、圆球表面积、圆球体积。输出结果时,要求有文字说明,保留2位小数。

提示:设圆半径为r,则圆周长=2πr,圆面积=πr2,圆球表面积=4πr2,圆球体积= 4πr3/3。

第三篇:C语言程序设计实验安排

C语言实验指导

实验一 顺序结构程序设计(2学时)

一、实验目的熟悉在VC运行环境下,编辑调试C语言程序的一般步骤。掌握顺序结构程序设计的基本思想和基本方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴ 程序功能描述。

⑵ 程序版本号、创作日期。

⑶ 作者信息描述:班级、学号、姓名。

⑷ 问题分析描述。

⑸ 算法设计描述。

⑹ 关键语句注释说明。

⑺ 调试运行过程中出现的错误及改正方法。

⑻ 输入数据样例。

⑼ 输出数据样例。

三、实验内容

以下两题,任选其一解答。

你知道淄博到北京的地面距离是多少千米吗,淄博到纽约的地面距离又是多少千米呢?说不上来了吧。还是让我们编一个程序来计算一下吧。

1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。

输入数据样例:例如,欲求北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50

参考测试数据:

输入:0 0 180 输出:20015.08

输入:30 0 90 输出:8397.7

2输入:60 0 45 输出:2453.20

2.地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。

提示:球面上两点之间的最短距离,等于过这两点以球心为圆心的圆上,这两点之间劣弧的长度。(即这两点与球心之间的连线构成的夹角所对球面劣弧的长度)。

建议你自己一步步推导出公式,而不要照搬网上的现成公式。

四、常见问题

疑问1:这分明是两道数学题啊,能否将数学公式提供给我们呢,我们的主要任务不是编写程序吗?

答:建立数学模型也是编程序的一部分。学会分析解决现实中遇到的问题,是我们学习的重要目标。

疑问2:这个问题好像属于球面几何的范畴,用平面几何可以求解吗?

答:这个问题的确涉及到球面几何,但是也的确可以利用投影以及平面几何方法来求解。

实验二 选择结构程序设计(2学时)

一、实验目的

掌握选择结构程序设计的一般方法及选择结构程序的调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说:可以查万年历啊。那么,不查万年历你能计算出来吗?

以下两题,任选其一解答。

1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几。

2.编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。

四、常见问题

疑问1:闰年的规律是不是四年一闰?

答:四年一闰是儒略历(儒略也就是凯撒大帝)的置闰规则。我们现在使用的是格里高利历,置闰规则是每400年97闰。

疑问2:公元1年1月1日是星期几呢?

答:星期一。

疑问3:据说从儒略历改为格里高利历时,将1582年10月4日的下一天定为格里高利历的10月15日,中间销去了10天,这会不会影响星期几的计算?

答:这个调整是对儒略历误差的纠正,并不会影响总天数和星期几的计算。

疑问4:这里计算总天数,好像要用到循环程序吧?

答:其实根据闰年的置闰规则,不使用循环也可以计算出来总天数。当然,你想使用循环编写该程序也是可以的。

实验三 循环结构程序设计(2学时)

一、实验目的掌握循环结构程序设计的一般方法及循环结构程序的调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。

2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。

四、常见问题

疑问1:等额本息还款法每个月的还款额怎么计算,应该有个公式吧,要不然怎么计算出来每个月应还的利息与本金?

答:的确有一个计算公式。当然你可以自己推导出来(这样你会很有成就感!),要不然就从网上搜索出来。

实验四 循环程序综合应用(4学时)

一、实验目的:

掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。

要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下:

2012年日历

==========

9月

---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30-------------------------

2.编程序实现如下功能:输入任意一个年份,按以下格式输出该年份全年的公历日历。要求由程序计算出来每个月份的1日是星期几,并用循环控制打印。

四、常见问题

疑问1:如何控制某个月1日的打印位置?

答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。

疑问2:如何控制每周和每月的打印换行?

答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的天数控制每月的打印换行。

实验五 字符串处理综合应用(4学时)

一、实验目的

掌握字符串处理的一般方法及字符串处理应用程序的调试方法,能够综合运用选择、循环结构和数组、指针解决一般难度的实际应用问题。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1.编程实现,输入一个整数的小写金额值(即不考虑角和分),转化为大写金额值并输出。先实现基本功能,如输入1002300,可以输出“壹佰零拾零万贰仟叁佰零拾零元整”。

2.编程实现,输入一个小写金额值,转化为大写金额值输出。要求实现相对完善的功能,如输入1002300.90,应该输出“壹佰万贰仟叁佰元零玖角整”。

四、常见问题

疑问1:如何才能分离出整数中的每一位数字?

答:可以利用整数的求余数和除法运算实现数字的分离,同时将分离出的数字存入到一个事先定义好的数组中,每个数组元素只存储一位数字。

疑问2:若不能确定整数的实际位数,如何控制分离过程?

答:可以通过循环控制数字的分离过程,每循环一次分离出来当前的最末一位,然后去掉最末一位,直至分离出所有的位。

疑问3:如何控制给某位数字添加合适的数量单位,如万、仟、佰、拾、元?

答:可以根据该数字在原小写数值中的位置进行控制,如第0位单位为“元”,第1位单位为“拾”,依此类推。

实验六 文件应用程序设计(2学时)

一、实验目的掌握文件应用程序设计的一般方法及其调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。

2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。

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

电子科技大学 计算机 学院

标 准 实 验 报 告

(实验)课程名称

C语言程序设计

电子科技大学教务处制表

电 子 科 技 大 学 实

学生姓名:

学 号:

指导教师:刘 勇 实验地点: 计算机学院软件306室

实验日期:

****年**月**日

一、实验室名称:

软件实验室

二、实验项目名称:函数的应用及预处理

三、实验学时:2

四、实验原理:

使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。

五、实验目的

1. 掌握C语言中定义函数的方法; 2. 掌握函数传值调用的方法; 3. 掌握函数传址调用的方法; 4. 掌握递归函数的设计方法; 5. 掌握命令行参数的使用方法;

6. 掌握函数在不同文件中的编译、链接方法。

六、实验内容

编程实验,完成以下上机内容,调试运行程序并完成报告 1)、教材第七章习题7.4;

2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出;

3)、教材第七章习题7.11; 4)、教材第七章习题7.15; 5)、教材第七章习题7.24; 6)、求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用);

七、实验器材(设备、元器件):

pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。

软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。

八、实验步骤: 实验编程与运行结果

⑴ 编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。

程序文件名为7_4.c,源程序清单如下:

#include lcd(int a,int b){ int temp,num1,num2;num1=a;num2=b;while(num2!=0){ temp=num1%num2;num1=num2;num2=temp;} return(a*b/num1);} main(){ int t,x,y;printf(“Please input two integers:”);scanf(“%d,%d”,&x,&y);if(x>y){t=x;x=y;y=t;} printf(“lcd(%d,%d)=%dn”,x,y,lcd(x,y));}

运行结果:

⑵ 编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。

程序文件名为testf3.c,源程序清单如下:

main(){ int i,j,a[7];int temp;clrscr();for(i=1;i<7;i++){ printf(“nInput a[%d]=”,i);scanf(“%d”,&a[i]);} for(i=1;i<6;i++)for(j=1;j<7;j++){ if(a[j]

temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } for(i=1;i<7;i++){ printf(“n%5d”,a[i]);} }_

运行结果:

编写一个通过函数调用把输入的小写字符串变为大写字符串的程序。

程序文件名为7_11.c,源程序清单如下:

#include lowch_to_upch(char *str){ while(*str!=''){ if(*str>='a'&&*str<='z')*str-=0x20;str++;} } main(){ char *str;printf(“Please input a string: ”);gets(str);lowch_to_upch(str);puts(str);}_

运行结果:

⑷ 编写一个求三个整数中最小值整数的函数,主程序要求三个整数由命令行参数输入,调用该函数并输出结果。

程序文件名为7_15.c,源程序清单如下:

#include #include

#include int search_min(int a,int b,int c){ if(a

运行结果:

⑸ 编写一个程序,先定义一个将字符大写、小写和数字进行分类的带参数宏,然后对从键盘输入的一系列字符进行分类计数,并输出计数的结果,程序遇到字符‘*’结束。

程序文件名为7_24.c,源程序清单如下:

#include #define INUP(c)c>='A'&&c<='Z' #define INLO(c)c>='a'&&c<='z' #define INNU(c)c>='0'&&c<='9' #define ADD(a)a++ #define DV(c,x,y,z)if(INUP(c))ADD(x);if(INLO(c))ADD(y);if(INNU(c))ADD(z);main(){ int count_low=0,count_up=0,count_num=0;char ch;printf(“Input a string(end sign is '*'): n”);ch=getchar();while(ch!='*'){ DV(ch,count_up,count_low,count_num);ch=getchar();} printf(“count_low=%dn”,count_low);printf(“count_up=%dn”,count_up);printf(“count_num=%dn”,count_num);}_

运行结果:

⑹ 求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用)

程序文件名为testf4.c,源程序清单如下:

void move(char x,char y){ printf(“%c------%c> ”,x,y);} void hanoi(int n,char one,char two,char three){ if(n==1)move(one,three);else { hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);} } main(){ int m;printf(“Input the number of diskes: ”);scanf(“%d”,&m);printf(“The step to moving %3d diskes: n”,m);hanoi(m,'A','B','C');}_

运行结果:

九、总结及心得体会:

十、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

第五篇:《C语言程序设计》实验四

电子科技大学 计算机 学院

标 准 实 验 报 告

(实验)课程名称

C语言程序设计

电子科技大学教务处制表

电 子 科 技 大 学 实

学生姓名:

学 号:

指导教师:王瑞锦 实验地点:

实验日期:

****年**月**日

一、实验室名称:

软件实验室

二、实验项目名称:函数的应用及预处理

三、实验学时:2

四、实验原理:

使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。

五、实验目的

1. 掌握C语言中定义函数的方法; 2. 掌握函数传值调用的方法; 3. 掌握函数传址调用的方法; 4. 掌握递归函数的设计方法; 5. 掌握命令行参数的使用方法;

6. 掌握函数在不同文件中的编译、链接方法。

六、实验内容

编程实验,完成以下上机内容,调试运行程序并完成报告 1)、教材第七章习题7.4;

2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出;

3)、教材第七章习题7.11; 4)、教材第七章习题7.15; 5)、教材第七章习题7.24; 6)、求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用);

七、实验器材(设备、元器件):

pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。

软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。

八、实验步骤: 实验编程与运行结果

⑴ 编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。

程序文件名为7_4.c,源程序清单如下:

#include lcd(int a,int b){ int temp,num1,num2;num1=a;num2=b;while(num2!=0){ temp=num1%num2;num1=num2;num2=temp;} return(a*b/num1);} main(){ int t,x,y;printf(“Please input two integers:”);scanf(“%d,%d”,&x,&y);if(x>y){t=x;x=y;y=t;} printf(“lcd(%d,%d)=%dn”,x,y,lcd(x,y));}

运行结果:

⑵ 编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。

程序文件名为testf3.c,源程序清单如下:

main(){ int i,j,a[7];int temp;clrscr();for(i=1;i<7;i++){ printf(“nInput a[%d]=”,i);scanf(“%d”,&a[i]);} for(i=1;i<6;i++)for(j=1;j<7;j++){ if(a[j]

temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } for(i=1;i<7;i++){ printf(“n%5d”,a[i]);} }_

运行结果:

编写一个通过函数调用把输入的小写字符串变为大写字符串的程序。

程序文件名为7_11.c,源程序清单如下:

#include lowch_to_upch(char *str){ while(*str!=''){ if(*str>='a'&&*str<='z')*str-=0x20;str++;} } main(){ char *str;printf(“Please input a string: ”);gets(str);lowch_to_upch(str);puts(str);}_

运行结果:

⑷ 编写一个求三个整数中最小值整数的函数,主程序要求三个整数由命令行参数输入,调用该函数并输出结果。

程序文件名为7_15.c,源程序清单如下:

#include #include

#include int search_min(int a,int b,int c){ if(a

运行结果:

⑸ 编写一个程序,先定义一个将字符大写、小写和数字进行分类的带参数宏,然后对从键盘输入的一系列字符进行分类计数,并输出计数的结果,程序遇到字符‘*’结束。

程序文件名为7_24.c,源程序清单如下:

#include #define INUP(c)c>='A'&&c<='Z' #define INLO(c)c>='a'&&c<='z' #define INNU(c)c>='0'&&c<='9' #define ADD(a)a++ #define DV(c,x,y,z)if(INUP(c))ADD(x);if(INLO(c))ADD(y);if(INNU(c))ADD(z);main(){ int count_low=0,count_up=0,count_num=0;char ch;printf(“Input a string(end sign is '*'): n”);ch=getchar();while(ch!='*'){ DV(ch,count_up,count_low,count_num);ch=getchar();} printf(“count_low=%dn”,count_low);printf(“count_up=%dn”,count_up);printf(“count_num=%dn”,count_num);}_

运行结果:

⑹ 求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用)

程序文件名为testf4.c,源程序清单如下:

void move(char x,char y){ printf(“%c------%c> ”,x,y);} void hanoi(int n,char one,char two,char three){ if(n==1)move(one,three);else { hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);} } main(){ int m;printf(“Input the number of diskes: ”);scanf(“%d”,&m);printf(“The step to moving %3d diskes: n”,m);hanoi(m,'A','B','C');}_

运行结果:

九、总结及心得体会:

十、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字: 电子科技大学 计算机 学院

标 准 实 验 报 告

(实验)课程名称 C语言程序设计

电子科技大学教务处制表

电 子 科 技 大 学

学生姓名:

学 号:

指导教师:王瑞锦

实验地点:

实验日期:

****年**月**日

一、实验室名称:

软件实验室

二、实验项目名称:指针

三、实验学时:2

四、实验原理:

使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。

指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。*和&两个地方要注意:

在程序声明变量的时候的*,只是表明“它是一个整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;

在C++程序声明变量的时候的&,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。

这点不要和(*)声明符,(&)操作符混淆。双重指针(指向指针的指针)

指针数组:就是一个整数数组,那个数组的各个元素都是整数,指向某个内存地址。

数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数。

指向函数的指针:从二进制角度考虑,数组名是该数组数据段首地址,函数名就是该代码段的首地址,可以用“int *fun()”。在二进制层面,代码段和数据段什么区别?

五、实验目的

1. 掌握指针数组; 2. 掌握数组指针; 3. 掌握指向函数的指针;

六、实验内容

编程实验,完成以下上机内容,调试运行程序并完成报告

1、输入三个整数或者三个字符,按由大到小的顺序输出;

2、* 输入10个整数,将其中最小的数和第一个数对换,把最大的数与最后一个数对换。编写三个程序,1、输入十个数,2.进行处理,3输出十个数*/

3、*有n个人围城一圈。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那个人

*/ 4/*输入一行文字,找出其中大写字母,小写字母,空格,数字以其他的字符各有多少?*/ 5/*将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从坐到右,从上到下顺序依次从小到大存放),编写一个函数实现之,用main函数调用 */

6、/*在主函数中输入10个等长的字符串。用另一个函数对他们排序。然后在主函数输出这个10个已排好序的字符串 */

7、/*有一个班的4个学生,有5门课程。

1、求第一门课的平均分;

2、找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均分

3、找出平均分在90分以上或全部课程成绩在85分以上的学生。分别编写三个函数来实现以上三个要求*/

七、实验器材(设备、元器件):

pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。

软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。

八、实验步骤: 实验编程与运行结果

题1 输入三个整数或者三个字符,按由大到小的顺序输出

#include void main(){ void swap(int *p1,int *p2);int n1,n2,n3;int *p1,*p2,*p3;printf(“input three interger n1,n2,n3”);scanf(“%d,%d,%d”,&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2)swap(p1,p2);

if(n1>n3)swap(p1,p3);

if(n2>n3)swap(p2,p3);

printf(“Now ,the order is:%d,%d,%dn”,n1,n2,n3);}

void swap(int *p1,int *p2)

{

int temp;temp=*p1;*p1=*p2;*p2=temp;

#include #include void main(){ void swap(char *,char *);char str1[20],str2[20],str3[20];printf(“input three line:n”);gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0)

swap(str1,str2);if(strcmp(str1,str3)>0)

swap(str1,str3);if(strcmp(str2,str3)>0)

swap(str2,str3);printf(“Now,the order is:n”);printf(“%sn%sn%sn”,str1,str2,str3);} void swap(char *p1,char *p2){

char p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}

题2./* 输入10个整数,将其中最小的数和第一个数对换,把最大的数与最后一个数对换。编写三个程序,1、输入十个数,2.进行处理,3输出十个数*/ #include void main(){ void input(int *);void max_min_value(int *);void output(int *);int number[10];

input(number);max_min_value(number);output(number);}

void input(int *number)

{

int i;

printf(“input 10 numbers:”);

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

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

}

void max_min_value(int *number)

{

int *max,*min,*p,temp;max=min=number;for(p=number+1;p

if(*p>*max)

{

max=p;

temp=number[9];

number[9]=*max;

*max=temp;

}

else if(*p<*min)

{ min=p;

temp=number[0];

number[0]=*min;

*min=temp;

}

}

void output(int *number)

{

int *p;

printf(“Now,they are: ”);

for(p=number;p

printf(“%d

”,*p);

printf(“n”);

}

题3*有n个人围城一圈。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那个人

*/ #include void main(){

int i,k,m,n,num[50],*p;

printf(“input number of person: n= ”);

scanf(“%d”,&n);

p=num;

for(i=0;i

*(p+1)=i+1;

//以1至n为序给每人编号

i=0;

k=0;

m=0;

while(m

//当退出人数比n-1少时,执行循环体

{

if(*(p+i)!=0){ k++;} if(k==3){

*(p+i)=0;

k=0;

m++;} i++;if(i==n)i=0;

//报数到尾后,i恢复为0

}

while(*p==0)p++;printf(“The last one is N0.%dn”,*p);}

题4/*输入一行文字,找出其中大写字母,小写字母,空格,数字以其他的字符各有多少?*/ #include void main(){

int upper=0,lower=0,digit=0,space=0,other=0,i=0;

char *p,s[20];

printf(“input string: ”);

while((s[i]=getchar())!='n')i++;

p=&s[0];

while(*p!='n')

{

if(('A'<=*p)&&(*p<='Z'))++upper;

else if(('a'<=*p)&&(*p<='z'))++lower;

else if(*p==' ')++space;

else if((*p<='9')&&(*p>='0'))++digit;else ++other;p++;

}

printf(“upper case:%d

lower case: %d

”, upper,lower);

printf(“space:%d

digit:%d other: %dn,”,space,digit,other);}

5/*将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从坐到右,从上到下顺序依次从小到大存放),编写一个函数实现之,用main函数调用 */ #include void main(){

void change(int *);

int a[5][5],*p,i,j;

printf(“input martix: n”);

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

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

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

}

p=&a[0][0];

change(p);

printf(“Now ,martix: n”);

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

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

printf(“%d ”,&a[i][j]);

printf(“n”);

} }

void change(int *p)

//交换函数的实现

{

int i,j,temp;//

int pmax,pmin;

int *pmax, *pmin;

pmax=p;

pmin=p;

//

pmax=a[0][0];//

pmin=a[0][0];

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

//寻找最大值和最小值

{

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

{

if(*pmax<*(p+5*i+j))

//

if(pmax

pmax=p+5*i+j;//

pmax=a[i][j];

if(*pmin>*(p+5*i+j))//

if(pmin)>a[i][j]

pmin=p+5*i+j;//

pmin=a[i][j];

}

}

temp=*(p+12);

//最大值换给中心元素

*(p+12)=*pmax;

*pmax=temp;

temp=*p;

*p=*pmin;

*pmin=temp;

pmin=p+1;

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

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

{

if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

}

temp=*pmin;

*pmin=*(p+4);

*(p+4)=temp;

pmin=p+1;

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

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

{

if(((p+5*i+j)!=(p+4)&&(p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

}

temp=*pmin;

*pmin=*(p+20);

*(p+20)=temp;

pmin=p+1;

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

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

{

if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

}

temp=*pmin;

*pmin=*(p+24);

*(p+24)=temp;

}

6、/*在主函数中输入10个等长的字符串。用另一个函数对他们排序。然后在主函数输出这个10个已排好序的字符串 */ #include #include void main(){

void sort(char(*p)[6]);

int i;

char str[10][6];

char(*p)[6];

printf(“input 10 strings: n”);

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

scanf(“%s”,str[i]);

p=str;

sort(p);

//调用sort 函数

printf(“Now,the sequence is: n”);

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

printf(“%sn”,str[i]);}

void sort(char(*s)[6])//指向由6个元素组成的一维数组的指针

{

int i,j;

char temp[6],*t=temp;

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

for(j=0;j<9-i;j++)

{

if(strcmp(s[j],s[j+1]>0))

{

strcpy(t,s[j]);

strcpy(s[j],s[j+1]);

strcpy(s[j+1],t);

}

} }

题15/*有一个班的4个学生,有5门课程。

1、求第一门课的平均分;

2、找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均分

3、找出平均分在90分以上或全部课程成绩在85分以上的学生。分别编写三个函数来实现以上三个要求*/ # include void main(){ void avsco(float *,float *);void avcour1(char(*)[10],float *);void fali2(char course[5][10], int num[], float *pscor,float aver[4]);void good(char course[5][10], int num[4],float *pscor, float aver[4]);int i,j,*pnum,num[4];float score[4][5],aver[4],*pscore,*paver;char course[5][10],(*pcourse)[10];printf(“input course:n”);pcourse=course;for(i=0;i<5;i++)

scanf(“%s”,course[i]);printf(“input No.and scorse:n”);printf(“No.”);for(i=0;i<5;i++)

printf(“,%s”,course[i]);printf(“n”);pscore=&score[0][0];pnum=&num[0];for(i=0;i<4;i++){

scanf(“%d”,pnum+i);

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

scanf(“%f”,pscore+5*i+j);} paver=&aver[0];printf(“nn”);avsco(pscore,paver);avcour1(pcourse,pscore);printf(“nn”);fali2(pcourse,pnum,pscore,paver);

// printf(“nn”);good(pcourse,pnum,pscore,paver);

// } void avsor(float *pscore,float *paver)// 求每个学生的平均成绩的函数 { int i,j;float sum ,average;for(i=0;i<4;i++){

sum=0.0;

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

sum=sum+(*(pscore+5*i+j));

average=sum/5;

*(paver+i)=average;} }

void avcour1(char(*pcourse)[10],float *pscore)//求第一课程的平均成绩的函数 { int i;float sum,average1;sum=0.0;for(i=0;i<4;i++){

sum=sum+(*(pscore+5*i));

average1=sum/4;

printf(“course1: %s,average course:%7.2fn”,*pcourse, average1);

} } void fali2(char course[5][10],int num[],float *pscore,float aver[4])//找两门以上的课程不及格的学生的函数 { int i,j,k,label;printf(“

=============studet who is fail======================= printf(”No.“);for(i=0;i<5;i++)printf(”%11s“,course[i]);printf(”

averagen“);for(i=0;i<4;i++){

label=0;

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

if(*(pscore+5*i+j)<60.0)

{label++;}

if(label>=2)

{ printf(”%d“,num[i]);

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

printf(”%11.2f“,*(pscore+5*i+j));

printf(”%11.2fn“,aver[i]);

}

} }

void good(char course[5][10],int num[4],float *pscore,float aver[4])//找成绩优秀学生(各门85以上或平均90分以上)的函数 { int i,j,k,n;printf(”

=========students whose score is good ==================n“);

printf(”No.“);for(i=0;i<5;i++)

printf(”%11s“,course[i]);

n”);

printf(“

averagen”);for(i=0;i<4;i++){

n=0;

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

if(*(pscore+5*i+j)>85.0)n++;

if((n==5)||(aver[i])>=90)

{

printf(“%d”,num[i]);

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

printf(“%11.2f”,*(pscore+5*i+j));

printf(“%11.2fn”,aver[i]);

} } }

九、总结及心得体会:

十、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

下载《C语言程序设计》(江宝钏著)实验三答案word格式文档
下载《C语言程序设计》(江宝钏著)实验三答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

    C语言程序设计实验二

    C语言程序设计实验(二)[实验1] 1.实验题目 下列各题的算法用传统流程图及N-S流程图两种方式表示: (1)输出图形(顺序结构) ★★★★★★★★ ★★★★★★★★ ★★★★★★★★ ★★......

    C语言程序设计实验九

    C语言程序设计实验九——字符数组 【实验题目1】 写几个函数:(1)输入10个职工的姓名和职工号; (2)按职工号由小到大排序,姓名顺序也随之调整; (3)要求输入一个职工号,找出该职工的姓名......

    C语言程序设计考试题答案

    1、 已知int i, x[3][4];则不能将x[1][1]的值赋给变量i的语句是______ (分数:2 分) A. i=*(*(x+1)) B. i=x[1][1] C. i=*(*(x+1)) D. i=*(x[1]+1) 标准答案是:A。 2、 当c的值不......

    《C语言程序设计》2011-2012-2B答案

    河南理工大学学期 《C语言程序设计》笔试试卷(B卷) 一、单项选择题(每题1分,共50分) ,在每小题列出的四个选项中只有一个选项是符合题目要求的,请在答案卡上将正确答案所对应选项......

    《C语言程序设计》2011-2012-2A答案

    河南理工大学学期 《C语言程序设计》笔试试卷(A卷) 一、单项选择题(每题1分,共50分) 1.B2.A3.D4.A5.C6.C7.C8.C9.C10.A 11.B12.B13.D14.D15.D16.C17.C18.C19.D20.A 21.C22.C23.......

    C语言程序设计实验指导及报告

    太原理工大学现代科技学院 C语言程序设计课程 实验报告 专业班级学号姓名指导教师C语言程序设计 实验指导及报告 实验说明: 1、共4次实验,每次实验完成1个内容。 2、实验报告......

    《高级语言程序设计C》实验教学大纲

    《高级语言程序设计C》实验教学大纲 课程编号:1021742 总学时:56学时 适用专业:非计算机理工科各专业 总实验学时:24 实验次数: 12 次 应开实验个数:13 已开实验个数:13 实验开出......

    《C语言程序设计》实验教学大纲1

    《C语言程序设计实验》教学大纲 一、本大纲编写的依据是《C语言程序设计》教学大纲。实验总学时:32学时学分:1学分 二、适用专业:全院C语言公共课 三、考核方式及评定标准: 实验......