《c语言程序设计习题答案.pdf》由会员分享,可在线阅读,更多相关《c语言程序设计习题答案.pdf(119页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语言程序设计习题答案第 一 章 c 语言概述1.5 请参照本章例题,编写一个C 程序,输出以下信息:V er y Go o d!解:m ian()p r in t f(a*n);p r in t f(n);p r in t f(V er y Go o d!nw);p r in t f(n);p r in t f(*w);1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。解:m ian()in t a,b,c,m ax;p r in t f(“请输入三个数 a,b,c:n);s can f(%d,%d,%d”,&a,&b,&c);m ax=a;if(m ax b)m ax=b;i
2、f(m ax c)m ax=c;p r in t f(最大数为:“d”,m ax);)第三章数据类型,运算符和表达式3.6 写出以下程序运行的结果。m ain()char cl=a,c2=b,c3=c,c4=101,c5=116;p r in t f(r ta%cb%ct c%ct abcnw,cl,c2,c3);p r in t f(at b%c%c”,c4,c5);解:aa U bb U L4 M cc U U M U M U abcAUN3.7 要将“C hin a译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母A”后面第4 个字母是E .代替A 。因此,C h
3、in a”应译为 Glm r e。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,C 、X、i 、n 、a ,经过运算,使 cl、c2、c3、c4、c5分别变为G,、m、,r 、e ,并输出。解:t t in clu de m ain O char cl=C ,c2=h,c3=i,c4=n ,c5=a ;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;p r in t f(“密码是%c%c%c%c%cn”,cl,c2,c3,c4,c5);运行结果:密码是Glm r e3.9 求下面算术表达式的值。(1)x+a%3*(in t)(x+y)%2/4设 x=2
4、.5,a=7,y=4.7(2)(flo at)(a+b)/2+(in t)x%(in t)y设 a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。m ain()in t i,j,m,n;i=8;j=10;m=+i;n=j+;p r in t f(%d,%d,%d,%d”,i,j,m,n);解:9,11,9,103.1 2写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。(1)a+=a(2)a=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2),n 的值等于 5(6)a+=a-=a*=a解:24(2)10(3)60(4)0
5、(5)0(6)0第四章 简单的c程序设计顺序程序设计4.4 若 a=3,b=4,c=5,x=l.2,y=2.4,z=3.6,u=51274,n=128765,cl=,a,,c2=b,。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。a=3 b=4 c=5x=l.200000,y=2.400000,z=-3.600000 x+y=_3.600_ y+z=T.20_z+x=2.40cl=a_or_9 7(ASCII)c2=b_or_9 8(ASCII)main()int a=3,b=4,c=5;long int u=51274,n=128765;float x=l.2,y=2.
6、4,z=3.6;char cl=a,c2=b ;printf(a=%2d b=%2d c=%2dn”,a,b,c);printf(x=%f,y=%f,z=%fn”,x,y,z);printf(x+y=%5.2f y+z=%5.2f z+x=%5.2fn”,x+y,y+z,z+x);printf(u=%61d n=%9 1dn,,u,n);printf(%s%s%d%sn,cl=a,or,cl,(ASCII)”);printf r%s%s%d%sn,c2=a*,or,c2,(ASCII)”);4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=7L 82,cl=A ,c2=a
7、 ,问在键盘上如何输入?main()(int a,b;float x,y;char clc2;scanf(a=%d_b=%d,&a,&b);scanf(_x=%f_y=%e,&x,&y);scanf(_cl=%c_c2=%c”,&cl,&c2);a=3_b=7_x=8.5_y=71.82_cl=A_c2=a4.8设圆半径r=l.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。main()flo at r,h,C l,S a,S b,V a,V b;s can f(%f,&r,&h);C l
8、=2*3.14*r;S a=3.14*r*r;S b=4*S a;V a=4*3.14*r*r*r/3;V b=S a*h;p r in t fC C l=%.2fn,C l);p r in t f(S a=%.2fn S b=%.2fn V a=%.2fn V b=%.2fn ,S a,S b,V a,V b);)4.9 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位2 小数。m ain()flo at F,c;s can f(%f,&F);c=5*(F-32)/9;p r in t f(c=%.2f”,c);)4.10编程序,用 get char
9、函数读入两个字符给cl、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变 量 cl、c2应定义为字符型或整形?抑二者皆可?(2)要求输出cl和 c2值的A S C I I 码,应如何处理?用 p u t char 函数还是p r in t f函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:char cl,c2;与 in t cl,c2;是否无条件的等价?#in clu des t dio.hm ain O char cl,c2;cl=get char ();c2=get char();p u t char(cl);p u t char(?n,);p u t
10、char(c2);p u t char(,n,);)#in clu de“s t dio.hm ain()char cl,c2;cl=get char ();c2=get char();p r in t f(cl=%d c2=%dn”,cl,c2);p r in t f(cl=%c c2=%cn”,cl,c2);第五章选择结构程序设计5.1什么是算术运算?什么是关系运算?什么是逻辑运算?解:略。5.2 C 语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0 表示。但是判断一个逻辑量的值时,以0 代表“
11、真”,以非0 代表“假”。例如3&5 的值为“真”,系统给出3&5的值为lo5.3 写出下面各逻辑表达式的值。设 a=3,b=4,c=5。(1)a+b c&b=c(2)a|b+c&b-c(3)!(a b)&!c|l(4)!(x=a)&(y=b)&0(5)!(a+b)+c_ l&b+c/2解:0M3)1015.4 有 3 个整数a、b、c,由键盘输入,输出其中最大的数。解:方法一#inclu de ma in()int a,b,c;print f(请输入3 个整数:);sca nf(%d,%d,%d,&a,&b,&c);if(a b)if(b c)print f(ma x=%d n”,c);el
12、se print f(ma x=%d n”,b);else if(a c)print f(ma x=%d n”,c);else print f(ma x=%d n”,a);方法二:使用条件表达式,可以使程序更加简明、清晰。程序如下:#inclu de ma in()int a,b,c,t emp,ma x;print f(请输入3 个整数:);sca nf(%d,%d,%d,&a,&b,&c);t emp=(a b)?a:b;/*将 a 和 b中的大者存人t emp中*/ma x=(t emp c)?t emp:c;/*将 a和 b中的大者与c 比较,取最大者*/print f(3 个整数的最
13、大数是%d n,ma x);)5.5 有一函数:写一程序,输入x 值,输出y 值。解:t t inclu de ma in()int x,y;print f(输入 x:);sca nf&x);if(x l)/*x l*/y=x;print f(x=%3 d,y=x=%d n”,x,y);else if(x 10)/*lW xTO*/y=2*xT;print f(x=%3 d,y=2*xT=%d n”,x,y);else/*x2 1O*/y=3*xTl;print f(x=%3 d,y=3*xTl=%d n”,x,y);)5.6 给一个百分制成绩,要求输出等级 A,、B,、C 、D,、E o 9
14、0 分以上为 A ,8 0 90 分为 B ,7 0 7 9 分为 C ,6 0分以下为D。解:程序如下:#inclu de ma in()floa t score;cha r gra de;print f(请输入学生成绩:);sca nf(%f”,&score);while(score 100|(score 0)print f(n输入有误,请重新输入:);sca nf(%f”,&score);)swit ch(int)(score/10)ca se 10:ca se 9:gra de=A;b rea k;ca se 8:gra de=B ;b rea k;ca se 7:gra de=C ;
15、b rea k;ca se 6:gra de=D ;b rea k;ca se 5:ca se 4:ca se 3:ca se 2:ca se 1:ca se 0:gra de=E;print f(成绩是%5.I f,相应的等级是%c。n,score,gra de);)说明:对输入的数据进行检查,如小于0或大于100,要求重新输入。(int)(score/10)的作用是将(score/10)的值进行强制类型转换,得到一个整型值。5.7给定一个不多于5位的正整数,要求:求它是几位数;分别打印出每一位数字;按逆序打印出各位数字。例如原数为3 2 1,应输出12 3 o解:t t inclu de
16、ma in()long int nu m;int indiv,t en,hu ndred,t hou sa nd,t en_ t hou sa nd,pla ce;/*分别代表个位、十位、百位、千位、万位和位数*/print f(请输入一个整数(0 9 9 9 9 9);sca nf&nu m);if(nu m 9999)pla ce=5;else if(nu m 999)pla ce=4;else if(nu m 99)pla ce=3;else if(nu m 9)pla ce=2;else pla ce=l;print f(pla ce=%d n”,pla ce);t en_ t hou
17、 sa nd=nu m/10000;t hou sa nd=nu m/1000%10;hu ndre d=nu m/100%10;t en=nu m%100/10;indiv=nu m%10;swit ch(pla ce)ca se 5:print f(%d,%d,%d,%d,%d”,t en_ t hou sa nd,t hou sa nd,hu ndred,t en,indiv);print f(n反序数字为;”);print f(%d%d%d%d%d n”,indiv,t en,hu ndred,t hou sa nd,t en_ t hou sa nd);b rea k;ca se 4
18、:print f(%d,%d,%d,%d”,t hou sa nd,hu ndred,t en,indiv);print f C n反序数字为:);print f(%d%d%d%d n”,indiv,t en,hu ndred,t hou sa nd);b rea k;ca se 3:print f(%d,%d,%d”,hu ndred,t en,indiv);print f(n反序数字为:);print f(%d%d%d n”,indiv,t en,hu ndred);b rea k;ca se 2:print f%d”,t en,indiv);print f C n反序数字为:);prin
19、t f(%d%d n”,indiv,t en);b rea k;ca se 1:p r i n tf i n d i v);print f(n反序数字为:);print f(%d n,indiv);b rea k;5.8 企业发放的奖金根据利润提成。利润I 低于或等于10万元时,奖金可提成10%;利润高于1 0 万元,低 于 2 0 万 元(100000 1 W2 00000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;2 00000 IW 4 00000时,其中2 0万元仍按上述办法提成(下同),高于2 0万元的部分按5%提成;4 00000 1 6 00000时,高于
20、4 0万元的部分按3%提成;6 00000 IW 1000000时,高于6 0万的部分按1.5%提成;D1000000时,超过100万元的部分按现提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用 if语句编程序;(2)用 swit ch语句编程序。解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为 15万元,其中有10万元按10%的比例提成,另外5 万元则按7.5%提成。(1)用 i f 语句编程序。#i nc l u d e m a i n()l o ng i;f l o a t b o nu s,b o nl,b o n2,b o n4,b o n6,b o n 1
21、0;b o nl=100000*0.1;/*利润为10万元时的奖金*/b o n2=b o nl+100000*0.075;/*利润为 20 万元时的奖金*/b o n4=b o n2+200000*0.05;/*利润为 40 万元时的奖金*/b o n6=b o n4+200000*0.03;/*利润为 60 万元时的奖金*/bonl0=bon6+400000*0.015;/*利润为 100 万元时的奖金*/printf(请输入利润i:”);scanf&i);if(i=100000)bonus=i*0.1;/*利润在10万元以内按0.1提成奖金*/else if(i=200000)bonus
22、=bonl+(1-100000)*0.075;/*利润在 10 万至 20 万元时的奖金*/else if(i=400000)bonus=bon2+(i-200000)*0.05;/*利润在20万至40万元时的奖金*/else if(i=600000)bonus=bon4+(i-400000)*0.03;/*利润在40万至60万元时的奖金*/else if(i=1000000)bonus=bon6+(i-600000)*0.015;/*利润在 60 万至 100 万元时的奖金*/elsebonus=bonl0+(1-1000000)*0.01;/*利润在 100 万元以上时的奖金*/print
23、f(奖金是%10.2fn”,bonus);)此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20万时,奖金应由两部分组成:利润为10万元时应得的奖金。即 100000 x 0.1;10万元以上部分应得的奖金。即(nu m-100000)x 0.075o同理,20万 40万这个区间的奖金也应由两部分组成:利润为20万元时应得的奖金,即 100000 x 0.1x 10万 x 0.075;20万元以上部分应得的奖金,即(nu m-200000)x O.05。程序中先把10万、20万、40万、60万、100万各关键点的奖金计算出来,即b o nl、b o n2、b o n4、b o
24、 n6、h o nl O;然后再加上各区间附加部分的奖金。(2)用 swi t c h 语句编程序。输入利润i,确定相应的提成等级b r a nc h根据b r a nc h 确定奖金值0 奖金=i*0.11 奖金=b o nl+(i-105)*0.0752 奖金=b o n2+(i-2*105)*0.0534 奖金=b o n4+(-4*105)*0.0356 奖金=b o n6+6-6*105)*0.01578910 奖金=b o nl 0+(i T 06)*0.01输出奖金t t i nc l u d e m a i nO l o ng i;f l o a t b o nu s,b o
25、nl,b o n2,b o n4,b o n6,b o nl O;i nt c;b o nl=100000*0.1;b o n2=b o n1+100000*0.075;b o n4=b o n2+200000*0.05;b o n6=b o n4+200000*0.03;b o n10=b o n6+400000*0.015;p r i nt f (请输入利润i:);sc a nf (%l d ,&i);c=i/100000;i f(c 10)c=10;swi t c h(c)c a se 0:b o nu s=l*0.1;b r e a k;c a se 1:b o nu s=b o nl
26、+(i-100000)*0.075;b r e a k;c a se 2:c a se 3:b o nu s=b o n2+(i-200000)*0.05;b r e a k;c a se 4:c a se 5:b o nu s=b o n4+(i-400000)*0.03;b r e a k;case 6:case 7:case 8:case 9:bonus=bon6+(i-600000)*0.015;break;case 10:bonus=bonl0+(i-1000000)*0.01;printf(奖金是%10.2f”,bonus);5.9输 入4个整数,要求按由大到小的顺序输出。解:此题
27、采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。#include main()int t,a,b,c,d;printf(请输入4个整数:);scanf(%d,%d,%d,%d,&a,&b,&c,&d);printf(n a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=a;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(排序结果如下:n);printf(%d,%d,%d,%d
28、n”,a,b,c,d);5.10 有 4 个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这4个塔的高度分别为10mo塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。程序如下:#include main()int h=10;floatxl=2,yl=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,dl,d2,d3,d4;printf(请输入一个点(x,y);scanf(%f,%f,&x,&y);dl=(x-xl)*(x-xl)+(y-y 1)*(y-y 1);/*求该点到各中心点的距离*/d2=(x-
29、x2)*(x-x2)+(y+y2)*(y+y2);d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);if(dll&d2l&d3l&d4l)h=0;/*判断该点是否在塔外*/printf(该点高度为%dn”,h);第六章循环控制6.1输入两个正整数m 和 n,求其最大公约数和最小公倍数。main()long m,n,i=l,j,s;scanf%ld,&m,&n);for(;i=m&i=n)j=m;else j=n;for(;!(j%m-0&j%n-0);j+);printf(s=%ld,j=%ldn”,s,j);)6.2
30、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include“stdio.hmain()char c;int i=0,j=0,k=0,1=0;while(c=getchar()!=,n)if(c=65&c=9 7&c=48&c=57)j+;else if(c 32)k+;e l se 1+;p r i nt f (i=%d,j=%d,k=%d,l=%d n”,i,j,k,1);6.3求S n=a+a a+a a a+.+a a.a a a (有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n 由键盘输入。#i nc l u d e
31、 m a t h.h m a i n()i nt n,su m=0,i=l,s=2;sc a nf&n):wh i l e(i=n)su m=su m+s;s=s+2*p o w(10,i);i+;)p r i nt f (su m=%d n”,su m);6.4 求,(即求 l!+2!+3!+4!+5!+.+20!)m a i n()i nt n,i=l;l o ng su m=0,s=l;sc a nf (%d ,&n);wh i l e(i=n)s=s*i;su m=su m+s;i+;p r i nt f(su m=%l d n”,su m);6.5 求 m a i nOdouble
32、i=l,j=l,k=l,sl=0,s2=0,s3=0,sum;for(;i=100;i+)sl=sl+i;for(;j=50;j+)s2=s2+j*j;for(;k=100&x 1000)a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;if(x=(pow(a,3)+pow(b,3)+pow(c,3)printf(%5d”,x);x+;)6.7 一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1、2、3mai
33、n()i nt m,i,j,s;f o r(m=6;m 10000;m+)s=l;f o r(i=2;i m;i+)i f (m%i-0)s=s+i;i f (m-s-0)p r i nt f (,%5d i t s f a st o r s a r e 1”,m);f o r (j=2;j+)i f(m%j=0)p r i nt f(%d ”,j);p r i nt f(n);)或 m a i n()i nt m,i,j,s;f o r(m=6;m 1000;m+)s=m T;f o r(i=2;i m;i+)i f (m%i-0)s=s-i;i f(s=0)p r i nt f (/,%5
34、d i t s f a st o r s a r e 1”,m);f o r(j=2;j m;j+)i f (m%j-0)p r i nt f (,z%d ,j);p r i nt f (n);6.8有一分数序列:求出这个数列的前20项之和。m a i n()i n t i=l,n;d o u b l e t,x=l,y=2,s,su m=0;sc a n f&n);w h i l e(i =n)s=y/x;su m=su m+s;t=y;y=y+x;x=t;i+;p r i n t f (%f n,su m);6.9球 从1 0 0米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第
35、1 0次落地时共经过多少米?第1 0次反弹多高?m a i n()i n t i,n;d o u b l e h=1 0 0,s=1 0 0;sc a n f&n);f o r(i=l;i=n;i+)h*=0.5;i f(i=l)c o n t i n u e;s=2*h+s;p r i n t f (h=%f,s=%f n”,h,s);)6.1 0猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到 第1 0天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。m a i
36、n()i n t i=l,su m=O;f o r(;i =0.0 0 0 0 1);p r i n t f (“虬 3 f n”,x l);6.1 2 用牛顿迭代法求方程在1.5附近的根。m a i n O d o u b l e x,y;x=l.5;d o y=2*x*x*x-4*x*x+3*x-6;x=x-y/(6*x*x-8*x+3);w h i l e(y!=0);p r i n t f (x=%.3 f n,x);)6.1 3用二分法求方程在(T O,1 0)之间的根m a i n()d o u b l e x l,x 2,y l,y 2;x l=-1 0;x 2=1 0;d o
37、y l=2*x l*x l*x l-4*x l*x l+3*x l-6;x l=x l-y l/(6*x l*x l-8*x l+3);w h i l e(y l!=0);d o y 2=2*x 2*x 2*x 2-4*x 2*x 2+3*x 2-6;x 2=x 2-y 2/(6*x 2*x 2-8*x 2+3);w h i l e(y 2!=0);p r i n t f (x l=%.3 f,x 2=%.3 f n”,x l,x 2);6.1 4打印以下图案*#i n c l u d e m a t h.h m a i n()i n t i,j,k;f o r(i=O;i =3;i+)f o
38、 r(j=0;j =2-i;j+)p r i n t f (”);f o r(k=0;k =2*i;k+)p r i n t f (*);p r i n t f (n);)f o r(i=0;i =2;i+)f o r(j=0;j =i;j+)p r i n t f(”);f o r (k=0;k=4-2*i;k+)p r i n t f (*);p r i n t f (n);)第七章数组7.1用筛法求之内的素数。m a i n()i n t i,j,a 1 0 0 ;f o r(i=2;i 1 0 0;i+)a i =i;f o r(j=2;j =i;j+)i f(j i)i f (a i
39、%j=O)b r e a k;i f (a i -j=O)p r i n t f (“附d”,a i );)p r i n t f (n);或#i n c l u d e m a t h.h m a i n()st a t i c i n t i,j,k,a 9 8 ;f o r(i=2;i 1 0 0;i+)a i =i;k=sq r t(i);f o r(j=2;j=a i ;j+)i f(j =k+l)p r i n t f (%5 d,a i );p r i n t f (n);)7.2 用选择法对1 0 个整数从小到大排序。m a i n()i n t i,j,a 1 0 ,t;f
40、o r(i=0;i 1 0;i+)sc a n f ;f o r(j=l;j 1 0;j+)f o r(i=0;i a i+l )t=a i+l ;a i+l =a i ;a i =t;f o r(i=0;i 1 0;i+)p r i n t f(%5 d,a i );或 m a i n O st a t i c i n t a 1 0 ,i,j,k,t;f o r (i=l;i l l;i+)sc a n f ;f o r(j=l;j 1 0;j+)f o r(i=l;i a i+l )t=a i+l ;a i+l =a i ;a i =t;f o r (i=l;i l l;i+)p r i
41、 n t f (%d,a i );p r i n t f(n);7.3求一个3X3矩阵对角线元素之和。m a i n()i n t i=0,j=0,a 3 3 ,si,s2;f o r (i=0;i 3;i+)f o r(j=0;j 3;j+)sc a n f&a i j );sl=a 0 0 +a l l +a 2 2 ;s2=a 0 2 +a l l +a 2 0 ;p r i n t f (sl=%d,s2=%d n”,si,s2);或 m a i n()(st a t i c i n t i,j,si,s2,a 3 3 ;f o r (i=l;i =3;i+)f o r(j=l;j 0
42、;i一)if(ai ai-l)t=ai-l;ai-l=ai;ai=t;for(i=0;i 10;i+)printf(“舫d,ai);printf(n);或 main()(static int a5=l,4,5,6,7;int i,t,b;scanf&b);for(i=0;i 5;i+)if(b=ai)t=ai;ai=b;b=t;printf(%d,ai);printf(%d,b);7.5将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,l o 要求改为:1,4,5,6,8 om a i n()i n t i,b 1 0 ;f o r(i=0;i -l;i-)p r i n t f
43、 (%5 d,b i );p r i n t f (n);7.6打印出以下杨辉三角形(要求打印出1 0行)。11 11 2 11 3 3 11 4 6 4 11 5 1 0 1 0 5 1m a i n O st a t i c i n t m,n,k,b 1 5 1 5 ;f o r(m=l;m 1 5;m+)f o r (n=l;n=m;n+)b m n =b m-l n-l +b m-l n ;p r i n t f (%-5 d,b m n );p r i n t f (n);)或 m a i n O i n t i,j,n,k,a 1 0 1 0 ;st a t i c a l =l
44、 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 );a l 1 =1;f o r (k=2,k l l;k+)f o r(i=2;i =k;i+)f o r(j=2;j =i;j+)a i j =a i-l j-l +a i-l j ;f o r (k=l;k l l;k+)f o r(i=l;i =k;i+)f o r(j=l;j =i;j+)p r i n t f a i j );)7.7打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为8 1 63 5 74 9 2要求打印出由1 n 2 的自然数构成的魔方阵。解:i n c l u
45、 d e m a i n()i n t a 1 6 1 6 ,i,i,k,p,m,n;p=l;w h i l e(p=l)/*要求阶数为1 1 5 的商数*/p r i n t f(E n t e r n(n=l 1 5):”);sc a n f&n):i f(n!=O)&(n =1 5)&(n%2!=0)p=0;)f o r(i=l;i =n;i+)/*初始化*/f o r(j=l;j =n;j+)a i j =0;j=n/2+l;/*建立魔方阵*/a l f o r(k=2;k =n*n;k+)i=i-l;j=j+l;i f(i n)i=i+2;e l se i f(i n)j=l;i f
46、 (a i j =0)a i j =k;e l se i=i+2;a i j =k;)f o r(i=l;i=n;i+)/*输出魔方阵*/f o r(j=l;j =n;j+)p r i n t f (%4 d,a i j );p r i n t f (n);7.8找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。m a i n O i n t a 5 5 ,b 5 ,c 5 ,d 5 5 ,k=0,1=0;i n t i,j;f o r(i=0;i 5;i+)f o r(j=0;j 5;j+)sc a n f (%d”,&d i j );f o r(i=0;
47、i 5;i+)f o r(j=0;j 5;j+,a i j =d i j );f o r (i=0,k=0;i 5;i+,k+)f o r(j=0;j =a i j+l )b k =a i j+l =a i j ;e l seb k =a i j+1 ;)f o r(j=0,1=0;j 5;j+,1+)f o r(i=0;i 4;i+)i f(a i j =a i+l j )c l =a i+l j =a i j ;e l sec l =a i+l j ;)f o r (i=0,k=0;i 5;i+,k+)f o r (j=0,1=0;j 5;j+,1+)i f (d i j -b k =O)
48、i f(d i j -c l =0)p r i n t f (d%d%d =%d n,i,j,d i j );elseprintf(d%d%d=%d isnot andin,/,i,j,di j);)7.9有 个1 5数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出无此数#includemath.hmain()static inti,j,m,a15=l,4,9,13,21,34,55,89,144,233,377,570,671,703,812;scanf&m);for(j=0;j 15;j+)printf(,,%4d,/,
49、aj);printf(n);i=7;while(fabs(i-7)8)if(ma7)if(ai-m=O)printf(?,it is at(%d)n”,i+1);break;i+;elseprintf(8n);if(fabs(i-7)-8=0)printf(There is notn);)7.10有一篇文章,共有3 行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。main()int i,j=0,k=0,1=0,m=0,n=0;charstr0301,strl100,str2100,str3100;gets(strl);gets(str2);gets(
50、str3);strcat(strO,strl);strcat(strO,str2);strcat(strO,str3);for(i=0;str0i!=0;i+)if(str0i=65&str0i=9 0)j+;else if(strOi=9 7&str0i=48&str0i=57)1+;else if(strOi=32)m+;else n+;p r int f(Daxie Xiaoxie Shu zi Kongge Qit an);p r int f(%5 d%7 d%5 d%6 d%4 d n,j,k,1,m,n);)7.1 1打印以下图案*mainOint i,j,k;c har a5 5