文章教程

全国计算机等级考试二级C语言7.4综合自测

8/22/2020 10:24:52 PM 人评论 次浏览

7.4 综合自测

一、选择题

1.有以下程序:

#include <stdio.h>

#include <string.h>

main()

{ char a[ ] ={'a','b','c','d','e','f','g','h','\0'};

int i,j;

i=sizeof(a);j=strlen(a);

printf("% d,% d\n",i,j);

程序运行后的输出结果是(  )。

A.9,9    B.8,9    C.1,8    D.9,8

2.以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置存放。

#include <stdio.h>

void reverse(int a[ ],int n)

{ int i,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i] =a[n-1-i];a[n-1-i] =t;}

main()

{ int b[10] ={1,2,3,4,5,6,7,8,9,10};int i,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+ =b[i];

printf("% d\n",s);

则程序运行后的输出结果是(  )。

A.22    B.10    C.34    D.30

3.有以下程序:

main(int argc,char*argv[])

{ int n,i=0;

while(argv[1][i]!= '\0')

{n=fun();i++;}

printf("% d\n",n*argc);

int fun()

{ static int s=0;

s+ =1;

return s;

假设程序经编译、连接后生成可执行文件exam.exe,若输入以下命令行

exam 123<回车>

则运行结果为( )。

A.6    B.8    C.3    D.4

4.以下程序的输出结果是(  )。

#include <stdio.h>

#include <string.h>

main()

{ char str[12] ={'s','t','r','i','n','g'};

printf("% d\n",strlen(str));}

A.6    B.7    C.11    D.12

5.若有说明:inta[3][4];,则对数组a元素非法引用的是(  )。

A.a[0][2*1]    B.a[1][3]    C.a[4-2][0]    D.a[0][4]

6.若有说明:inta[][4] ={0,0};,则以下选项中,不正确的是(  )。

A.数组a的每个元素都可得到初值

B.二维数组a的第一维大小为1

C.因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

7.以下程序中有错误的一行是(  )。

(1)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("% f\n",a[0]);

(8)}

A.3    B.6    C.7    D.5

8.若有说明:inta[][3] ={1,2,3,4,5,6,7};,则a数组第一维的大小是(  )。

A.2    B.3    C.4    D.无确定值

9.若有数组定义:chararray[ ] ="China";,则数组 array所占的空间为(  )。

A.4个字节    B.5个字节    C.6个字节    D.7个字节

10.以下程序的输出结果是(  )。

#include <stdio.h>

#include <string.h>

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

11.有以下程序:

#include <stdio.h>

main()

{ int n[5] ={0,0,0},i,k=2;

for(i=0;i<k;i++)n[i] =n[i] +1;

printf("% d\n",n[k]);

该程序的输出结果是( )。

A.不定值    B.2    C.1    D.0

12.以下程序的输出结果是(  )。

#include <stdio.h>

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.14    B.19    C.20    D.21

13.当执行以下程序时,如果输入ABC,则输出结果是(  )。

#include <stdio.h>

#include <string.h>

main()

{ char ss[10] ="1,2,3,4,5";

gets(ss);strcat(ss,"6789");printf("% s\n",ss);

A.ABC6789    B.ABC67    C.12345ABC6    D.ABC456789

14.以下程序的输出结果是(  )。

#include <stdio.h>

f(int b[],int m,int n)

{ int i,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

return s;

main()

{ int x,a[] ={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

printf("% d\n",x);

A.10    B.18    C.8    D.15

15.以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include <stdio.h>

void sort(int a[],int n)

{ int i,j,t;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(a[i] <a[j]){t=a[i];a[i] =a[j];a[j] =t;}}

main()

{ int aa[10] ={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf("% d,",aa[i]);

printf("\n");

程序运行后的输出结果是(  )。

A.1,2,3,4,5,6,7,8,9,10,    B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3,8,7,6,5,4,9,10,    D.1,2,10,9,8,7,6,5,4,3,

16.对两个数组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长度长

17.有以下程序段:

char a[3],b[] ="China";

a=b;

printf("% s",a);

则(  )。

A.运行后将输出China B.运行后将输出Ch   C.运行后将输出Chi  D.编译出错

18.判断字符串s1是否大于字符串s2,应当使用(  )。

A.if(s1>s2)    B.if(strcmp(s1,s2))

C.if(strcmp(s2,s1) >0)    D.if(strcmp(s1,s2) >0)

19.以下程序的输出结果是( )。

#include <stdio.h>

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

20.当运行以下程序时,从键盘输入:AhaMA[空格] Aha<回车>,则程序的输出结果是(  )。

#include <stdio.h>

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++;

puts(s);

A.ahAMa    B.AbAMa    C.AhAMa[空格]ahA   D.ahAMa[空格]ahA

二、操作题

1.下列给定程序中,函数fun()的功能是:将形参a所指数组中的前半部分元素中的值与后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

例如,若a所指数组中的数据为1、2、3、4、5、6、7、8、9,则调换后为6、7、8、9、5、1、2、3、4。

请在标号处填入正确的内容,使程序得出正确的结果。

注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构。

#include <stdio.h>

#define N 9

void fun(int a[ ],int n)

{ int i,t,p;

p=(n% 2==0)?n/2:n/2+【1】;

for(i=0;i<n/2;i++)

{ t=a[i];

a[i] =a[p+【2】];

【3】 =t;

main()

试题程序

{ int b[N] ={1,2,3,4,5,6,7,8,9},i;

printf("\nThe original data:\n");

for(i=0;i<N;i++)

printf("% 4d",b[i]);

printf("\n");

fun(b,N);

printf("\nThe data after moving:\n");

for(i=0;i<N;i++)

printf("% 4d",b[i]);

printf("\n");

2.下列给定程序中,函数fun()的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。

例如,形参s所指字符串为abcdefgh,执行结果为ahcbedgf。

请在标号处填入正确的内容,使程序得出正确的结果。

注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构。

试题程序

#include <stdio.h>

void fun(char *s)

{ int i,n,k;

char c;

n=0;

for(i=0;s[i]!= '\0';i++)

n++;

if(n% 2==0)k=n-【1】;

else k=n-2;

c=【2】;

for(i=k-2;i> =1;i=i-2)

{ s[i+2] =s[i];

s[i] =【3】;

main()

{ char s[80] ="abcdefgh";

printf("\nThe original string is:% s\n",s);

fun(s);

printf("\nThe result is:% s\n",s);

教程类别