📄 练习(四).txt
字号:
数组
1、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )
(A) 整型常量
(B) 整型表达式
(C) 整型常量或整型表达式
(D) 任何类型的表达式
2、以下对一维整型a的正确说明是( )
(A) int a(10);
(B) int n=10,a[n];
(C) int n;
scnaf("%d",&n);
int a[n];
(D) #define SIZE 10
int a[SIZE];
3、若有说明:int a[10]; 则对a数组元素的正确引用是( )
(A) a[10]
(B) a[3,5]
(C) a(5)
(D) a[10-10]
4、在C语言中,一维数组的定义方式为:类型说明符 数组名 ( )
(A) [常量表达式]
(B) [整型表达式]
(C) [整型常量]或[整型表达式]
(D) [整型常量]
5、以下能对一维数组a进行正确初始化的语句是( )
(A) int a[10]=(0,0,0,0,0);
(B) int a[10]={};
(C) int a[]={0};
(D) int a[10]={10*1};
6、以下对二维数组a的正确说明是( )
(A) int a[3][];
(B) float a(3,4);
(C) double a[1][4];
(D) int a(3)(4);
7、若有说明:int a[3][4]; 则对a数组元素的正确引用是( )
(A) a[2][4]
(B) a[1,3]
(C) a[1+1][0]
(D) a(2)(1)
8、若有说明:int a[3][4]; 则对a数组元素的非法引用是( )
(A) a[0][2*1]
(B) a[1][3]
(C) a[4-2][0]
(D) a[0][4]
9、以下能对二维数组a进行正确初始化的语句是( )
(A) int a[2][]={{1,0,1},{5,2,3}};
(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,1}};
10、以下不能对二维数组a进行正确初始化的语句是( )
(A) int a[2][3]={0};
(B) int a[][3]={{1,2},{0}};
(C) int a[2][3]={{1,2},{3,4},{5,6}};
(D) int a[][3]={1,2,3,4,5,6};
11、若有说明:int a[3][4]={0}; 则下面正确的叙述是( )
(A) 只有元素a[0][0]可得到初值0
(B) 此说明语句不正确
(C) 数组a中各元素都可得到初值,但其值不一定为0
(D) 数组a中每个元素均可得到初值0
12、若有说明:int a[][4]={0,0}; 则下面不正确的叙述是( )
(A) 数组a的每个元素都可得到初值0
(B) 二维数组a的第一维大小为1
(C) 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
(D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
13、若有说明:int a[3][4]; 则数组a中各元素( )
(A) 可在程序的运行阶段得到初值0
(B) 可在程序的编译阶段得到初值0
(C) 不能得到确定的初值
(D) 可在程序的编译或运行阶段得到初值0
14、以下各组选项中,均能正确定义二维实型数组a的选项是( )
(A) float a[3][4];
float a[][4];
float a[3][]={{1},{0}};
(B) float a(3,4);
float a[3][4];
float a[][]={{0};{0}};
(C) float a[3][4];
static float a[][4]={{0},{0}};
auto float a[][4]={{0},{0},{0}};
(D) float a[3][4];
float a[3][];
float a[][4]
15、下面程序( )(每行程序前面的数字表示行号)
1 void main()
2 {
3 int a[3]={3*0};
4 int i;
5 for(i=0;i<3;i++) scanf("%d",&a[i]);
6 for(i=1;i<3;i++) a[0]=a[0]+a[i];
7 printf("%d\n",a[0]);
8 }
(A) 第3行有错误
(B) 第7行有错误
(C) 第5行有错误
(D) 没有错误
16、下面程序( )(每行程序前面的数字表示行号)
1 void main()
2 {
3 float a[10]={0.0};
4 int i;
5 for(i=0;i<3;i++) scanf("%d",&a[i]);
6 for(i=1;i<10;i++) a[0]=a[0]+a[i];
7 printf("%f\n",a[0]);
8 }
(A) 没有错误
(B) 第3行有错误
(C) 第5行有错误
(D) 第7行有错误
17、下面程序中有错误的行是( )(每行程序前面的数字表示行号)
1 void main()
2 {
3 int a[3]={1};
4 int i;
5 scanf("%d",&a);
6 for(i=1;i<3;i++) a[0]=a[0]+a[i];
7 printf("a[0]=%d\n",a[0]);
8 }
(A) 3
(B) 6
(C) 7
(D) 5
18、下面程序( )(每行程序前面的数字表示行号)
1 void main()
2 {
3 int a[3]={0};
4 int i;
5 for(i=0;i<3;i++) scanf("%d",&a[i]);
6 for(i=1;i<4;i++) a[0]=a[0]+a[i];
7 printf("%d\n",a[0]);
8 }
(A) 没有错误
(B) 第3行有错误
(C) 第5行有错误
(D) 第6行有错误
19、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为( )(假设a[0][0]位于数组的第一个位置上。)
(A) i*m+j
(B) j*m+i
(C) i*m+j-1
(D) i*m+j+1
20、对以下说明语句的正确理解是( )
int a[10]={6,7,8,9,10};
(A) 将5个初值依次赋给a[1]至a[5]
(B) 将5个初值依次赋给a[0]至a[4]
(C) 将5个初值依次赋给a[6]至a[10]
(D) 因为数组长度与初值的个数不相同,所以此语句不正确
21、以下不正确的定义语句是( )
(A) double x[5]={2.0,4.0,6.0,8.0,10.0};
(B) int y[5]={0,1,3,5,7,9};
(C) char c1[]={'1','2','3','4','5'};
(D) char c2[]={'\x10','\xa','\x8'};
22、若有说明:int a[][3]={1,2,3,4,5,6,7}; 则a数组第一维的大小是( )
(A) 2
(B) 3
(C) 4
(D) 无确定值
23、若二维数组a有m列,则在a[i][j]前的元素个数为( )
(A) j*m+i
(B) i*m+j
(C) i*m+j-1
(D) i*m+j+1
24、定义如下变量和数组:
int k;
int a[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )
for(k=0;k<3;k++) printf("%d",a[k][2-k]);
(A) 3 5 7
(B) 3 6 9
(C) 1 5 9
(D) 1 4 7
25、若有以下程序段:
......
int a[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{
t=a[i]; j=i-1;
while(j>=0&&t>a[j]){ a[j+1]=a[j]; j--;}
a[j+1]=t;
}
......
则该程序段的功能是( )
(A) 对数组a进行插入排序(升序)
(B) 对数组a进行插入排序(降序)
(C) 对数组a进行选择排序(升序)
(D) 对数组a进行选择排序(降序)
26、以下正确的定义语句是( )
(A) int a[1][4]={1,2,3,4,5};
(B) float x[3][]={{1},{2},{3}};
(C) long b[2][3]={{1},{1,2},{1,2,3}};
(D) double y[][3]={0};
27、下面程序的运行结果是( )
void main()
{
int a[6][6],i,j;
for(i=1;i<6;i++)
for(j=1;j<6;j++)
a[i][j]=(i/j)*(j/i);
for(i=1;i<6;i++)
{
for(j=1;j<6;j++)
printf("%2d",a[i][j]);
printf("\n");
}
}
(A) 11111
11111
11111
11111
11111
(B) 00001
00010
00100
01000
10000
(C) 10000
01000
00100
00010
00001
(D) 10001
01010
00100
01010
10001
28、下面程序的运行结果是( )
void main()
{
int a[6],i;
for(i=1;i<6;i++)
{
a[i]=9*(i-2+4*(i>3))%5;
printf("%2d",a[i]);
}
}
(A) -40404
(B) -40403
(C) -40443
(D) -40440
29、下面是对s的初始化,其中不正确的是( )
(A) char s[5]={"abc"};
(B) char s[5]={'a','b','c'};
(C) char s[5]="";
(D) char s[5]="abcdef";
30、下面程序段的运行结果是( )
char c[5]={'a','b','\0','c','\0'};
printf("%s",c);
(A) 'a''b'
(B) ab
(C) ab c
(D) abc
31、对两个数组a和b进行如下初始化
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
则以下叙述正确的是( )
(A) a与b数组完全相同
(B) a与b长度相同
(C) a和b中都存放字符串
(D) a数组比b数组长度长
32、有两个字符数组a、b,则以下正确的输入语句是( )
(A) gets(a,b);
(B) scanf("%s%s",a,b);
(C) scanf("%s%s",&a,&b);
(D) gets("a"),gets("b");
33、有字符数组a[80]和b[80],则正确的输出语句是( )
(A) puts(a,b);
(B) printf("%s,%s",a[],b[]);
(C) putchar(a,b);
(D) puts(a),puts(b);
34、下面程序段的运行结果是( )
char a[7]="abcdef";
char b[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
(A) 空格
(B) \0
(C) e
(D) f
35、有下面的程序段
char a[3],b[]="China";
a=b;
printf("%s",a);
则( )
(A) 运行后将输出China
(B) 运行后将输出Ch
(C) 运行后将输出Chi
(D) 编译出错
36、下面程序段的运行结果是( )
char c[]="\t\v\\\0will\n";
printf("%d",strlen(c));
(A) 14
(B) 3
(C) 9
(D) 字符串中有非法字符,输出值不确定
37、判断字符串a和b是否相等,应当使用( )
(A) if(a==b)
(B) if(a=b)
(C) if(strcpy(a,b))
(D) if(strcmp(a,b))
38、判断字符串s1是否大于字符串s2,应当使用( )
(A) if(s1>s2)
(B) if(strcmp(s1,s2))
(C) if(strcmp(s2,s1)>0)
(D) if(strcmp(s1,s2)>0)
39、下面程序段是输出两个字符串中对应相等的字符。请选择填空①( )
char x[]="programming";
char y[]="Fortran";
int i=0;
while(x[i]!='\0'&&y[i]!='\0')
if(x[i]==y[i]) printf("%c", ① );
else i++;
(A) x[i++]
(B) y[++i]
(C) x[i]
(D) y[i]
40、下面描述正确的是( )
(A) 两个字符串所包含的字符个数相同时,才能比较字符串
(B) 字符个数多的字符串比字符个数少的字符串大
(C) 字符串"STOP "与"STOP"相等
(D) 字符串"That"小于字符串"The"
41、下述对C语言字符数组的描述中错误的是( )
(A) 字符数组可以存放字符串
(B) 字符数组的字符串可以整体输入、输出
(C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
(D) 不可以用关系运算符对字符数组中的字符串进行比较
42、有已排好序的字符串a,下面的程序是将字符串s中的每个字符按升序的规律插入到a中。请选择填空①( )②( )
#include<stdio.h>
void main()
{
char a[20]="cehiknqtw";
char s[]="fbla";
int i,k,j;
for(k=0;s[k]!='\0';k++)
{
j=0;
while(s[k]>=a[j]&&a[j]!='0') j++;
for( ① ;) ② ;
a[j]=s[k];
}
puts(a);
}
① (A) i=strlen(a)+k; i>=j; i--
(B) i=strlen(a); i>=j; i--
(C) i=j; i<=strlen(a)+k; i++
(D) i=j; i<=strlen(a); i++
② (A) a[i]=a[i+1]
(B) a[i+1]=a[i]
(C) a[i]=a[i-1]
(D) a[i-1]=a[i]
43、下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中,请选择填空①( )②( )③( )
#include<stdio.h>
void main()
{
char a[]="acegikm";
char b[]="bdfhjlnpq";
char c[80],*p;
int i=0,j=0,k=0;
while(a[i]!='\0'&&b[j]!='\0')
{
if(a[i]<b[j] { ① }
else { ② }
k++;
}
c[k]='\0';
if( ③ ) p=b+j;
else p=a+i;
strcat(c,p);
puts(c);
}
① (A) c[k]=a[i];i++;
(B) c[k]=a[j];i++;
(C) c[k]=a[i];j++;
(D) c[k]=a[j];j++;
② (A) c[k]=a[i];i++;
(B) c[k]=a[j];i++;
(C) c[k]=a[i];j++;
(D) c[k]=a[j];j++;
③ (A) a[i]=='\0'
(B) a[i]!='\0'
(C) a[i-1]=='\0'
(D) a[i-1]1='\0'
44、下面程序的功能是将字符s中所有的字符c删除。请选择填空①( )
#include<stdio.h>
void main()
{
chr s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c') ① ;
s[j]='\0';
puts(s);
}
(A) s[j++]=s[i]
(B) s[++j]=s[i]
(C) s[j]=s[i]; j++
(D) s[j]=s[i]
45、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请选择填空①( )
#include<stdio.h>
void main()
{
char s[80],c1,c2=' ';
int i=0,num=0;
gets(s);
while(s[i]!='\0')
{
c1=s[i];
if(i==0) c2=' ';
else c2=s[i-1];
if( ① ) num++;
i++;
}
printf("There are %d words.\n",num);
}
(A) c1==' ' && c2==' '
(B) c1!=' ' && c2==' '
(C) c1==' ' && c2!=' '
(D) c1!=' ' && c2!=' '
46、下面程序的运行结果是( )
#include<stdio.h>
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);
}
(A) 1
(B) 1256
(C) 12ab56
(D) 1
2
5
6
47、当运行以下程序时,从键盘输入:aa bb<CR>
cc dd<CR>
(<CR>表示回车),则下面程序的运行结果是( )
#include<stdio.h>
void main()
{
char a1[5],a2[5],a3[5],a4[5];
scanf("%s%s",a1,a2);
gets(a3); gets(a4);
puts(a1); puts(a2);
puts(a2); puts(a4);
}
(A) aa
bb
cc dd
(B) aa
bb
cc
dd
(C) aa
bb
cc dd
ee
(D) aa bb
cc
dd
48、当运行以下程序时,从键盘输入:ab<CR>
c<CR>
def<CR>
(<CR>表示回车),则下面程序的运行结果是( )
#include<stdio.h>
#define N 6
void main()
{
char c[N];
int i=0;
for( ; i<N; c[i]=getchar(),i++);
for(i=0; i<n; i++) putchar(c[i]);
}
(A) abcdef
(B) a
b
c
d
e
f
(C) b
c
d
(D) ab
c
d
49、当运行以下程序时,从键盘输入:AhaMA Aha<CR>(<CR>表示回车),则下面程序的运行结果是( )
#include<stdio.h>
void main()
{
char s[80],c='a';
int i=0;
scanf("%s",s);
while(s[i]!='\0')
{
if(s[i]==c) s[i]=s[i]-32;
else if(s[i]==c-32) s[i]=s[i]+32;
i++;
}
put(s);
}
(A) ahAMa
(B) AhAMa
(C) AhAMa ahA
(D) ahAMa ahA
50、下面程序的运行结果是( )
#include<stdio.h>
#include<sring.h>
void main()
{
char a[80]="AB", b[80]="LMNP";
int i=0;
strcat(a,b);
while(a[i++]!='\0') b[i]=a[i];
puts(b);
}
(A) LB
(B) ABLMNP
(C) AB
(D) LBLMNP
51、下面程序的运行结果是( )
#include<stdio.h>
void main()
{
char str[]="SSSWLIA",c;
int k;
for(k=2;(c=str[k])!='\0';k++)
{
switch(c)
{
case 'I': ++k; break;
case 'L': continue;
default: putchar(c); continue;
}
putchar('*');
}
}
(A) SSW*
(B) SW*
(C) SW*A
(D) SW
52、下面程序的运行结果是( )
#include<stdio.h>
void main()
{
char a[]="morning",t;
int i,j=0;
for(i=1;i<7;i++)
if(a[j]<a[i]) j=i;
t=a[j]; a[j]=a[7];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -