2022年程序设计基础——基于C语言课后习题参考答案 .pdf
精品文档. 习题 1 参考答案1.1 解释以下术语(1)计算机软件:计算机软件是一系列按照特定结构组织的程序、数据(Data)和文档(Document)的集合。(2)计算机程序:用计算机语言所编写的一系列指令的集合。(3)数据:数据是程序加工和处理的对象。(4)算法:算法是一组有穷的规则,它们规定了为解决某一特定问题而采取的一系列运算步骤。(5)数据结构:数据结构是存在一种或多种特定关系的数据元素的集合,其外在表现为数据的组织形式。(6)数据类型:数据类型是一个值的集合和定义在这个值集上的操作的总称。(7)程序设计:程序设计是给出解决特定问题程序的方法和过程,是软件构造活动中的重要组成部分。1.2 简答题(1)简述内存的组织结构形式?计算机系统把内存看作是由若干个连续的存储单元(Storage Location )组成的,每个存储单元的大小为一个字节(Byte ) 。为了能唯一标志每个存储单元,在计算机系统中给每个存储单元指定一个唯一的编号,该编号被称为存储单元的地址(Address ) ,计算机在读写内存时就是按照存储单元的地址进行的。(2)为什么计算机系统是一个通用的计算系统?在计算机硬件相对固定不变的前提下,计算机的通用性主要表现在通过运行不同的程序来完成不同的计算任务。(3)简述结构化程序设计的基本思想? 在程序设计过程中,如果仅仅使用顺序、选择和循环这三种基本控制结构,并且使每个代 码 块 只 有 一 个 入 口 和 一 个 出 口 , 则 这 样 的 程序 设 计 方 法 被称 为 结 构 化 程序 设 计(Structured Programming) 。(4)简述计算机语言的发展史?程序设计语言经历了从机器语言、汇编语言、高级语言到超高级语言的发展历程。(5)简述利用计算机进行问题求解的过程?1、理解问题特征2、设想解决方案3、优化解决方案4、描述解决方案5、执行并分析解决方案(6)简述各个程序质量要素的含义?1、正确性( Correctness ) :正确性是指一个计算机程序的正确程度,即程序在预定的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 48 页 - - - - - - - - - 精品文档. 运行环境下能正确完成预期功能的程度。2、鲁棒性( Robustness ) :鲁棒性也称为健壮性,是指在硬件发生故障、输入数据无效或操作错误等意外情况下,程序能做出响应的程度。3、效率( Efficiency) :效率是指为了完成预定的功能,系统需要的计算资源(主要包括计算时间和存储空间)的多少。4、易用性( Usability) :易用性又称为可用性,是指在完成预定功能时人机交互的难易程度。易用性高的程序容易被程序用户理解和掌握,使用户操作简单方便。5、可理解性(Understandability) :可理解性是指理解程序的难易程度。可理解性高的程序才容易测试和维护。如果程序难以读懂,就会给测试和维护带来巨大的困难。6、可测试性(Testability) :可测试性是一个计算机程序能够被测试的容易程度。为了提高程序的可靠性,必须通过测试尽可能多得发现并改正程序中的错误。程序的可测试性直接影响测试的质量和效率。7、可维护性(Maintainability) :诊断和改正程序错误以及功能扩充和性能提高的容易程度。程序设计是一个迭代过程,要开发出高质量的程序需要对程序进行多次修改和完善。程序的可维护性决定了上述工作的质量和效率。8、可重用性(Reusability) :可重用性是指在其它应用中该程序可以被再次使用的容易程度。 如果我们在开发新程序时,能够直接或稍加修改就能利用原有的程序,则会大大提高新程序开发的质量和效率。因此,提高程序的可重用性是提高程序设计质量和效率的根本途径。1.3 计算题(1)计算 -1 的 8 位原码、反码、补码和Excess_127 码。分别为: 10000001B、 11111110B、11111111B、01111110B (2)计算机内存中相邻四个字节的值为10111110000000000000000000000000 ,试问该值表示的实数、有符号数和无符号数各为多少?分别是:实数0.125 、有符号数 -1107296256 (负数在计算机中用补码表示)无符号数3187671040 (3)字符 A 、 a 、 1 的 ASCII 值是多少,给出将大写字母的ASCII 转换成对应小写字母 ASCII 值得计算公式。A: 41H a :61H 1: 31H 大写转化为小写:大写字母的ASCII 值+20H= 小写字母的ASCII 值1.4 为下列问题求解设计算法,并分别用程序流程图、NS盒图和 PAD 图加以描述。(1)有两个调料盒S1 和 S2,分别盛有糖和盐,要求将它们互换(即S1盒原来盛糖,现在改盛盐; S2同理)。算法思想:这是一个两个变量交换值的问题,可以设置一个临时变量,首先把S1的值放入临时变量中,然后将S2的值放入 S1 中,最后将临时变量的值放入S1 中即可。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 48 页 - - - - - - - - - 精品文档. 程序流程图:设置临时变量TT=S2S2=S1S1=T输入 S1、S2开始结束N-S 盒图:输入 S1、S2定义临时变量TT=S1S1=S2;S2=T;PAD 图:输入 S1、S2定义临时变量TT=S1;S1=S2;S2=T(2)依次输入6 个整数,要求输出其中最小的数。算法思想:定义一个临时变量用来存放最小的数,首先输入第一个数赋值于临时变量,然后循环输入其余的整数,比较输入的整数和临时变量的大小,如果大于临时变量则继续输入,反之, 则给临时变量赋值为次此数。最后临时变量中存放的数输入的数中的最小数,输入临时变量即可。程序流程图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 48 页 - - - - - - - - - 精品文档. 开始定义变量X和 T输入第一个整数并赋值于 TXT输入下一个整数赋值于X输入完毕输出 T结束T=XYNYNN-S 盒图:定义变量 X 和临时变量T输入第一个数并赋值给T输入下一个整数赋值于XXTY NT=X输出 TPAD 图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 48 页 - - - - - - - - - 精品文档. 定义变量 X 和临时变量T输入第一个整数赋值于T输入下一个整数赋值于X XTT=X输出 T(3)输入 3 个整数,按从大到小的顺序输出。算法思想:输入三个数a、b、c,首先比较a 和 b,如果 ab, 则比较 c 和 a, 如果 ca则输出 c、a、b;如果 cb, 输出 a、c、b,否则输出a、b、c;对于 abcaY输出 c,a,bcb依次输出a,c,b输出 a,b,c结束NYYNcb输出 c,b,a输出 b,a,c输出 b,c,aYNcaYNNN-S 盒图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 48 页 - - - - - - - - - 精品文档. 输入三个数并赋值给a,b,cabY Ncbca NY Y N输出a,c,b输出 c,a,bcbY N输出a,b,c输出b,c,a输出 c,b,acaY N输出b,a,cPAD图:ab输入三个数赋值给a,b,cca输出 c,a,b输出 a,c,b输出 a,b,ccbcb输出 c,b,a输出 b,c,a输出 b,a,cca(4)求 1*2*3* *10 。算法思想:定义一个变量用来存放最后的值,赋初值为1,做十次循环,每次循环在原来变量的基础上乘循环变量值(即1-10 ) ,最后输出这个变量即可。程序流程图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 48 页 - - - - - - - - - 精品文档. 开始count=1i=1i=10count=count*ii+开始输出 countTFN-S 盒图:count=1,i=1i=10count=count*Ii+输出 countPAD 图:count=1,i=1while (i=10)count=count*Ii+输出 count(5)输入两个整数,求其最大公约数。算法思想: 选取两个数中较小的数作为起始值,让这两个数分别除以这个值,如果可以整除,则这个数就是最后结果,如果不能整除则将起始值减一之后再用原来的两个数对其做除法运算,知道整除为止,得到的起始值的最后值就是结果。程序流程图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 48 页 - - - - - - - - - 精品文档. 开始数 A,B公约数CABC=AC=BA%C=0 ANDB%C=0输出 CC-TFF结束TN-S 盒图:A=1A%C=0 AND B%C=0YN输出 CC-PAD 图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 48 页 - - - - - - - - - 精品文档. 两数 A,B公约数 CA=1)A%C=0 AND B%C=0输出 CC-1.5 算法思考题(1)钞票换硬币: 把一元钞票换成一分、二分、五分硬币(每种至少一枚) ,有哪些种换法?分析: 1 元相当于 100 分,设 5 分、2 分、 1分的硬币数分别为X、Y、Z,求换法就是在寻找这样一种组合,使得5*X+2*Y+Z =100 ,所以每当找到1 种组合时,将个数记录下来,就可知换法有多少种,算法描述如下:Count = 0; /用于记录个数,初始为0 for(X=1;X=20;X+) for(Y=1;Y=50;Y+) for(Z=1;Z=100;Z+) if(5*X + 2*Y + Z = 100) /可实现交换 Count +; 输出 Count (2)百钱买百鸡:一只公鸡值元,一只母鸡值元,只小鸡值元,现用一百元要买一百只鸡,问有什么方案?分析: 由题意可知, 假设公鸡、母鸡、小鸡分别有X、 Y、 Z只, 那么 X、 Y、 Z 满足:X+Y+Z=100 ,而且要满足钱数限定:5*X+3*Y+1/3*Z = 100,由于 3 只小鸡 1 元钱,所以小鸡的个数必须是 3 的整数倍,即:Z 是 3 的整数倍。可通过限制条件,筛选出满足条件的X,Y,Z。当然X、Y、Z 还满足以下条件:5*X = 100 ;3*Y = 100 ;Z = 100 。以下是算法描述:for(X=0;X=100;X+) for(Y=0;Y=100;Y+) for(Z=0;Z=100;Z+) if(5*X=100 and 3*Y=100 and z%3=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 48 页 - - - - - - - - - 精品文档. if(X+Y+Z=100 and 5*X+3*Y+Z/3 = 100) 输出 X、Y、Z; (3)斐波那契兔子的问题:某人有一对兔子饲养在围墙中,如果它们每个月生一对兔子,且新生的兔子在第二个月后也是每个月生一对兔子,问一年后围墙中共有多少对兔子。分析: 第一个月是最初的一对兔子生下一对兔子,围墙内共有两对兔子。第二个月仍是最初的一对兔子生下一对兔子,共有3 对兔子。到第三个月除最初的兔子新生一对兔子外,第一个月生的兔子也开始生兔子,因此共有5 对兔子。继续推下去,第12 个月时最终共有对 377 对兔子。由分析知,每个月的兔子都是上个月的兔子与新增兔子之和,而上个月新生的兔子到下个月才会生兔子,所以新增的兔子都是上两月的兔子生的。设每个月的兔子数为 F(n) ,则可列出下列式子:F(0) = F(1) = 1 F(n) = F(n-1) + F(n-2) 显然可用递归的方法解出此题,算法流程图如下:开始F(n)=0i=0i=0|i=1F(i)=1F(i) = F(i-1) + F(i-2)i+i=12输出 F(i)开始TFFT名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 48 页 - - - - - - - - - 精品文档. 习题 2 参考答案(1)请简要描述C 语言的发展历史。答: C 语言是一种目前世界上普遍流行、使用广泛的高级程序设计语言,它是在B 语言的基础上发展起来的,19721973 年间,贝尔实验室设计出了C 语言。 1983 年,美国国家标准化协会制定了C 语言的标准,称为ANSI C 。(2)略。(3)C 语言的主要特点是什么?答:C 语言的主要特点如下。 C 程序是由函数组成的。 函数由函数头和函数体组成。 C 程序总是从main 函数开始执行。 每个语句和数据声明的最后必须有一个“;”。 C 语言没有自己的输入/输出语句,它的输入/输出由库函数printf 和 scanf 完成。 可以添加注释。 C 语言程序中的变量必须先声明后使用。(4)如何使用Visual C+ 6.0 开发控制台程序?使用 VC6 开发控制台程序的方法如下:答: 在 Miscrosoft Visual C+ 6.0环境下,首先建立一个空的工程。 而后建立一个C 源程序文件,并在该文件中输入源代码。 使用 Bulid 命令或者快捷键F7,进行编译连接。 如果没有错误,选择Execute 命令或者快捷键Ctrl+F5 ,进行执行。习题 3 参考答案:3.1 选择题 1.B 2.D 3.D 4.A 5.A 6.A 7.C 8.C 9.C 10.B 3.2 写出下列程序的输出结果1200 310 c8 2.a=100,b=200 3.97,141,61,a 4. 5.aabb c abc 4,3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 48 页 - - - - - - - - - 精品文档. 6.6,6,6,7 3.3 编程题1#include void main() int a=500; printf(%d,%o,%xn,a,a,a); 输出结果: 500,764,1f4 2. #include void main() float x; scanf(%f,&x); printf(a=%.3f,a=%.3en,x,x); 输入: 66 输出结果: a=66.000,a=6.60000e+001 3. #include void main() char ch1=a,ch2=ch1; printf(%c,%d,%o,%xn,ch1,ch1,ch1,ch1); printf(%c,%d,%o,%xn,ch2,ch2,ch2,ch2); 输出结果: A,65,101,41 a,97,141,61 4. #include void main() float x,y,z,s,v; scanf(%f%f%f,&x,&y,&z); s=2*(x*y+x*z+y*z); v=x*y*z; printf(Area=%.lf,Volume=%.lfn,s,v); 输入: 3 4 5 输出结果: Area=94 ,Volume=60 5#define PI 3.14 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 48 页 - - - - - - - - - 精品文档. #include #include void main() float r,s,l; scanf(%f,&r); s=(float)PI*r*r; l=2*(float)PI*r; printf(r=%4.1f,s=%4.1f,l=%4.1fn,r,s,l); 输入: 3 输出结果: r= 3.0,s=28.3 ,l=18.8 6#include #include void main() float x1,y1,x2,y2,x3,y3,a,b,c,p,s; scanf(%f%f%f%f%f%f,&x1,&y1,&x2,&y2,&x3,&y3); a=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); b=sqrt(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3); c=sqrt(x2-x3)*(x2-x3)+(y2-y3)*(y2-y3); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(Area=%fn,s); 输入: 5 6 3 8 0 23 输出结果: Area=12.000013 习题 4 参考答案4.1 选择题。(1)D (2)A (3)A (4)C (5)C (6)B (7)B (8)B (9)C (10)A 4.2 填空题。(1)261 (2)16 (3)0 (4)2,1 4.3 编程题。(1)#include void main() float c,f; printf(输入华氏温度:n ); scanf(%f ,&f); c=(f-32)*5/9; printf(摄氏温度为: %5.2fn,c); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 48 页 - - - - - - - - - 精品文档. (2)#include #include void main() char s110,s210,s20; printf(please enter two stringn); gets(s1); gets(s2); strcat(s1,s2); printf(%sn ,s1); printf(%dn ,strlen(s1); (3)#include #include void main() double x,y; printf(please enter two data:n); scanf(%lf%lf,&x,&y); printf(%lf raised to %lf is %lfn,x,y,pow(x,y); 习题 5 参考答案1填空题(1) n=4 (2) 2*i-1 (3) 7 (4) # 2#include void main() long m,n,a,b,s; printf(nPlease input value of M :); scanf(%ld,&m); printf(nPlease input value of N :); scanf(%ld,&n); a=(mn)?m:n; b=(mn)?n:m; while (a%b!=0) s=a%b; a=b; b=s; printf(nGong yue shu:%ldn,s); printf(nGong Bei shu:%ldn,(m*n)/s); 3#include void main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 48 页 - - - - - - - - - 精品文档. int a,b,c,d,e; printf(Please input an integer:n); scanf(%d,&a); if (a/1000=0) printf(input error!n); return; b=a/1000; e=a%10; c=a%1000/100; d=a%100/10; if (b=e & c=d) printf(YES.n); else printf(NO.n); 4#include void main() int c; int Num1,Num2,Num3,Num4; Num1=Num2=Num3=Num4=0; do c=getchar(); if (c=a & c=A & c=0 & c=9) Num2+; else if (c= ) Num3+; else Num4+; while(c!=n); printf(英文字母有%d 个,数字有%d 个,空格有%d 个,其它字符有%d 个。n,Num1,Num2,Num3,Num4); 5#include #include void main() float a,b,c,disc,x1,x2,realpart,imagepart; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 48 页 - - - - - - - - - 精品文档. printf(Input a,b and c:); scanf(%f,%f,%f,&a,&b,&c); printf(The equation); disc=b*b-4*a*c; if (fabs(disc)1e-7) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(has distince real roots:%4.2f and %4.2f.n,x1,x2); else realpart=-b/(2*a); imagepart=sqrt(-disc)/(2*a); printf(has complext roots:); printf(%4.2f+%4.2fi,realpart,imagepart); printf( and %4.2f-%4.2fin,realpart,imagepart); 6. #include void main() int i,j; for (i=1;i=5;i+) for (j=1;j=1;i-) for (j=i;j=1;j-) printf(*); printf(n); 7#include #define EPS 1e-7 void main() int n; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 48 页 - - - - - - - - - 精品文档. double x,an,sum; printf(input x:); scanf(%lf,&x); x=x*3.1415926/180; sum=0; an=x; n=1; do sum+=an; n=n*(n+1)*(n+2); an*=(-x*x)/n; printf(an=%fn,an); while(fabs(an)=EPS); printf(sin(%.4lf)=%.4lfn,x,sum); 8#include void main() unsigned int n; char c; n=0; printf(input a binary integer:); while(c=getchar()!=n) switch (c) case 0: n=n*2+0; break; case 1: n=n*2+1; break; printf(the decimal is %d.n,n); 9#include void main() int i,j; for (i=1;i10;i+) printf(t%d,i); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 48 页 - - - - - - - - - 精品文档. for (i=1;i10;i+) printf(%d,i); for (j=1;j=i;j+) printf(t%d,i*j); printf(n); 10#include void main() int n,m,z,x,y; printf(input n:); scanf(%d,&n); m=n; z=x=y=1; while (n1) z=x+y; x=y; y=z; n-; printf(Fibonacci(%d)=%d.n,m,z); 11#include #include void main() int i,j; int flag; for (i=1;i=100;i+) flag=1; for (j=2;j=sqrt(i);j+) if (i%j=0) flag=0; break; if (flag=1) printf(%dt,i); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 48 页 - - - - - - - - - 精品文档. 12#include void main() int i,sum; sum=0; for (i=1;i=1000;i+) if (i%3=0 & i%5=0 & i%7=0) sum+=i; printf(sum is %d.n,sum); 13#include void main() int x; long f; printf(input x:); scanf(%d,&x); if (x=1 & x=4 & x=10) f=3*(x+4); else f=x*x+3*x-6; printf(f(%d)=%dn,x,f); 习题 6 参考答案6.1 &bij=3001+i*16+j*4; 6.2 求一维数组各元素的最大值、最小值及所有元素的乘积#include #define N 10 void main( ) int aN; int max,min,i,product; printf(输入 %d个数组元素: n,N); for(i=0;iN;i+) scanf(%d,&ai); max=a0; min=a0; product=a0; for(i=1;iN;i+) product*=ai; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 48 页 - - - - - - - - - 精品文档. if(maxai)min=ai; printf(各元素最大值为:%dn,max); printf(各元素最小值为:%dn,min); printf(各元素的乘积为:%dn,product); 6.3 已知数列a0=0, a1=1,an= an-2+ an-2an-1,求数列的前10 个元素#include #define N 10 void main( ) int aN=0,1; int i; for(i=2;iN;i+) ai=ai-2+ai-2*ai-1; for(i=0;iN;i+) if(i%5=0)printf(n); printf(%5d,ai); printf(n); 6.4 用改进的冒泡算法对N个数由小到大排序#include #define N 10 void main( ) int aN; int i,j,temp,flag; printf(输入待排序数据:n); for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN-1;i+) flag=0; for(j=0;jaj+1) temp=aj; aj=aj+1; aj+1=temp; flag=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 48 页 - - - - - - - - - 精品文档. if(flag=0)break; printf(排序后数据为:n); for(i=0;iN;i+) printf(%d ,ai); printf(n); 6.5 用插入法对N个数由小到大排序#include #define N 10 void main( ) int aN; int i,j,temp; printf(输入待排序数据:n); for(i=0;iN;i+) scanf(%d,&ai); for(i=0;itemp&j=0) aj+1=aj; j-; aj+1=temp; for(i=0;iN;i+) printf(%d ,ai); printf(n); 6.6 用筛选法求1-100 内的素数#include #include void main( ) int a101; int i,j,count=0; for(i=1;i=100;i+) ai=i; a1=0; for(i=2;isqrt(100);i+) if(ai!=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 48 页 - - - - - - - - - 精品文档. for(j=i+1;j=100;j+) if(aj!=0&aj%ai=0) aj=0; for(i=1;i=100;i+) if(ai!=0) printf(%5d,ai); count+; if(count%5=0)printf(n); 6.7 将一维数组中各个元素的顺序变反#include #define N 10 void main( ) int aN,i,temp; printf(请输入 %d个整数: n,N); for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN/2;i+) temp=ai; ai=aN-1-i; aN-1-i=temp; for(i=0;iN;i+) printf(%5d,ai); printf(n); 6.8 输出如下上三角矩阵,主对角线以下的元素不输出116572#include #define N 3 void main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 48 页 - - - - - - - - - 精品文档. int aNN=1,1,6,0,5,7,0,0,2; int i,j; for(i=0;iN;i+) for(j=0;ji;j+) printf( ); for(j=i;jN;j+) printf(%4d,aij); printf(n); 6.9 求两个矩阵的和,要求不引入新的矩阵#include #define M 3 #define N 4 void main( ) int aMN,bMN,i,j; printf(请输入 %d*%d 矩阵 A:n,M,N); for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,&aij); printf(请输入 %d*%d 矩阵 B:n,M,N); for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,&bij); for(i=0;iM;i+) for(j=0;jN;j+) aij+=bij; printf(两矩阵的和为 :n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%5d,aij); printf(n); 6.10 求矩阵的最大元素和最小元素及其所在行和列#include #define M 3 #define N 4 void main( ) int aMN,i,j,max,maxi=0,maxj=0,min,mini=0,minj=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 48 页 - - - - - - - - - 精品文档. printf(请输入 %d*%d 矩阵 A:n,M,N); for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,&aij); max=a00; min=a00; for(i=0;iM;i+) for(j=0;jmax) max=aij; maxi=i; maxj=j; if(aijmin) min=aij; mini=i; minj=j; printf(最大元素为a%d%d=%dn,maxi,maxj,max); printf(最小元素为a%d%d=%dn,mini,minj,min); 6.11 输出杨辉三角形的前10 行1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 . . . . . . . 说明:杨辉三角形是(a+b)n 展开后各项的系数。首行(a+b)0 的系数为1,次行为1,1;其余各行中首末元素为1,其余元素为其左上方元素与正上方元素的和。#include #define N 10 void main( ) int aNN,i,j; for(i=0;iN;i+) ai0=1; aii=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 48 页 - - - - - - - - - 精品文档. for(j=1;ji;j+) aij=ai-1j-1+ai-1j; printf(杨辉三角的前 %d行为 :n,N); for(i=0;iN;i+) for(j=0;j=i;j+) printf(%5d,aij); printf(n); 6.12 输出 N阶魔方阵,其中N为一个奇数。N 阶魔方阵是指一个N*N的方阵,其元素由1 到 N2组成,且方阵每行、每列以及对角线元素的和都相等。如三阶魔方阵为816357492魔方阵中各数的排列规律如下:(1)1 在第一行中间一列;(2)从 2 到 N*N的各个数依次按如下规则存放:每一个数存放的行比前一个数的行数减 1,列数加1(如上面的三阶魔方阵,5 在 4 的上一行后一列) ;(3)如果上一个数在第一行,则下一个数在最后一行,列数加1;(4)如果上一个数在最后一列,则下一个数在第一列,行数减1;(5)如果按上述规则确定的位置已经有数,或上一个数在第1 行第 N列,则下一个数放在上一个数的正下方。如三阶魔方阵中,按前四条规则,4 应该放在第一行、第二列的位置,但由于