第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
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
{ 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]);
执行内层循环表达式3,j++,j为2,j<3成立,继续执行内层循环体 内层for第3次循环
7.
#include
char diamond[][5]={{‘_’,’_’,’*’},{‘_‘,’*’,’_’,’*’},
{‘*’,’_’,’_‘,’_‘,’*’},{‘_’,’*’,’_’,’*’},{‘_’,’_’,’*’}}; int i,j;
for(i=0;i<5;i++) {
for(j=0;j<5;j++)
printf(?%c?,diamond[i][j]); printf(?\\n?); }
}注:?_?代表一个空格。 运行结果为:
* * * * * * * * 8.
#include
{ int i, f[10]; f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1]; for(i=0;i<10;i++) { if(i%4==0)
printf(?\\n?);
printf(?%d ?,f[i]); } }
运行结果为: 1 1 2 3 5 8 13 21 34 55
执行n[i][j]=i+j;即n[2][2]=2+2=3;
执行内层循环表达式3,j++,j为3,j<3不成立,结束内层循环 执行printf(?\\n?);
执行外层for语句的表达式3,i++,i为,3, i<3不成立,结束外层循环
9.
#include ?stdio.h? func(int b[ ]) { int j;
for(j=0;j<4;j++) b[j]=j; }
main( )
{ int a[4], i; func(a);
for(i=0; i<4; i++)
printf(?-?,a[i]); }
运行结果为: 0 1 2 3
详见教材P194 定义函数func
函数头:未定义函数的类型,则系统默认为int型。函数func的形参为整型数组名,即只接收整型数组地址。
函数体:定义整型变量j
循环变量初值(表达式1)j=0, 使得循环条件(表达式2)j<4成立,执行循环体
第1次循环
执行b[j]=j; 即b[0]=0;
执行循环变量自增(及表达式3) j++,j为1,使得j<4成立,继续执行循环体 第2次循环 b[1]=1;
j++,j为2,使得j<4成立,继续执行循环体 第3次循环 b[2]=2;
j++,j为3,使得j<4成立,继续执行循环体 第4次循环 b[3]=3;
j++,j为4,使得j<4不成立,结束循环
main函数:
定义整型变量i和数组a,其长度为4,
func(a);表示调用函数func,并以数组名a作为调用的实参(数组名在C语言中表示数组所在内存空间的首地址,在以数组名作为实参时,形参与实参公用存储空间,因此对数组b的操作,即对数组a的操作。)