C语言练习题(带详解答案) 下载本文

执行第二个for循环语句

初值i=5, 使得循环条件i>=0成立,执行循环体 第1次循环

执行printf(\即输出a[5]的值

计算表达式3,即i--,i为4,使得循环条件i>=0成立,继续执行循环体 第2次循环

执行printf(\即输出a[4]的值

计算表达式3,即i--,i为3,使得循环条件i>=0成立,继续执行循环体 第3次循环

执行printf(\即输出a[3]的值

计算表达式3,即i--,i为2,使得循环条件i>=0成立,继续执行循环体 第4次循环

执行printf(\即输出a[2]的值

计算表达式3,即i--,i为1,使得循环条件i>=0成立,继续执行循环体 第5次循环

执行printf(\即输出a[1]的值

计算表达式3,即i--,i为0,使得循环条件i>=0成立,继续执行循环体 第6次循环

执行printf(\即输出a[0]的值

计算表达式3,即i--,i为6,使得循环条件i>=0不成立,结束循环 3.

#include main( )

{ int i,k,a[10],p[3];

k=5;

for(i=0;i<10;i++)

a[i]=i;

for(i=0;i<3;i++)

p[i]=a[i*(i+1)];

for(i=0;i<3;i++)

k+=p[i]*2; printf(\; }

运行结果为:21

首先定义整型变量i,k,整型数组a, a的长度为10,整型数组p, p的长度为3 k初值为5

第一个for循环语句为数组a进行初始化

执行完第一个for语句后,a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9 (循环过程略)

第二个for循环语句为数组p进行初始化

初值i=0, 使得循环条件i<3成立,执行循环体 第1次循环

执行p[i]=a[i*(i+1)]; 即p[0]=a[0*(0+1)]=a[0]=0

计算表达式3,即i++,i为1,使得循环条件i<3成立,继续执行循环体 第2次循环

执行p[i]=a[i*(i+1)]; 即p[1]=a[1*(1+1)]=a[2]=2

计算表达式3,即i++,i为2,使得循环条件i<3成立,继续执行循环体 第3次循环

执行p[i]=a[i*(i+1)]; 即p[2]=a[2*(2+1)]=a[6]=6

计算表达式3,即i++,i为3,使得循环条件i<3不成立,结束循环

第三个for循环语句

初值i=0, 使得循环条件i<3成立,执行循环体 第1次循环

执行k+=p[i]*2; 即k=5+p[0]*2=5+0=5

计算表达式3,即i++,i为1,使得循环条件i<3成立,继续执行循环体 第2次循环

执行k+=p[i]*2; 即k=5+p[1]*2=5+2*2=9

计算表达式3,即i++,i为2,使得循环条件i<3成立,继续执行循环体 第1次循环

执行k+=p[i]*2; 即k=9+p[2]*2=9+6*2=21

计算表达式3,即i++,i为3,使得循环条件i<3不成立,结束循环 4.

#include

int m[3][3]={{1},{2},{3}}; int n[3][3]={1,2 ,3}; main( )

{ printf(?%d,?, m[1][0]+n[0][0]); printf(?%d\\n?,m[0][1]+n[1][0]); }

运行结果为: 3,0

详见教材P149~152,图6.7看懂!

首先定义整型二维数组m,m为3行,3列的二维矩阵,并对其以行的形式初始化 m[0][0]=1 m[0][1]=0 m[1][2]=0 m[1][0]=2 m[1][1]=0 m[2][2]=0 m[2][0]=3 m[2][1]=0 m[2][2]=0

定义整型二维数组n,m为3行,3列的二维矩阵 n[0][0]=1 n[0][1]=2 n[1][2]=3 n[1][0]=0 n[1][1]=0 n[2][2]=0 n[2][0]=0 n[2][1]=0 n[2][2]=0

因此 m[1][0]+n[0][0]=2+1=3

m[0][1]+n[1][0]=0+0=0

5.

#include main() { int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; for (i=1; i<3; i++)

printf(\ }

运行结果为: 6 8

首先按存储顺序为数组x初始化 x[0][0]=1 x[0][1]=2 x[0][2]=3 x[1][0]=4 x[1][1]=5 x[1][2]=6 x[2][0]=7 x[2][1]=8 x[2][2]=9

初值i=1, 使得循环条件i<3成立,执行循环体 第1次循环

执行printf(\,打印出x[i][3-i],即x[1][2]的值 计算表达式3,即i++,i为2,使得循环条件i<3成立,继续执行循环体 第2次循环

执行printf(\,打印出x[i][3-i],即x[2][1]的值 计算表达式3,即i++,i为3,使得循环条件i<3成立,结束循环

6.

#include main( )

{ int n[3][3], i, j; for(i=0;i<3;i++ ) {for(j=0;j<3;j++ )

{n[i][j]=i+j;

printf(?%d ?, n[i][j]); } } }

运行结果为: 0 1 2 1 2 3

2 3 4

循环变量i为0, 循环条件 i<3成立,执行循环体 外层for第1次循环 相当于输出第1行

内层for循环j初值为0,循环条件j<3成立,执行循环体 内层for第1次循环

执行n[i][j]=i+j;即n[0][0]=0+0=0;

执行printf(?%d ?, n[i][j]);

执行内层循环表达式3,j++,j为1,j<3成立,继续执行内层循环体

内层for第2次循环

执行n[i][j]=i+j;即n[0][1]=0+1=1;

执行printf(?%d ?, n[i][j]);

执行内层循环表达式3,j++,j为2,j<3成立,继续执行内层循环体

内层for第3次循环

执行n[i][j]=i+j;即n[0][2]=0+2=2; 执行printf(?%d ?, n[i][j]);

执行内层循环表达式3,j++,j为3,j<3不成立,结束内层循环 执行printf(?\\n?);

执行外层for语句的表达式3,i++,i为,1, i<3成立,继续执行外层循环体 外层for第2次循环 相当于输出第2行

内层for循环j初值为0,循环条件j<3成立,执行循环体 内层for第1次循环

执行n[i][j]=i+j;即n[1][0]=1+0=1; 执行printf(?%d ?, n[i][j]);

执行内层循环表达式3,j++,j为1,j<3成立,继续执行内层循环体 内层for第2次循环

执行n[i][j]=i+j;即n[1][1]=1+1=2; 执行printf(?%d ?, n[i][j]);

执行内层循环表达式3,j++,j为2,j<3成立,继续执行内层循环体 内层for第3次循环

执行n[i][j]=i+j;即n[1][2]=1+2=3; 执行printf(?%d ?, n[i][j]);

执行内层循环表达式3,j++,j为3,j<3不成立,结束内层循环 执行printf(?\\n?);

执行外层for语句的表达式3,i++,i为,1, i<3成立,继续执行外层循环体 外层for第2次循环 相当于输出第3行

内层for循环j初值为0,循环条件j<3成立,执行循环体 内层for第1次循环

执行n[i][j]=i+j;即n[2][0]=2+0=1; 执行printf(?%d ?, n[i][j]);

执行内层循环表达式3,j++,j为1,j<3成立,继续执行内层循环体 内层for第2次循环

执行n[i][j]=i+j;即n[2][1]=2+1=2; 执行printf(?%d ?, n[i][j]);