C语言程序设计实验指导书课后答案_第1页
C语言程序设计实验指导书课后答案_第2页
C语言程序设计实验指导书课后答案_第3页
C语言程序设计实验指导书课后答案_第4页
C语言程序设计实验指导书课后答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一(1)编程求37+29的值,实习VC环境。#include void main()int a,b,sum; a=37; b=29; sum=a+b; printf(sum=%d,sum);( 2) 从键盘输入三个整数,求出最大数并输出。 #include void main()int a,b,c,y;int max(int x,int y); printf(input a,b,and c:); scanf(%d,%d,%d,&a,&b,&c); y=max(a,b); y=max(y,c);printf(nmax=%dn,y); int max(int x,int y) int z; i

2、f(xy) z=x; else z=y; return(z);( 3) 通过上机实践,运行下列程序并分析输出结果。A 程序代码 #include void main() char ch=a; printf(%c 对应的 ASCII 码是: %dn,ch,ch); 程序输出结果:a对应的ASC|码是:97B 程序代码#includevoid main()int a=168; float b=; float x=,y; printf(a=%5dn,a); printf(a=%-5dn,a); printf(b=%n,b); printf(b=%en,b); y=(int)(x*100+/; pri

3、ntf(x=f,y=%fn,x,y);程序输出结果: a=168 a=168 b=+002 x=f,y=C程序代码#include void main() int a=168;printf(十进制数d对应的八进制数是on,a,a);printf(十进制数d对应的十六进制数是xn,a,a); 程序输出结果: 十进制数 168 对应的八进制数是 250 十进制数 168 对应的十六进制数是 a8实验二顺序结构已知a=, b=, c=,计算s=J -4ac的结果并输出#in clude void mai n() float a,b,c,s;a=;b=;c=; s=b*b-4*a*c; prin tf

4、(s 的值是 %fn,s);输入某学生的三个科目的期末考试成绩,计算出该学生的成绩总分和平均分#in clude void mai n()int math,e nglish,c_program;float sum average;prin tf(i nput math,e nglish,c_program:);sca nf(%d,%d,%d,&math,&en glish,&c_program); sum=math+e nglish+c_program;average=sum/3;prin tf(sum=%.0f,average=%.5f,sum,average);输入圆的半径,计算圆的面积,

5、设圆周率为#in cludeint mai n()float r,s;printf(请输入半径:);sca nf(%f,&r);s=*r*r;printf(圆的面积为 %.6f,s);输入一个两位数,将其个位数和十位数互换后变成一个新的数,输出这个数#include int main(void)int n,a,b;printf(input n:);scanf(%d,&n);b=n%10;a=n/10;n=b*10+a;printf(%dn,n);return 0;输入两个数a和b,将两数的值互换后输出新值。#include void main()int x,y,t; scanf(%d%d,&x

6、,&y); t=x;x=y;y=t;printf(x=%d,y=%dn,x,y);简单分支结构输入两个整数,求出其中的较小值输出#includeint main()int a,b,min;printf( 请输入 a,b:n); scanf(%d,%d,&a,&b); if (a +2xx=2#in elude int main(v oid) double x,y; sea nf(%lf, &x); if(x2) y=x*x+2*x; elsey=2*x-1;prin tf(%.6f,y); return 0;输入两个整数并判断两数是否相等,输出相应结论#in eludeint mai n()i

7、nt a,b;printf(请输入两个整数:n);scan f(%d,%d,&a,&b);if(a=b)printf(a 等于 b);elseprintf(a不等于 b);return 0;2.2.4输入一个整数,若为负数,求出它的平方;若为正数,求出它的立方,并 输出结果。#in eludevoid mai n()printf( 请输入一个整数 :);double x,y;scanf(%lf,&x);if(x0)y=x*x;elsey=x*x*x;printf(y=f(%f)=%fn,x,y);2.2.5 输入三个整数, 用 if-else 结构求出其中的最大值。 提示: 首先求出两个 数的

8、较大值放在一个变量里,然后用这个变量和第三个数再进行一次比 较。#includeint main()int a,b,c,max;printf( 请输入三个数 );scanf(%d,%d,%d,&a,&b,&c);if(ab)max=a;elsemax=b;if(cmax)max=c;elsemax=a;printf( 最大值为 %dn,max);return 0;简单循环结构2.3.1 计算 1+4+7+301。#include void main()int i,sum;sum=0;for(i=1;i=301;i=i+3) sum=sum+i;printf(sum=%dn,sum);2.3.2

