📄 练习(四).txt
字号:
a[7]=a[j]; puts(a);
}
(A) mogninr
(B) mo
(C) morning
(D) mornin
二、填空题
53、在C语言中,二维数组的定义方式为:类型说明符 数组名________ ________;
54、在C语言中,二维数组元素在内存中的存放顺序是________。
55、若有定义:double x[3][5]; 则x数组中行下标的下限为________,列下标的上限为________。
56、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:________。
57、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}}; 则初始化后,a[1][2]得到的初值是________,a[2][1]得到的初值是_________。
58、若有以下输入(<CR>代表回车符),则下面程序的运行结果是________。
7 10 5 4 6 7 9 8 3 2 4 6 12 2 -1<CR>
void main()
{
int b[51],x,i,j=0,n=0;
scanf("%d",&x);
while(x>-1){b[++n]=x; scanf("%d",&x);}
for(i=1;i<=n;i++)
if(b[i]%2==0)b[++j]=b[i];
for(i=1;i<=j;i++) printf("%3d",b[i]); printf("\n");
}
59、下面程序以每行4个数据的形式输出a数组,请填空。
#define N 20
void main()
{
int a[N],i;
for(i=0;i<N;i++) scanf("%d",________);
for(i=0;i<N;i++)
{
if(________) _________
printf("%3d",a[i]);
}
printf("\n");
}
60、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。请填空。
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;_________;j++)
{
printf("%5d",a[i][j]);
________;
}
printf("\n");
}
printf("array b:\n");
for(i=0;________;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
61、下面程序的运行结果是________。
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
62、下面程序可求出矩阵a的两条对角线上的元素之和。请填空。
void main()
{
int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j) sum1=sum1+a[i][j];
for(i=0;i<3;i++)
for(________;________;j--)
if((i+j)==2) sum2=sum2+a[i][j];
printf("sum1=%d,sum2=%d\n",sum1,sum2);
}
63、下面程序的运行结果是________。
void main()
{
int a[5][5],i,j,n=1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=n++;
printf("The result is: \n");
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
64、下面程序可求出矩阵a的主对角线上的元素之和。请填空。
void main()
{
int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(________) sum=sum+________;
printf("sum=%d\n",sum);
}
65、以下程序可求出所有的水仙花数。(提示:所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。例如:407=4×4×4+0×0×0+7×7×7,故407是一个水仙花数。)请填空。
void main()
{
int x,y,z,a[8],m,i=0;
printf("The special numbers are (in the arange of 1000): \n";
for(________; m++)
{
x=m/100;
y=________;
z=m%10;
if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)
{
________;
i++;
}
for(x=0;x<i;x++)
printf("%6d",a[x]);
}
66、下面程序的功能是生成并打印某数列的前20项,该数列第1,2项分别为0和1,以后每个奇数编号的项是前两项之和,偶数编号的项是前两项差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。请填空。
void main()
{
int x[21],i,j;
x[1]=0;x[2]=1;
i=3;
do{
x[i]=________;
x[i+1]=________;
i=________;
}while(i<=20);
for(i=1;i<=20;i++)
{
printf("%5d",x[i]);
if(i%4==0)
printf("\n");
}
}
67、若有以下输入(<CR>代表回车换行符),则下面程序的运行结果是________。
1 4 2 3 3 4 1 2 3 3 2 2 2 3 3 1 1 1 4 1 1 1 -1<CR>
#define M 50
void main()
{
int a[M],c[5],i,n=0,x;
printf("Enter 0 or 1 or 2 or 3 or 4,to end with -1\n");
scnaf("%d",&x);
while(x!=-1)
{
if(x>=0&&x<=4) {a[n]=x;n++;}
scanf("%d",&x);
}
for(i=0;i<5;i++) c[i]=0;
for(i=0;i<n;i++) c[a[i]]++;
printf("The result is: \n");
for(i=1;i<=4;i++) printf("%d: %d\n",i,c[i];
printf("\n");
}
68、下面程序的运行结果是________。
void main()
{
int i,j,a[2][3]={{2,4,6},{8,10,12}};
printf("The original array is: \n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\nthe result is: \n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%4d",a[j][i]);
printf("\n");
}
}
69、设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。
void main()
{
int a[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(________;i<10;i++)
________
for(i=1;i<10;i++)
{
printf("%3d",b[i]);
if(________==0) printf("\n");
}
}
70、下面程序将十进制整数转换成n进制。请填空。
void main()
{
int i=0,base,n,j,num[20];
printf("Enter data that will be converted\n");
scanf("%d",&n)
printf("Enter base\n");
scanf("%d",&base);
do{
i++;
num[i]=n________base;
n=n________base;
}while(n!=0);
printf("The data %d has been converted into the %d--base data: \n",n,base);
for(________)
printf(" %d",num[j]);
}
71、下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。
void main()
{
int a[5],max,min,i,j,k;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=1;i<5;i++)
if(a[i]<min) {min=a[i];________;}
max=a[0];
for(i=1;i<5;i++)
if(a[i]>max) {max=a[i];________;}
________
printf("\nThe position of min is: %3d\n",k);
printf("The position of max is: %3d\n",j);
for(i=0;i<5;i++)
printf("%5d",a[i]);
}
72、下面程序的运行结果是________。
void main()
{
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("%3d",f[i]);}
}
73、下面程序的运行结果是________。
void main()
{
int a[10]={1,2,2,3,4,3,4,5,1,5};
int n=0,i,j,c,k;
for(i=0;i<10-n;i++)
{
c=a[i];
for(j=i+1;j<10-n;j++)
if(a[j]==c)
{
for(k=j;k<10-n;k++)
a[k]=a[k+1];
n++;
}
}
for(i=0;i<(10-n);i++)
printf("%d",a[i]);
printf("\n");
}
74、下面程序的功能是给一维数组a输入任意6个整数,假设为:7 4 8 9 1 5 然后建立一个具有以下内容的方阵并打印。请填空。
5 7 4 8 9 1
1 5 7 4 8 9
9 1 5 7 4 8
8 9 1 5 7 4
4 8 9 1 5 7
7 4 8 9 1 5
void main()
{
int a[6],i,j,k,m;
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=5;i>=0;i--)
{
k=a[5];
for(________;j>=0;j--)
a[j+1]=a[j];
________;
for(m=0;m<6;m++)
printf("%d",a[m]);
printf("\n");
}
}
75、下面程序的功能是输出以下9*9阶方阵。请填空。
1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1
void main()
{
int a[10][10],n,I,j,m;
scanf("%d",&n);
if(n%2==0) m=n/2;
else ________;
for(i=0;i<m;i++)
for(j=i;j<n-i;j++)
{
a[i][j]=i+1;
a[________][j]=i+1;
a[j][i]=i+1;
a[j][________]=i+1;
}
for(i=0;j<n;j++)
{
for(j=0;j<n;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
76、当从键盘输入18并回车后,下面程序的运行结果是________。
void main()
{
int x,y,i,a[8],j,u,v;
scanf("%d",&x);
y=x; i=0;
do{
u=y/2;
a[i]=y%2;
i++; y=u;
}while(y>=1);
for(j=i-1; j>=0; j--)
printf("%d",a[j]);
}
77、下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组b中,并按矩阵形式输出a和b。请填空。
例如:array a: array b:
4 5 6 6 4 5
1 2 3 3 1 2
void main()
{
int a[2][3]={4,5,6,1,2,3},b[2][3];
int i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<3;j++)
{
printf("%5d",a[i][j]);
________;
}
printf("\n");
}
for(________;i++) b[i][0]=a[i][2];
printf("array b: \n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%5d",b[i][j]);
________;
}
}
78、下面程序的功能是统计年龄在16-31岁之间的学生人数。请填空。
void main()
{
int a[30],n,age,i;
for(i=0;i<30;i++) a[i]=0;
printf("Enter the number of the students(<30)\n");
scnaf("%d",&n);
printf("Enter the age of each student: \n");
for(i=0;i<n;i++)
{
scanf("%d",&age);________;
}
printf("the result is \n");
printf(" age number\n");
for(________i++)
printf("%3d %6d\n",i,a[i-16]);
}
79、下面程序的功能是检查一个二维数组是否对称(即:对所有i和j都有a[i][j]=a[j][i])。请填空。
void main()
{
int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
int i,j,found=0;
for(j=0;j<4;j++)
for(________;i<4;i++)
if(a[j][i]!=a[i][j])
{
________; break;
}
if(found) printf("No");
else printf("Yes");
}
80、下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。请填空。
void main()
{
int a[10],b[10],i;
for(i=0;________;i++)
scanf("%d",&a[i]);
for(i=1;________;i++)
b[i]=a[i]-a[i-1];
for(i=1;i<10;i++)
{
printf("%3d",b[i]);
if(________) printf("\n");
}
}
81、下面程序的运行结果是________。
void main()
{
int i=1,n=3,j,k=3;
int a[5]={1,4,5};
while(i<=n&&k>a[i]) i++;
for(j=n-1;j>=i;j--)
a[j+1]=a[j];
a[i]=k;
for(i=0;i<=n;i++)
printf("%3d",a[i]);
}
82、下面程序的运行结果是________。
void main()
{
int num_list[]={6,7,8,9},k,j,b,u=0,m=4,w;
w=m-1;
while(u<=w)
{
j=num_list[u];
k=2; b=1;
while(k<=j/2&&b)
b=j%++k;
if(b) printf("%d\n",num_list[u++]);
else
{
num_list[u]=num_list[w];
num_list[w--]=j;
}
}
}
83、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int k,s,i;
float ave;
for(k=s=i=0;i<10;i++)
{
if(a[i]%2!=0) ________;
s+=________;
k++;
}
if(k!=0) {ave=s/k; printf("%d,%f\n",k,ave);}
}
84、以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。请填空。
void main()
{
int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};
int b[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};
int i,j,c[3][4];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
c[i][j]=________;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%3d",c[i][j]);
________;
}
}
85、以下程序是求矩阵a,b的乘积,结果存入矩阵c中并按矩阵形式输出。请天空。
void main()
{
int a[3][2]={2,-1,-4,0,3,1};
int b[2][2]={7,-9,-8,10};
int i,j,k,s,c[3][2];
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
for(________; k<2; k++)
s+=________;
c[i][j]=s;
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%6d",c[i][j]);
________
}
}
86、已知以下矩阵:
┏ ┓ ┏ ┓ ┏ ┓
┃ Y1 ┃ ┃ 1 -0.2 0 0 ┃ ┃ 1 ┃
┃ Y2 ┃ = ┃-0.8 1 -0.2 -0.2┃ × ┃ 1 ┃
┃ Y3 ┃ ┃ 0 -0.8 1 -0.2┃ ┃ 1 ┃
┃ Y4 ┃ ┃ 0 -0.8 -0.8 1 ┃ ┃ 1 ┃
┗ ┛ ┗ ┛ ┗ ┛
下面程序的功能是求出Y1,Y2,Y3,Y4的值。请填空。
void main()
{
float a[4][4]={ {1,-0.2,0,0},
{-0.8,1,-0.2,-0.2},
{0,-0.8,1,-0.2},
{0,-0.8,-0.8,1} };
float x[4]={1,1,1,1},y[4];
int i,j,k;
for(i=0;i<4;i++)
{
y[i]=0;
for(j=0;j<4;j++)
________
}
for(k=0;k<4;k++)
printf("\nY[%d]=%-6.2f",k+1,________);
}
87、以下程序的功能是求数值num中小于零的数据之和。请填空。
void main()
{
int num[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20};
int sum=0,i;
for(i=0;i<=19;i++)
{
if(________)
sum=________;
}
printf("sum=%6d",sum);
}
88、以下程序的功能是________。
void main()
{
int num[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};
int sum=0,1;
for(i=0;i<10;i++)
{
if(num[i]>0)
sum=num[i]+sum;
}
printf("sum=%6d",sum);
}
89、下面程序的运行结果是________。
void main()
{
int i,j,row,col,min;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}};
min=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]<min)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -