admin 管理员组文章数量: 1086019
2024年12月31日发(作者:网页特效实训心得体会)
习题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):正确性是指一个计算机程序的正确程度,即程序在预定的
运行环境下能正确完成预期功能的程度。
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)计算机内存中相邻四个字节的值为10000000,试问该值表
示的实数、有符号数和无符号数各为多少?
分别是:实数0.125、有符号数-1107296256(负数在计算机中用补码表示)无符号数
3187671040
(3)字符‘A'、‘a'、‘1'的ASCII值是多少,给出将大写字母的ASCII转换成对应小写字
母ASCII值得计算公式。
‘A’:41H ‘a’:61H ‘1’:31H
大写转化为小写:大写字母的ASCII值+20H=小写字母的ASCII值
1.4为下列问题求解设计算法,并分别用程序流程图、N—S盒图和PAD图加以
描述。
(1)有两个调料盒S1和S2,分别盛有糖和盐,要求将它们互换(即S1盒原来盛糖,现在
改盛盐;S2同理)。
算法思想:这是一个两个变量交换值的问题,可以设置一个临时变量,首先把S1的值
放入临时变量中,然后将S2的值放入S1中,最后将临时变量的值放入S1中即可。
程序流程图:
开始
输入S1、S2
设置临时变量T
T=S2
S2=S1
S1=T
结束
N-S盒图:
输入S1、S2
定义临时变量T
T=S1
S1=S2;
S2=T;
PAD图:
输入S1、S2
定义临时变量T
T=S1;S1=S2;S2=T
(2)依次输入6个整数,要求输出其中最小的数。
算法思想:定义一个临时变量用来存放最小的数,首先输入第一个数赋值于临时变量,
然后循环输入其余的整数,比较输入的整数和临时变量的大小,如果大于临时变量则继续输
入,反之,则给临时变量赋值为次此数。最后临时变量中存放的数输入的数中的最小数,输
入临时变量即可。
程序流程图:
开始
定义变量X
和T
输入第一个
整数并赋值
于T
输入下一个
N-S盒图:
PAD图:
整数赋值于
X
N
X>TNT=X
Y
输入完毕
Y
输出T
结束
定义变量X和临时变量T
输入第一个数并赋值给T
输入下一个整数赋值于X
Y NX>T
T=X
输出T
定义变量X和临时变量T
输入第一个整数赋值于T
输入下一个整数赋值于X
X>T
T=X
输出T
(3)输入3个整数,按从大到小的顺序输出。
算法思想:输入三个数a、b、c,首先比较a和b,如果a>b,则比较c和a,如果c>a
则输出c、a、b;如果cb,输出a、c、b,否则输出a、b、c;对
于a
程序流程图:
开始
输入三个整
数并赋值给
a,b,c
Ya>bN
Y
c>a
c>b
Y
N
N
输出c,a,b
c>b
Y
输出a,b,c
输出b,a,c
Nc>a
输出c,b,a
N
依次输出
a,c,b
Y
输出b,c,a
结束
N-S盒图:
输入三个数并赋值给a,b,c
Y Na>b
Y Nc>a
Y Nc>b
输出c,a,b
输出
a,c,b
输出
a,b,c
输出
b,a,c
输出
b,c,a
Y Nc>b
Y c>a
N
输出c,b,a
PAD图:
输入三个数赋值给a,b,c
输出c,a,b
c>a
c>b
输出a,c,b
输出a,b,c
a>b
输出c,b,a
c>b
c>a
输出b,c,a
输出b,a,c
(4)求1*2*3*……*10。
算法思想:定义一个变量用来存放最后的值,赋初值为1,做十次循环,每次循环在原
来变量的基础上乘循环变量值(即1-10),最后输出这个变量即可。
程序流程图:
开始
count=1
i=1
i<=10
T
count=count*i
i++
F
输出count
开始
N-S盒图:
count=1,i=1
i<=10
count=count*I
i++
输出count
PAD图:
count=1,i=1
while (i<=10)
count=count*I
i++
输出count
(5)输入两个整数,求其最大公约数。
算法思想:选取两个数中较小的数作为起始值,让这两个数分别除以这个值,如果可以
整除,则这个数就是最后结果,如果不能整除则将起始值减一之后再用原来的两个数对其做
除法运算,知道整除为止,得到的起始值的最后值就是结果。
程序流程图:
开始
数A,B
公约数C
A N-S盒图: PAD图: T C=AC=B A%C==0 AND B%C==0 FC-- T 输出C 结束 两个数A,B,公约数C Y A N C=AC=B C>=1 Y A%C==0 AND B%C==0 N 输出CC-- 两数A,B公约数C C=A A C=B 输出C while (C>=1) A%C==0 AND B%C==0 C-- 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)百钱买百鸡:一只公鸡值5元,一只母鸡值3元,3只小鸡值1元,现用一百元要买 一百只鸡,问有什么方案? 分析:由题意可知,假设公鸡、母鸡、小鸡分别有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) { 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)=0 i=0 Fi==0||i==1 T F(i) = F(i-1) + F(i-2)F(i)=1i++ i==12 T 输出F(i) F 开始 习题2参考答案 (1)请简要描述C语言的发展历史。 答:C语言是一种目前世界上普遍流行、使用广泛的高级程序设计语言,它是在B语 言的基础上发展起来的,1972—1973年间,贝尔实验室设计出了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 写出下列程序的输出结果 1.200 310 c8 2.a=100,b=200 3.97,141,61,a 4. c abc 4,3 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 #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 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); } 8)B (9)C 10)A ( ( ( ( ( (2) (3) #include #include void main() { char s1[10],s2[10],s[20]; printf("please enter two stringn"); gets(s1); gets(s2); strcat(s1,s2); printf("%sn",s1); printf("%dn",strlen(s1)); } #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=(m>n)?m:n; b=(m>n)?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() { 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<='z') || (c>='A' && c<='Z')) Num1++; else if (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; 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) printf("has two equal roots:%4.2f.n",-b/(2*a)); else if (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<=i;j++) printf("*"); printf("n"); } for (i=5;i>=1;i--) { for (j=i;j>=1;j--) printf("*"); printf("n"); } } 7.#include #define EPS 1e-7 void main() { int n; 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;i<10;i++) printf("t%d",i); printf("n"); for (i=1;i<10;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 (n>1) { 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); } } 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<=3) f=2*x+3; else if (x>=4 && x<=10) f=3*(x+4); else f=x*x+3*x-6; printf("f(%d)=%dn",x,f); } 习题6参考答案 6.1 &b[i][j]=3001+i*16+j*4; 6.2求一维数组各元素的最大值、最小值及所有元素的乘积 #include #define N 10 void main( ) { int a[N]; int max,min,i,product; printf("输入%d个数组元素:n",N); for(i=0;i scanf("%d",&a[i]); max=a[0]; min=a[0]; product=a[0]; for(i=1;i { product*=a[i]; if(max if(min>a[i])min=a[i]; } 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 a[N]={0,1}; int i; for(i=2;i a[i]=a[i-2]+a[i-2]*a[i-1]; for(i=0;i { if(i%5==0)printf("n"); printf("%5d",a[i]); } printf("n"); } 6.4用改进的冒泡算法对N个数由小到大排序 #include #define N 10 void main( ) { int a[N]; int i,j,temp,flag; printf("输入待排序数据:n"); for(i=0;i scanf("%d",&a[i]); for(i=0;i { flag=0; for(j=0;j if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1; } if(flag==0)break; } printf("排序后数据为:n"); for(i=0;i printf("%d ",a[i]); printf("n"); } 6.5用插入法对N个数由小到大排序 #include #define N 10 void main( ) { int a[N]; int i,j,temp; printf("输入待排序数据:n"); for(i=0;i scanf("%d",&a[i]); for(i=0;i { j=i-1; temp=a[i]; while(a[j]>temp&&j>=0) { a[j+1]=a[j]; j--; } a[j+1]=temp; } for(i=0;i printf("%d ",a[i]); printf("n"); } 6.6用筛选法求1--100内的素数 #include #include void main( ) { int a[101]; int i,j,count=0; for(i=1;i<=100;i++) a[i]=i; a[1]=0; for(i=2;i if(a[i]!=0) { for(j=i+1;j<=100;j++) { if(a[j]!=0&&a[j]%a[i]==0) a[j]=0; } } for(i=1;i<=100;i++) { if(a[i]!=0) { printf("%5d",a[i]); count++; if(count%5==0)printf("n"); } } } 6.7将一维数组中各个元素的顺序变反 #include #define N 10 void main( ) { int a[N],i,temp; printf("请输入%d个整数:n",N); for(i=0;i scanf("%d",&a[i]); for(i=0;i { temp=a[i]; a[i]=a[N-1-i]; a[N-1-i]=temp; } for(i=0;i printf("%5d",a[i]); printf("n"); } 1 6.8输出如下上三角矩阵,主对角线以下的元素不输出 #include #define N 3 void main() { 16 57 2 int a[N][N]={{1,1,6},{0,5,7},{0,0,2}}; int i,j; for(i=0;i { for(j=0;j printf(" "); for(j=i;j printf("%4d",a[i][j]); printf("n"); } } 6.9求两个矩阵的和,要求不引入新的矩阵 #include #define M 3 #define N 4 void main( ) { int a[M][N],b[M][N],i,j; printf("请输入%d*%d矩阵A:n",M,N); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); printf("请输入%d*%d矩阵B:n",M,N); for(i=0;i for(j=0;j scanf("%d",&b[i][j]); for(i=0;i for(j=0;j a[i][j]+=b[i][j]; printf("两矩阵的和为:n"); for(i=0;i { for(j=0;j printf("%5d",a[i][j]); printf("n"); } } 6.10求矩阵的最大元素和最小元素及其所在行和列 #include #define M 3 #define N 4 void main( ) { int a[M][N],i,j,max,maxi=0,maxj=0,min,mini=0,minj=0; printf("请输入%d*%d矩阵A:n",M,N); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); max=a[0][0]; min=a[0][0]; for(i=0;i for(j=0;j { if(a[i][j]>max) { max=a[i][j]; maxi=i; maxj=j; } if(a[i][j] { min=a[i][j]; 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 a[N][N],i,j; for(i=0;i { a[i][0]=1; a[i][i]=1; for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; } printf("杨辉三角的前%d行为:n",N); for(i=0;i { for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("n"); } } 6.12输出N阶魔方阵,其中N为一个奇数。 N阶魔方阵是指一个N*N的方阵,其元素由1到N2组成,且方阵每行、每列以及对角 线元素的和都相等。如三阶魔方阵为 816 357 492 魔方阵中各数的排列规律如下: (1)1在第一行中间一列; (2)从2到N*N的各个数依次按如下规则存放:每一个数存放的行比前一个数的行数 减1,列数加1(如上面的三阶魔方阵,5在4的上一行后一列); (3)如果上一个数在第一行,则下一个数在最后一行,列数加1; (4)如果上一个数在最后一列,则下一个数在第一列,行数减1; (5)如果按上述规则确定的位置已经有数,或上一个数在第1行第N列,则下一个数 放在上一个数的正下方。如三阶魔方阵中,按前四条规则,4应该放在第一行、第二列的位 置,但由于1已经在该位置,故4放在3的下面。再如6,因其位于第一行第3列,故7在 其下方。 #include #define N 5 void main( ) { int a[N][N]={0},i,j,k; i=0; j=N/2; a[i][j]=1; for(k=2;k<=N*N;k++) { i=i-1; j=j+1; if(i<0&&j==N) { i=i+2; j=j-1; a[i][j]=k; } else if(i<0) i=N-1; else if(j==N) j=0; else if(a[i][j]!=0) { i=i+2; j=j-1; } a[i][j]=k; } for(i=0;i { for(j=0;j printf("%5d",a[i][j]); printf("n"); } } 6.13求二维数组的鞍点。即找一个位置,该位置上的元素同行中最大,同列中最小。 #include #define M 3 #define N 4 void main() { int a[M][N]; int i,j,maxj,count=0,flag; printf("请输入%d*%d阶矩阵A:n",M,N ); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i { maxj=0; for(j=1;j if(a[i][maxj] flag=1;
版权声明:本文标题:程序设计基础——基于C语言(第2版) 课后习题参考答案. 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735738559a1686811.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论