9、 循环输入某学生八个科目期末考试成绩,计算出该学生成绩总分和平均 分。#includeint main(void)int i,a;float sum,average;sum=0; for(i=1;i=8;i+)scanf(%d,&a); sum=sum+a;printf( 成绩总分为 %fn,sum);printf( 平均分为 %fn,sum/8);return 0;2.3.3 输入 n 的值,计算 n!#includeint main(void)int n,i,a;a=1;printf( 请输入 n 的值 :%dn);scanf(%d,&n);for(i=1;i=n;i+)a=a*i;pri

10、ntf(积 =%dn,a);return 0 ;2.3.4 显示 110 平方,输出结果如下图所示:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100#includeint main(void)int i,a;for(i=1;i=10;i+)a=i*i;printf(%d*%d=%dn,i,i,i*i);return 0;235 计算1-3/4+5/7-7/10+ 的前n项之和#include void main()int i,n;float item,flag,sum;sum=0;flag=1;scanf(%d,&n);f

11、or(i=1;i=n;i+) item=flag*(2*i-1)/(3*i-2); sum=sum+item; flag=-flag;printf(%fn,sum);实验二输入一个整数x,判定是否为5的倍数。#in cludeint main( void)int兀prin tf(x= ”);scan f(%d,& x);if(x%5=0)printf(能整除 5);elseprintf(”不能整除5);return 0;输入x,计算并输入下列分段函数对应的值。-5x0Y=彳 F * 20=x1#in cludeint main( void)float x,y;prin tf(x=);scan

12、f(%f, &x);if(x1)y=x/2;elsey=x*x+2;printf(”对应值为 %.2fn,y);return 0 ;某商场给顾客购物的折扣率如下:购物金额300元 不打折300=购物金额500元9 折500元 =购物金额7 折x*rate )要求输入一个购物金额(x),输出打折率(rate )以及购物实际付款金额(#in cludeint main( void)int x,y;prin tf(x=);scan f(%d,& x);if(x=300& x500)y=*x;printf( 打 9 折,付款 %dn,y);elsey=*x;printf( 打 7 折,付款 %dn,y

13、);return 0;求解一元二次方程.+b-,的实数解。#in clude#in cludeint main( void)int a,b,c,d,x1,x2;prin tf(a= ,b= ,c=);scan f(%d,%d,%d,&a,&b,&c); d=b*b-4*a*c;if(d0)double sqrt(double d);x1= (-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);prin tf(x1=%dn,x2=%dn,x1,x2);else if(d=0)x1= (-b+sqrt(d)/(2*a);prin tf(x1=x2=%dn,x1);elsep

14、rintf( 没有实数解 ); return 0;从键盘输入 10 个字符,将所有的英文字母转换为大写后输出。 #includeint main(void)char i,ch;printf( 请输入 ); for(i=1;i=a&ch=z) ch=ch-32;putchar(ch);return 0;从键盘输入 10 个字符,统计其中英文字母、空格、数字字符和其他字符的个数。 #includeint main(void)char ch,i;int letter,space,digiter,other; letter=space=digiter=other=0;for(i=1;i=a&ch=A&

15、ch=0&ch=9) digiter+;else other+; printf(letter=%d,space=%d,digiter=%d,other=%dn,letter,space,digiter,other);return 0; 输入一个四位整数的年份,判断是否为闰年。#includeint main(void)int x,a,b,c;printf( 输入年份: ); scanf(%d,&x);a=x%4;b=x%100;c=x%400;if(a=0 & b!=0)|(c=0)printf( 闰年 );elseprintf( 不是闰年 );return 0;假设自动售货机出售 4 种商品

16、,薯片、爆米花、巧克力和可乐,售价分别是每份元、元、 元和元。在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过五次时, 退出查询;不到五次时,用户可以选择退出。当用户输入编号14,显示对应商品的价格;输入 0,退出查询;输入其他编号,显示价格为0。#include int main(void)char price;int i;printf( 请输入商品的名称 :n);for(i=1;i=5;i+)switch(price)case 1:printf(case 2:printf(case 3:printf(case 4:printf(case 0:printf(default :

