【习题5-1】
一、选择题
1.有定义语句“int a[][3]={1, 2, 3, 4, 5, 6};”,则a[1][0]的值是 A 。
A.4 B. 1 C. 2 D. 5
2.执行下面的程序段后,变量k中的值为 A 。
int k=3,s[2];
s[0]=k;
k=s[1]*10;
A.不定值 B.33 C.30 D.10
3.在定义“int a[10];”之后,对a元素的引用正确的是 D 。
A.a[10] B.a[6,3] C. a(6) D.a[10-10]
4.以下程序的输出结果是 C 。
void main()
{
int a[10],i;
for(i=9;i>=0;i--)
a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A.258 B.741 C.852 D.369
5.以下程序的输出结果是 D 。
void main()
{
int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2)
{k=k+p[i];
i++;}
printf(”%d\n”,k);
}
A.58 B.56 C.45 D.24
6.以下数组定义中不正确的是 B 。
A.int a[2][3];
B.int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
C.int c[100][100]={0};
D.int b[][2]={0,1,2,3};
7.以下能正确定义数组并正确赋初值的语句是 D 。
A.int N=5,b[N][N]; B.int a[1][2]={{1},{3}};
C.int c[2][]={{1,2},{3,4}}; D.int d[3][2]={{1,2},{34}};
8.以下程序的输出结果是 D 。
void main()
{
int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
printf(”%d\n”,s);
}
A.21 B.19 C.20 D.18
9.以下程序的输出结果是 C 。
void main()
{
int x[3][3]={1,2,3,4,5,6,7,8,9},i;
for(i=0;i<3;i++)
printf(”%d ”,x[i][2-i]);
}
A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9数组全部赋值为1
10.若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是 A 。
float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};
A. 0.0 B. 4.0 C. 5.0 D. 6.0
二、填空题
1.在定义“int a[5][6];”后,第10个元素是 a[1][3] 。
2.有以下程序
void main()
{
int m[][3]={1,4,7,2,5,8,3,6,9};
int i,k=2;
for(i=0;i<3;i++)
printf(”%d”,m[k][i]);
}
执行后的输出结果是 369 。
3.若有以下程序,执行后的输出结果是 58 。
void main()
{
int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},
{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(a[i][j] <0) continue;
if(a[i][j] ==0) break;
s+=a[i][j];
}
}
printf(”%d\n”,s);
}
4.以下程序的输出结果是 4 。
void main()
{
int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)
t=t+b[i][b[j][i]];
printf("%d\n",t);
}
三、编程题
1.编写程序实现下述功能:有10位学生的成绩:17、34、90、88、55、74、95、82、43、90、编写程序出其中的最高分,并将最高分与第一个成绩交换位置。
#include <stdio.h>
void main()
{
int score[11]={0,17,34,90,88,55,74,95,82,43,90};
int max,max_index;
int i,temp;
max=score[1];
max_index=1;
for(i=2;i<=10;i++)
{
if(score[i]>max)
{
max=score[i];
max_index=i;
}
}
printf("交换前的10个成绩\n");
for(i=1;i<=10;i++)
{
printf("%3d",score[i]);
}
printf("\n");
temp=score[1];
score[1]=score[max_index];
score[max_index]=temp;
printf("交换后的10个成绩\n");
for(i=1;i<=10;i++)
{
printf("%3d",score[i]);
}
printf("\n");
}
2.编写程序实现下述功能:将数组a的内容逆置重放。要求不得另外开辟数组, 只能借助于一个临时存储单元。
#define N 5
#include <stdio.h>
void main()
{
int a[N]={0,17,34,90,88};
int i,temp;
printf("正序:\n");
for(i=0;i<N;i++)
{
printf("%3d",a[i]);
}
printf("\n");
for(i=0;i<N/2;i++)
{
temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("逆序:\n");
for(i=0;i<N;i++)
{
printf("%3d",a[i]);
}
printf("\n");
}
3.编写程序实现下述功能:有一个已经排好序的数组。要求输入一个数,在数组中查是否有这个数,如果有,将该数从数组中删除,要求删除后的数组仍然保持有序;如果没有,则输出“数组中没有这个数!”
void main()
{
int a[10]={1,4,6,9,13,16,19,28,40,100};
int number,i,j;
printf("\n 原始数组为:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("输入要删除的数:");
scanf("%d",&number);
for (i=0;i<10;i++)
{
if (a[i]==number)
{
break;
}
}
if(i<10)
{
for(j=i;j<10;j++)
a[j]=a[j+1];
printf("\n 删除%d后的数组为:\n",number);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论