2022年湖北专升本C语言数组模拟题
一、单项选择题
1.下列描述中不正确的是( C )。
A) 字符型数组中可以存放字符串
B) 可以对字符型数组进行整体输入、输出
C) 可以对整型数组进行整体输入、输出
D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
2.执行下面的程序段后,变量 k 中的值为( A )。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A) 不定值
B) 33
C) 30
D) 10
3.设有数组定义: char array[ ]="China"; 则数组 array 所占的空间为( C )。
A) 4 个字节
B) 5 个字节
C) 6 个字节
D) 7 个字节
4.下列程序执行后的输出结果是( A )。
#include
main()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]=’&’;
printf("%s \n",arr);
}
A) you&me
B) you
C) me
D) err
5.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是( D )。
main()
{ char s[100];
int c, i;
scanf("%c", &c);
scanf("%d", &i);
scanf("%s", s);
printf("%c, %d, %s\n", c, i, s);
}
A) 123,456,789
B) 1,456,789
C) 1,23,456,789
D) 1,23,456
6.假定 int 类型变量占用两个字节,若有定义:int x[10]={0,2,4}; 则数组 x 在内存中所占字节数是( D)。
A) 3
B) 6
C) 10
D) 20
7.以下程序的输出结果是( C)。
main()
{int i, a[10];
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
8.以下数组定义中不正确的是( D )。
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) int c[100][100]={0};
D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
9.以下程序的输出结果是( A )。
main()
{int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n", a[0][3],a[1][2],a[2][1],a[3][0]);
}
A) 0650
B) 1470
C) 5430
D) 输出值不定
10.以下程序的输出结果是( B )。
#include
main()
{char st[20]="hello\0\t\\\";
printf(%d %d\n", strlen(st),sizeof(st));
}
A) 9 9
B) 5 20
C) 9 20
D) 20 20
11.以下程序的输出结果是(B)。
main()
{int i,k,a[10],p[3];
k=5;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3;i++) p[i]=a[i*(i+1)];
for(i=0;i<3;i++) k+=p[i]*2;
printf("%d\n",k);
}
A) 20
B) 21
C) 22
D) 23
12.以下程序的输出结果是( C)。
main()
{int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) printf("%d", x[i][2-i]);
}
A) 159
B) 147
C) 357
D) 369
13.以下程序的输出结果是( A )。
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) 18
B) 19
C) 20
D) 21
14.以下程序的输出结果是( D)。
main()
{char w[ ][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++) printf("%s\n",w[k]);
}
15.当执行下面的程序时,如果输入 ABC,则输出结果是( A)。
#include
#include
main()
{char ss[10]="12345";
gets(ss);strcat(ss,"6789");printf("%s\n", ss);
}
A) ABC6789
B) ABC67 C) 12345ABC6
D) ABC456789
16.若要定义 c 为 2×3×4 的三维数组,正确的定义语句是( A )。
A) float c[2][3][4]
B) float c[2,3,4]
C) float c(2,3,4)
D) float c(2)(3)(4)
17.若定义 int a[2][2]={1,2,3,4},则 a 数组的各数组元素值分别为( A )。
A) a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4
B) a[0][0]=1,a[0][1]=3,a[1][0]=2,a[1][1]=4
C) a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1
D) a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1
18.在下列叙述中,正确的一条是( A )。
A) 以下语句是正确的:char c[]=”ab”;
B) 一维数组的定义可采用下列格式:int a(10);
C) 下面的语句定义了一个二维数组:float a[3,4];
D) 以下两个语句中的 a[3][4]的含义相同:int a[3][4]; a[3][4]=1;
19.当输入的数据为 2、5 时,以下程序的输出结果是( C )。
#include
main()
{int f[100],i,j,k,m;
scanf(“%d%d”,&k,&m);
for(i=0;i<=m;i++) f[i]=0;
f[k-1]=1;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++)
f[i]+=f[j];
printf(“%d%10d%10d\n”,k,m,f[m]);
}
A) 3 5 5
B) 3 5 7
C) 2 5 5
D) 3 6 9
20.在下列语句中,正确的是(A)。
A) char str[]=”China”;
B) char str[];str=”China”;
C) char str1[5],str2[]={”China”};str1=str2;
D) char str1[],str2[];str2={”China”};strcpy(str1,str2);
21.下面语句中不正确的是( D )。
A) int a[5]={1,2,3,4,5};
B) int a[5]={1,2,3};
C) int a[]={0,0,0,0,0};
D) int a[5]={0*5};
22.若先后输入 4、1、5、3、7,以下程序的输出结果为( D)。
#define MAX 100
main()
{
int i,j,n,flag,t,a[MAX];
printf(“输入数据个数:”);
scanf(“%d\n”,&n);
for(i=1;i<=n;i++) scanf(“%d”,&a[i]);
for(i=1;i {flag=1; for(j=1;j<=n-i;j++) if(a[j]>a[j+1]) {flag=0; t=a[j]; a[j]=a[j+1]; a[j+1]=t; } if(flag) break; } for(i=1;i<=n;i++) printf(“%-3d”,a[i]); printf(“\n”); } A) 2 4 6 7 B) 1 2 3 4 C) 1 5 4 7 D) 1 3 5 7 23.以下程序的输出结果是( B )。 main() {int n,a[10]; for(n=0;n<=9;n++) a[n]=n; for(n=9;n>=0;n--) printf(“%d”,a[n]); } A) 1 2 3 4 5 6 7 8 9 10 B) 9 8 7 6 5 4 3 2 1 0 C) 10 9 8 7 6 5 4 3 2 1 D) 0 1 2 3 4 5 6 7 8 9 24.若输入 aefjhi、c、adfjhijk,以下程序的输出结果为(B)。 #include #include main() {int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf(“The largest string is\n%s\n”,string); } A) adfjhi B) c C) aefjhijk D) aefjhi 25.以下程序的输出结果是( A )。 #include #include main() {char str[12]={’s’,’t’,’r’,’i’,’n’,’g’}; printf(“%d\n”,strlen(str)); } A) 6 B) 7 C) 11 D) 12 26.有以下程序: #include #define N 6 main() {char c[N]; int i=0; for(;i for(i=0;i } 输入以下三行,每行输入都是在第一列上开始, a b cdef 程序的输出结果是( C)。c[i]={'a','\0','b','\0','c','d'} A) abcdef B) a b c d e f C) a b cd D) a b d cdef 27.设有:char str[ ]=“Beijing”; 则执行:printf(“ %d\n”, strlen(strcpy(str, “China”))); 后输出的结果为( A )。"china"copy to str with '\0',it will stop when the strlen meets with '\0'. A) 5 B) 7 C) 12 D) 14 28.请选出以下程序的输出结果( A)。 #include main() {char s1[10],s2[10],s3[10],s4[10]; scanf(“%s%s”,s1,s2);gets(s3);gets(s4); puts(s1);puts(s2);puts(s3);puts(s4); } 输入数据如下:(此处代表回车符) aaaa bbbb cccc dddd A) aaaa bbbb cccc dddd B) aaaa bbbb cccc dddd C) aaaa bbbb cccc dddd eeee D) aaaa bbbb cccc dddd 29.请读程序: 上面程序的输出结果是( A )。 A) 不确定的值 B) 3 C) 2 D) 1 30.请读程序片段(字符串内没有空格字符):printf(“%d\n”,strlen(“ATS\n012\1\\”));其输出结果应为(C)。 A) 11 B) 10 C) 9 D) 12 31.下述对 C 语言字符数组的描述中错误的是( C)。 A) 字符数组可以存放字符串 B) 字符数组中的字符串可以整体输入、输出 C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D) 不可以用关系运算符对字符数组中的字符串进行比较 32.阅读下列程序: main() {int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i for(j=0;j n[j]=n[i]+1; printf(“%d\n”,n[1]); } 上述程序运行后,输出的结果是( D )。 A) 2 B) 1 C) 0 D) 3 33.以下程序的输出结果是(C)。 main() {int n[3][3], i, j; for(i=0;i<3;i++) for(j=0;j<3;j++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0;j<2;j++) n[i+1][j+1]+=n[i][j]; printf(“%d\n”, n[i][j]); } A) 14 B) 0 C) 6 D) 值不确定 34.以下语句的输出结果为( A )。 printf(“%d\n”, strlen(“\t\”\065\xff\n”)); A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出 35.合法的数组定义是( D )。 A) int a[]=”string”; B) int a[5]={0,1,2,3,4,5}; C) char a=”string”; D) char a[]={0,1,2,3,4,5}; 36.以下程序的输出结果是( D )。 main() {char w[ ][10]={"ABCD","EFGH","IJKL","MNOP"},k; for(k=1;k<3;k++) printf("%s\n", &w[k][k]); } 37.函数调用 strcat( strcpy(str1,str2), str3 )的功能是( C )。 A) 将串 str1 复制到串 str2 中后再连接到串 str3 之后 B) 将串 str1 连接到串 str2 之后再复制到串 str3 之后 C) 将串 str2 复制到串 str1 中后再将串 str3 连接到串 str1 之后 D) 将串 str2 连接到串 str1 之后再将串 str1 复制到串 str3 之后 38.有以下定义: char x[ ]=“abcdefg”; char y[ ]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’}; 则正确的叙述为( C )。 A) 数组 x 和数组 y 等价 B) 数组 x 和数组 y 的长度相同 C) 数组 x 的长度大于数组 y 的长度 D) 数组 x 的长度小余数组 y 的长度 39.下面程序的运行结果是( C )。 main() {char ch[7]={"65ab21"}; 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) 12ba56 B) 6521 C) 6 D) 62 40.以下程序运行后,输出结果是( B )。 main() {int y=18, i=0, j, a[8]; do {a[i]=y%2; i++; y=y/2; }while(y>=1); for(j=i-1;j>=0;j--) printf("%d", a[j]); printf(“\n”); } A) 10000 B) 10010 C) 00110 D) 10100 41.以下程序的输出结果是( D )。 main() {int n[5]={0,0,0}, i, k=2; for(i=0; i printf("%d\n", n[k]); } A) 不确定的值 B) 2 C) 1 D) 0 42.若有定义和语句:char s[10];s=”abcd”;printf(“%s\n”,s);则输出结果是( D )。 A) abcd B) a C) abc D) 编译通不过 二、填空题 1.下面程序的功能是:将字符数组 a 中下标值为偶数的元素从小到大排列,其它元素不变。请填空。 #include #include main() {char a[ ]="clanguage", t; int i, j, k; k=strlen(a); for(i=0; i<=k-2; i+=2) for(j=i+2; j if( a[j]>a[i] ) { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf("\n"); } 2.若有定义语句:char s[100],d[100]; int j=0, i=0;,且 s 中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) while(s[i]){ d[j]= s[i++];j++;} d[j]=0; 3.下列程序段的输出结果是 Hello。 main() { char b[]="Hello,you"; b[5]=0; printf("%s\n", b); } 4.若想通过以下输入语句使 a 中存放字符串 1234,b 中存放字符 5,则输入数据的形式应该是a=1234 b=5。 char a[10], b; scanf(“a=%s b=%c”, a, &b); 5.以下程序可以把从键盘上输入的十进制数(long 型)以二到十六进制数的形式输出,请填空。 main() {int b[16]={‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’}; int c[64], d, i=0, base; long n; printf(“Enter a number:\n”); scanf(“%ld”, &n); printf(“Enter new base:\n”); scanf(“%d”, &base); do {c[i]= n%base; i++; n=n/base; }while(n!=0); printf(“Transmite new base:\n”); for(--i;i>=0;--i) {d=c[i]; printf("%c", [ d]); }} 6.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中的第一个不相同字符的ASCII 码之差。例如:输入的两个字符串分别为 abcdefg 和 abceef,则输出为-1。请填空。 main() {char str1[100], str2[100], c; int i, s; printf(“\n Input string 1:\n”); gets(str1); printf(“\n Input string 2:\n”); gets(str2); i=0; while((str1[i]= =str2[i])&&(str1[i]!= ' \0 ' )) i++; s=str1[i]-str2[i]; printf("%d\n", s); } 7.以下语句的输出结果是2。 printf(“%d\n”, strlen(“\t\”\085\xff\n”)); 8.对数组中的元素值进行排序: main() {int a[ ]={2,4,15,3,17,5,8,23,9,7,11,13}, i, j, k; for(k=0;k<12;k++) for(i=k;i<12;i++) if(a[i]>a[k]) {j=a[i]; a[i]=a[k]; a[k]=j; } for(i=0;i<12;i++) printf(“%4d”, a[i]); } 9.由 25 人围坐成圆圈,先从任意一人出发用 1 到 25 顺时针依次编号,然后从 1 号开始顺时针报数(1、2、3、……),凡报 5 的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。 #include Void main() {int a[26], j, n, count; for(j=1;j<=25;j++) a[j]=j; j=1;count=0;n= 0; do {if(a[j]!=0) {n++; if(n%5= =0) {a[j]=0; if(count= =24) printf(“%d\n”, j); count++; } } j++; if(j>25) j=1; } while( count<25); } 10.阅读下列程序: main() {int i, j, row, column, m; int array[3][3]={{100, 200, 300}, {28, 72, -30}, {-850, 2, 6}}; m=array[0][0]; for(i=0; i<3; i++) for(j=0; j<3; j++) if(array[i][j] {m=array[i][j]; row=i; column=j;} printf("%d, %d, %d\n", m, row, column); } 上述程序的输出结果是 -850,2,0。 11.以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main() {float x[1000], sum=0.0, ave, a; int i, n=0; printf(“Enter mark:\n”); scanf(“%f”, &a); while(a>=0.0&&n<1000) {sum+=a; x[n]=a; n++; scanf(“%f”, &a);} ave=sum/n; printf(“Output:\n”); printf(“ave=%f\n”, ave); for(i=0;i if(ave>a[i]) printf(“%f\n”, x[i]); } 以上就是关于2022年湖北专升本C语言数组模拟题的全部内容了,如果你还有专升本相关的疑惑(如专升本报名、考试动态、院校招生简章、统考动态、湖南专升本院校、历年真题、考试大纲、专升本等相关信息),可以在文章下方留下你的联系方式,老师会第一时间联系到你,为你答疑解惑哦! 部分内容来源于网络转载、学生投稿,如有侵权或对本站有任何意见、建议或者投诉,请联系邮箱(1296178999@qq.com)反馈。
未经本站授权,不得转载、摘编、复制或者建立镜像, 如有违反,本站将追究法律责任!