17、printf(price=getchar();getchar();售价元 n);break; 售价元 n);break; 售价元 n);break;售价元 n);break; 退出查询 n);break;价格为 0 元 n);break return 0;编写一个程序输入某人的身高(cm)和体重(kg),按下式确定其体重是否为标准、过胖或 过瘦。判断标准为: ?标准体重 =身高 -110 ;?超过标准体重 5kg 为过胖; ?低于标准体重 5kg 为过瘦。#includeint main(void)int x,y,z;printf( 请输入身高和体重 :n);scanf(%d,%d,&x,&y

18、);z=x-110;if(y-z5)printf( 过胖 );else if(y-z-5)printf( 过瘦 );elseprintf( 标准 );return 0;编写一个程序,计算购买某物品的总金额,该物品的单价为5元/ 公斤,购买 5公斤以上打九折,购买 10 公斤以上打八折,购买 20公斤以上打 7 折,购买 50公斤以上打 6折,购买 100公斤以上打 5 折。(用多分支 if 语句求解)#includeint main(void)float x,y;printf( 购买量 n);scanf(%f,&x);if(x=5 & x=10 & x=20 & x=50 & x100)y=*

19、5*x;elsey=5*x;printf( 付款 %.2fn,y); return 0; 编写一个程序,输出给定的某年某月的天数。 #include int main(void)int year,month,days,leap; printf( 年,月 :); scanf(%d,%d,&year,&month);switch(month)case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;case 4: case 6: case 9: case 11: days=30; break;case 2: if

20、(year%4=0 & year%100!=0 | year%400=0)leap=1;elseleap=0;if (leap) days=29;elsedays=28;printf(%d年4月的天数为 4天n,year,month,days);输入一批正整数(以零或负数为结束标志)求其中的奇数和。#include #include int main(void)int data,sum;sum=0;printf( 输入一批正整数(以零或负数为结束标志) : ); scanf(%d,&data);while(data0)if(data%2=1) sum=sum+data;scanf(%d,&da

21、ta);printf( 奇数和是 %d.n,sum);return 0;输入两个整数 a和n,求a+aa+aaa+(n个a)之和。例如输入 2和3,输出246(2+22+222) 提示:可采用递推的方法计算当前项 item=item*10+a#includeint main(void)int a,n,item,i,sum;i=1;sum=0;item=0;printf( 请输入两个整数 a 和 n: );scanf(%d,%d,&a,&n);while(i=n) item=item*10+a;sum=sum+item;i=i+;printf( 结果为 %dn,sum);return 0;编写程

22、序:计算2/1+3/2+5/3+8/5 的 近似值。要求计算前n项之和,保留2位小数(该 序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)#includeint main(void)float n,i,sum,a,b,item;printf( 请输入 n 的值: );scanf(%f,&n);sum=0;i=1;a=2;b=1;item=0;while(i=n) sum=sum+a/b; item=a; a=a+b; b=item; i=i+;printf( 结果为 %.2fn,sum);return 0;编写一个程序,找出被 2,3,5 整除时余数均为 1的最小的 1

23、0 个自然数。#include int main(void)int x,i;i=0;x=1;while(i10)if(x%2=1 & x%3=1 & x%5=1)printf(%dn,x);i+;x+;return 0;输入一个正整数,求它的位数以及各位数字之和,例如 123 的位数是 3,各位数字之和是6.#includeint main(void)int number,digit,i,sum;i=0;sum=0;printf( 输入一个正整数: );scanf(%d,&number);while(number!=0) digit=number%10; number=number/10; s

24、um=sum+digit; i=i+;printf(n,digit);printf( 该整数的位数是 %dn, 各位数字之和是 %dn,i,sum);return 0;猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。 到第 10天在想吃的时候就剩一个桃子了 , 求第一天共摘下来多少个桃子#includeint main(void)int i,a;a=1;for(i=1;i=9;i+)a=(a+1)*2;printf( 一共摘了 %dn 个桃子 ,a);return 0;求 100 以

25、内的全部素数,每行输出 10 个。素数就是只能被 1 和它本身整除, 1 不是素数, 2 是素数。#includeint main(void)int i,m=0,n;for(n=2;n=99;n+) for(i=2;i=n)printf(%4d,n);m+; if(m%10=0)printf(n);return 0;有一个四位数, 千位上的数字和百位上的数字都被擦掉了,已知十位上的数字是1,个位上的数字是 2,又知道这个数如果减去7就能被 7整除,减去 8就能被 8整除,减去 9就能被9 整除。编写一个程序求这个四位数。提示:利用穷举法来解决该问题。#include void main()in

