1、大学C语言期末考试练习题详解答案及过程讲解 读程序数组2020届大学c语言期末考试习题讲解读程序数组1.#include main() int i, a10;for(i=9;i=0;i-) ai=10-i;printf(“%d%d%d”,a2,a5,a8);运行结果为:852详见p143-146. 例题6.1一定看懂!首先定义整型变量i,整型数组a, a的长度为10,即a中包含10个整型元素(整型变量)执行for循环语句初值i=9, 使得循环条件i=0成立,执行循环体第1次循环 执行ai=10-i 等价于a9=10-9=1 计算表达式3,即i-,i为8,使得循环条件i=0成立,继续执行循环体第
2、2次循环 执行ai=10-i 等价于a8=10-8=2 计算表达式3,即i-,i为7,使得循环条件i=0成立,继续执行循环体第3次循环 执行ai=10-i 等价于a7=10-7=3 计算表达式3,即i-,i为6,使得循环条件i=0成立,继续执行循环体第4次循环 执行ai=10-i 等价于a6=10-6=4 计算表达式3,即i-,i为5,使得循环条件i=0成立,继续执行循环体第5次循环 执行ai=10-i 等价于a5=10-5=5 计算表达式3,即i-,i为4,使得循环条件i=0成立,继续执行循环体第6次循环 执行ai=10-i 等价于a4=10-4=6 计算表达式3,即i-,i为3,使得循环条
3、件i=0成立,继续执行循环体第7次循环 执行ai=10-i 等价于a3=10-3=7 计算表达式3,即i-,i为2,使得循环条件i=0成立,继续执行循环体第8次循环 执行ai=10-i 等价于a2=10-2=8 计算表达式3,即i-,i为1,使得循环条件i=0成立,继续执行循环体第9次循环 执行ai=10-i 等价于a1=10-1=9 计算表达式3,即i-,i为0,使得循环条件i=0成立,继续执行循环体第10次循环 执行ai=10-i 等价于a0=10-0=10 计算表达式3,即i-,i为-1,使得循环条件i=0不成立,跳出循环体2. #include main() int i,a6; for
4、 (i=0; i=0 ; i-) printf(%3d,ai); 运行结果为:5 4 3 2 1 0首先定义整型变量i,整型数组a, a的长度为6,即a中包含6个整型元素(整型变量)执行第一个for循环语句初值i=0, 使得循环条件i6成立,执行循环体第1次循环 执行ai= i 等价于a0=0 计算表达式3,即i+,i为1,使得循环条件i6成立,继续执行循环体第2次循环 执行ai= i 等价于a1=1 计算表达式3,即i+,i为2,使得循环条件i6成立,继续执行循环体第3次循环 执行ai= i 等价于a2=2 计算表达式3,即i+,i为3,使得循环条件i6成立,继续执行循环体第4次循环 执行a
5、i= i 等价于a3=3 计算表达式3,即i+,i为4,使得循环条件i6成立,继续执行循环体第5次循环 执行ai= i 等价于a4=4 计算表达式3,即i+,i为5,使得循环条件i6成立,继续执行循环体第6次循环 执行ai= i 等价于a5=5 计算表达式3,即i+,i为6,使得循环条件i=0成立,执行循环体第1次循环执行printf(%3d,ai); 即输出a5的值 计算表达式3,即i-,i为4,使得循环条件i=0成立,继续执行循环体第2次循环执行printf(%3d,ai); 即输出a4的值 计算表达式3,即i-,i为3,使得循环条件i=0成立,继续执行循环体第3次循环执行printf(%
6、3d,ai); 即输出a3的值 计算表达式3,即i-,i为2,使得循环条件i=0成立,继续执行循环体第4次循环执行printf(%3d,ai); 即输出a2的值 计算表达式3,即i-,i为1,使得循环条件i=0成立,继续执行循环体第5次循环执行printf(%3d,ai); 即输出a1的值 计算表达式3,即i-,i为0,使得循环条件i=0成立,继续执行循环体第6次循环执行printf(%3d,ai); 即输出a0的值 计算表达式3,即i-,i为6,使得循环条件i=0不成立,结束循环3. #include main( ) int i,k,a10,p3;k=5;for(i=0;i10;i+)ai=
7、i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;printf(%dn,k);运行结果为:21首先定义整型变量i,k,整型数组a, a的长度为10,整型数组p, p的长度为3k初值为5第一个for循环语句为数组a进行初始化执行完第一个for语句后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9 (循环过程略)第二个for循环语句为数组p进行初始化初值i=0, 使得循环条件i3成立,执行循环体第1次循环执行pi=ai*(i+1); 即p0=a0*(0+1)=a0=0 计算表达式3,即i+,i为1
8、,使得循环条件i3成立,继续执行循环体第2次循环执行pi=ai*(i+1); 即p1=a1*(1+1)=a2=2 计算表达式3,即i+,i为2,使得循环条件i3成立,继续执行循环体第3次循环执行pi=ai*(i+1); 即p2=a2*(2+1)=a6=6 计算表达式3,即i+,i为3,使得循环条件i3不成立,结束循环第三个for循环语句初值i=0, 使得循环条件i3成立,执行循环体第1次循环执行k+=pi*2; 即k=5+p0*2=5+0=5 计算表达式3,即i+,i为1,使得循环条件i3成立,继续执行循环体第2次循环执行k+=pi*2; 即k=5+p1*2=5+2*2=9 计算表达式3,即i
9、+,i为2,使得循环条件i3成立,继续执行循环体第1次循环执行k+=pi*2; 即k=9+p2*2=9+6*2=21 计算表达式3,即i+,i为3,使得循环条件i3不成立,结束循环4.#include int m33=1,2,3;int n33=1,2 ,3;main( ) printf(“%d,”, m10+n00); printf(“%dn”,m01+n10);运行结果为:3,0详见教材P149152,图6.7看懂!首先定义整型二维数组m,m为3行,3列的二维矩阵,并对其以行的形式初始化m00=1 m01=0 m12=0m10=2 m11=0 m22=0m20=3 m21=0 m22=0定
10、义整型二维数组n,m为3行,3列的二维矩阵n00=1 n01=2 n12=3n10=0 n11=0 n22=0n20=0 n21=0 n22=0因此 m10+n00=2+1=3m01+n10=0+0=05.#include main() int i;int x33=1,2,3,4,5,6,7,8,9; for (i=1; i3; i+)printf(%d ,xi3-i); 运行结果为:6 8 首先按存储顺序为数组x初始化x00=1 x01=2 x02=3x10=4 x11=5 x12=6x20=7 x21=8 x22=9初值i=1, 使得循环条件i3成立,执行循环体第1次循环执行printf(
11、%d ,xi3-i),打印出xi3-i,即x12的值计算表达式3,即i+,i为2,使得循环条件i3成立,继续执行循环体第2次循环执行printf(%d ,xi3-i),打印出xi3-i,即x21的值计算表达式3,即i+,i为3,使得循环条件i3成立,结束循环 6.#include main( ) int n33, i, j;for(i=0;i3;i+ )for(j=0;j3;j+ )nij=i+j;printf(“%d ”, nij);运行结果为:0 1 21 2 32 3 4循环变量i为0, 循环条件 i3成立,执行循环体外层for第1次循环 相当于输出第1行 内层for循环j初值为0,循环
12、条件j3成立,执行循环体 内层for第1次循环 执行nij=i+j;即n00=0+0=0;执行printf(“%d ”, nij); 执行内层循环表达式3,j+,j为1,j3成立,继续执行内层循环体内层for第2次循环 执行nij=i+j;即n01=0+1=1;执行printf(“%d ”, nij); 执行内层循环表达式3,j+,j为2,j3成立,继续执行内层循环体内层for第3次循环 执行nij=i+j;即n02=0+2=2; 执行printf(“%d ”, nij); 执行内层循环表达式3,j+,j为3,j3不成立,结束内层循环 执行printf(“n”); 执行外层for语句的表达式3
13、,i+,i为,1, i3成立,继续执行外层循环体外层for第2次循环 相当于输出第2行 内层for循环j初值为0,循环条件j3成立,执行循环体 内层for第1次循环 执行nij=i+j;即n10=1+0=1; 执行printf(“%d ”, nij);执行内层循环表达式3,j+,j为1,j3成立,继续执行内层循环体内层for第2次循环 执行nij=i+j;即n11=1+1=2; 执行printf(“%d ”, nij);执行内层循环表达式3,j+,j为2,j3成立,继续执行内层循环体内层for第3次循环 执行nij=i+j;即n12=1+2=3; 执行printf(“%d ”, nij);执行
14、内层循环表达式3,j+,j为3,j3不成立,结束内层循环执行printf(“n”); 执行外层for语句的表达式3,i+,i为,1, i3成立,继续执行外层循环体外层for第2次循环 相当于输出第3行 内层for循环j初值为0,循环条件j3成立,执行循环体 内层for第1次循环 执行nij=i+j;即n20=2+0=1; 执行printf(“%d ”, nij);执行内层循环表达式3,j+,j为1,j3成立,继续执行内层循环体内层for第2次循环 执行nij=i+j;即n21=2+1=2; 执行printf(“%d ”, nij);执行内层循环表达式3,j+,j为2,j3成立,继续执行内层循环
15、体内层for第3次循环 执行nij=i+j;即n22=2+2=3; 执行内层循环表达式3,j+,j为3,j3不成立,结束内层循环 执行printf(“n”);执行外层for语句的表达式3,i+,i为,3, i3不成立,结束外层循环 7#include main()char diamond5=_,_,*,_,*,_,*,*,_,_,_,*,_,*,_,*,_,_,*;int i,j;for(i=0;i5;i+)for(j=0;j5;j+)printf(“%c”,diamondij);printf(“n”);注:“_”代表一个空格。运行结果为:* * * * *8. #include main(
16、) int i, f10; f0=f1=1; for(i=2;i10;i+) fi=fi-2+fi-1; for(i=0;i10;i+) if(i%4=0) printf(“n”); printf(“%d ”,fi); 运行结果为:1 1 2 35 8 13 2134 559 #include “stdio.h” func(int b ) int j; for(j=0;j4;j+) bj=j; main( ) int a4, i; func(a); for(i=0; i4; i+) printf(“%2d”,ai); 运行结果为: 0 1 2 3详见教材P194定义函数func函数头:未定义函
17、数的类型,则系统默认为int型。函数func的形参为整型数组名,即只接收整型数组地址。函数体:定义整型变量j 循环变量初值(表达式1)j=0, 使得循环条件(表达式2)j4成立,执行循环体第1次循环 执行bj=j; 即b0=0;执行循环变量自增(及表达式3) j+,j为1,使得j4成立,继续执行循环体第2次循环b1=1;j+,j为2,使得j4成立,继续执行循环体第3次循环b2=2;j+,j为3,使得j4成立,继续执行循环体第4次循环b3=3;j+,j为4,使得j4不成立,结束循环main函数: 定义整型变量i和数组a,其长度为4, func(a);表示调用函数func,并以数组名a作为调用的实
18、参(数组名在C语言中表示数组所在内存空间的首地址,在以数组名作为实参时,形参与实参公用存储空间,因此对数组b的操作,即对数组a的操作。)10. #include main() float fun(float x); float ave,a3=4.5,2,4; ave=fun(a); printf(“ave=%7.2f”,ave); float fun(float x) int j;float aver=1; for (j=0;j3;j+)aver=xj*aver; return(aver);运行结果为:ave= 36.0011.#include main()int a23=1,2,3,4,5,
19、6;int b32,i,j;for(i=0;i=1;i+)for(j=0;j=2;j+) bji=aij;for(i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); 运行结果为: 1 4 2 5 3 612#include f(int b,int n)int i,r; r=1; for (i=0;i=n;i+) r=r*bi; return (r);main() int x,a=1,2,3,4,5,6,7,8,9; x=f(a,3); printf(“%dn”,x);运行结果为: 24 13.#includestdio.hmain()int j,k; static int x44,y44;for(j=0;j4;j+) for(k=j;k4;k+) xjk=j+k;for(j=0;j4;j+) for(k=j;k4;k+) ykj=xjk;for(j=0;j4;j+) for(k=0;k4;k+) printf(%d,yjk);运行结果为:0,0,0,0,1,2,0,0,2,3,4,0,3,4,5,6
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1