一、选择题
1. 对一维数组a的正确说明是 D 。
A) int a(10); B) int n=10,a[n];C) int n; D) #define SIZE 10
scanf("%d",&n); int a[SIZE];
int a[n];
2. 能对二维数组a进行正确初始化的语句是 B 。
A) int a[2][]={{1,0,1},{5,3,2}};B) int a[][3]={{1,2,3},{4,5,6}};
C) int a[2][4]={{1,2,3},{4,5},{6}};D)int a[][3]={{1,0,1},{1,2,3,4},{1,1}};
3. 对两个数组 a和 b进行如下初始化
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
则以下叙述正确的是 D 。
A) a与b数组完全相同 B) a与b长度相同
C) a和b中都存放字符串 D) a数组比b数组长度长
4. 以下数组定义中不正确的是 D 。
A) int a[2][3];B) int b[][3]={0,1,2,3,4,5};
C) int c[100][100]={0};D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
5. 以下选项中,不能正确赋值的是 A 。
A) char s1[10];s1="Ctest";B) char s2[]={'C', 't', 'e', 's', 't'};
C) char s3[20]="Ctest";D) char s4[]="Ctest\n"
二、阅读程序写出结果
1.
#include
void main()
{ char ch[7]={"12ab56"};
int i,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
答案:1
2.
#include
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)
{ n++;
for(k=j;k<10-n;k++)
a[k]=a[k+1];
}
}
for(i=0;i
printf("%d",a[i]);
}
答案:12345
3.
#include
void main()
{ int i;
char a[]="Time",b[]="Tom";
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
if(a[i]==b[i])
if(a[i]>='a'&&a[i]<='z')
printf("%c",a[i]-32);
else
printf("%c",a[i]+32);
else printf("*");
}
答案: t*M
4.
#include
#define LEN 4
void main()
{ int j,c;
static char n[2][LEN+1]={"8980","9198"};
for(j=LEN-1;j>=0;j--)
{c=n[0][j]+n[1][j]-2*'0';
n[0][j]=c%10+'0';
}
for(j=0;j<=1;j++) puts(n[j]);
}
答案:7078 9198
三、程序填空
1.
程序的功能是在a数组中查找与x值相同的元素的所在位置。
#include
void main()
{
int a[11],x,i;
printf("Enter 10 integers :\n");
for(i=1;i<=10;i++)
scanf("%d",a[i]);
printf("Enter x :");
scanf("%d",&x);
a[0]=x;
i=10;