26、t x,m,n;for(x=1000;x=9999;x+)m=x%10;n=x/10%10;if(m=2 & n=1 & (x-7)%7=0 & (x-8)%8=0 & (x-9)%9=0)printf(%dn,x);取 1元、2元和 5元的纸币共 10 张,现在要支付 15元。编写程序输出所有的付法。针对每 一种付法, 输出各种面额的纸币数量。 要求将 1 元、2 元和 5 元设置在最合理的取值范围内。 #include int main()int m, n, k;for (m=0; m=10; m+)for (n=0; n=10; n+)for (k=0; k=10; k+)if (m+2

27、*n+5*k=15)printf(1元:4张t2 元:4张t5 元:dn, m, n, k);return 0;找出 200 以内的所有完数,并输出其因子。有一个数的因子之和为该数本身,称其为完数。 提示:使用二重循环嵌套,外层循环针对 2200 之间的所有数,而内层循环对其中的每一 个数判断其是否是完数,即判断m的每个因子之和是否等于m。其中因子是2m/2之间能被m整除的数。#includeint main(void)int i,j,k;for(i=1;i=200;i+)k=1;for(j=2;j=i/2;j+)if(i%j=0) k=k+j;if(k=i)printf(%d=1,i); f

28、or(j=2;j=i/2;j+) if(i%j=0) printf(+%d,j);printf(n); return 0;请编写程序显示下列输出:00 10 1 20 1 2 30 1 2 3 40 1 2 30 1 20 10#include int main(void) int i,j;for(i=0;i=4;i+)for(j=0;j=i;j+) printf(%d ,j);printf(n);for(i=0;i=4;i+)for(j=0;j4-i;j+) printf(%d ,j);printf(n);return 0;编写程序打出下列图案。* * * * *#includevoid m

29、ain()int i,j;for(i=1;i=4;i+) for(j=1;j=8-(2*i-1);j+) printf( );for(j=1;j=2*i-1;j+) printf(* );printf(n); for(i=2;i=4;i+) for(j=1;j=2*i-1;j+) printf( );for(j=1;j=8-(2*i-1);j+) printf(* );printf(n);实验五输入两个整形变量 a b 的值,输出 a+b,a-b,a*b,a/b,(float)a/b,a%b 的结果,要求算式的 结果连同算式一起输出,每个算式占一行。#include void main()in

30、t a,b;scanf(%d%d,&a,&b); printf(%d+%d=%dn,a,b,a+b);printf(%d-%d=%dn,a,b,a-b); printf(%d*%d=%dn,a,b,a*b);printf(%d/%d=%dn,a,b,a/b); printf(float)%d/%d=%fn,a,b,(float)a/b);printf(%d%d=%dn,a,b,a%b);求前驱字符和后继字符。输入一个英文字符,找出它的前驱字符和后继字符,并按字符的ASCII 码值从大到小的顺序输出这三个字符及其对应的 ASCII 码值。#includeint main(void)char ch

31、,before,after;ch=getchar();before=ch-1;after=ch+1;if(beforeA|(beforeZ)before=before+26;printf(%c %c %c %d %d %dn,before,after,ch,before,after,ch);else if(afterz| (afterZ & aftera)after=after-26;printf(%c %c %c %d %d %dn,ch,before,after,ch,before,after);elseprintf(%c %c %c %d %d %dn,after,ch,before,a

32、fter,ch,before);输入某个点A的平面坐标(x,y ),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心坐标为( 2,2 ),半径为 1.#includeint main(void)float x,y;scanf(%f%f,&x,&y);if(x-2)*(x-2)+(y-2)*(y-2)=1)printf(”点A在圆上”);else if(x-2)*(x-2)+(y-2)*(y-2)1)printf(”点A在圆内);elseprintf(”点A在圆外);return 0;求爱因斯坦数学题。有一条长阶,若每步跨两阶,则最后剩余一阶;若每步跨三阶,则最 后剩两阶,若每步跨五阶,则最

33、后剩四阶;若每步跨六阶,则最后剩五阶;若每步跨七阶, 最后正好一阶不剩。求长阶的阶梯数目。#includeint main(void)int i;for(i=1;i=200;i+) if(i%2=1)&(i%3=2)&(i%5=4)&(i%6=5)&i%7=0) printf(%d 阶 ,i);return 0;输入一个正整数, 判断其中的各位数字是否奇偶数交替出现,是输出“ yes ”否则输出 “not#include int main(void)int m,n;printf( 请输入一个正整数 :n);scanf(%d,&m);n=m%10;m=m/10;if(n%2+m%10%2 !=1

34、)printf(not);printf(n);elseprintf(yes);printf(n);return 0;输入一个三位数,判断是否是一个水仙花数。水仙花数是指三位数的各位数字立方和等于 这个三位数本身。例如: 153=1*1*1+5*5*5+3*3*3 。#includeint main(void)int n,i,j,k;printf( 请输入一个三位数: n);scanf(%d,n);i=n/100;j=(n-i*100)/10;k=n-i*100-j*10;if(i*i*i+j*j*j+k*k*k=n)printf(%d 是一个水仙花数 ,n);elseprintf(%d 不是水

35、仙花数 ,n);实验六输入一个正整数 n(1n=10), 再输入 n 个整数,输出偶数位置上数值的平均值(保留两位 小数)#includeint main(void)int a10,i,n,count;float sum,avg; printf(Enter n: );scanf(%d,&n);printf(Enter %d intergers: ,n); for(i=0;in;i+)scanf(%d,&ai);sum=0;count=0;for(i=0;in;i+)if(i+1)%2=0)sum=sum+ai;count+;avg=sum/count;printf(avg=%.2fn,avg)

36、;printf(n);输入一个正整数n (1=n=10),再输入n个整数,输出最小值及下标(设最小值唯一,下标从 0 开始)。#includeint main(void)int i,n,min,index ;int a10;printf(Enter n: );scanf(%d,&n);printf(Enter %d intergers: ,n);for(i=0;in;i+)scanf(%d,&ai);min=a0;index=0;for(i=1;iai)min=ai;index=i; printf(min=%d,index=%dn,min,index);输入一个正整数n (1=n=10),再输

37、入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然 后输出交换后的 n 个数。#includeint main(void)int i,n,min,max,index ,indexx,t,h; int a10; printf(Enter n: ); scanf(%d,&n); printf(Enter %d intergers: ,n); for(i=0;in;i+) scanf(%d,&ai); min=a0;max=a0;index=0; indexx=0;for(i=1;iai) min=ai; index=i;t=a0; a0=aindex; aindex=t; if(max

38、ai) max=ai; indexx=i;h=an-1;an-1=aindexx;aindexx=h;for(i=0;i10;i+) printf(%d,ai);return 0;输入一个正整数n (1n=10),再输入n个数,逆序重新存放并输入这些数。#includeint main(void)int n,i,j,t;int a10; printf(Enter n: ); scanf(%d,&n);printf(Enter %d intergers: ,n); for(i=0;in;i+) scanf(%d,&ai);j=n-1;for(i=0;in/2;i+)t=ai; ai=aj; aj

39、=t;j-; for(i=0;in;i+) printf(%d ,ai);在键盘上输入 n 个整数,将他们按照从大到小的次序排序后输出。要求采用冒泡排序法。#include int main(void)int a10,i,n,j,h; printf(Enter n: ); scanf(%d,&n); printf(Enter %d intergers: ,n);for(i=0;in;i+)scanf(%d,&ai);for(j=0;jn-1;j+)for (i=0;in-j-1;i+)if (aiai+1)h=ai;ai=ai+1;ai+1=h; for(i=0;in;i+) printf(%

40、d ,ai);已有一个已按递增排序的数组,输入一个整数 X,要求按原来排序的规律将他插入数组中。#include void main()int a10,i,n,j,h,X,t;printf( 请输入整数的个数 :);scanf(%d,&n);printf(”请输入 d(正整数:n,n);for(i=0;in;i+)scanf(%d,&ai);for(j=0;jn-1;j+)for (i=0;iai+1) h=ai; ai=ai+1; ai+1=h;printf( 请输入要插入的整数 x:);scanf(%d,&x);for(i=0;ix)t=i;break;for(i=n-1;i=t;i-)

41、ai+1=ai;at=x;for(i=0;in+1;i+) printf(%d ,ai);输入一个以回车结束的字符串(少于 80 个字符),统计其中的大写字母的个数#include int main(void)int j,n;char str80,ch;printf( 请输入字符串,以回车结束 :n);gets(str); for(j=0;strj!=0;j+) if (strj=A & strj=Z) n+; printf(count=%dn,n);输入一个字符,再输入一个以回车结束的字符串(少于 80 个字符),在字符串中查找该字 符。如果找到, 则输出该字符在字符串中所对应的最大下标 (下标从 0 开始)否则输出 “Not found ”#includeint main(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论