2021第四届全国大学生计算机技能应用大赛初赛试题(c语言)

2021第四届全国大学生计算机技能应用大赛初赛试题(c语言)

单选题(25道)

1. C语言程序的基本单位是(   )。

A      语句 ( × )

B      函数 ( √ )

C      程序段 ( × )

D      标识符 ( × )

2. 若有int a;执行printf("%d\n",(a=2*5,a*3,a+5));语句后,输出结果为(   )。

A   15 ( √ )

B   20 ( × )

C   35 ( × )

D   10 ( × )

3. 设有如下定义:

int x=10,y=3;

则语句

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

的输出结果是(   )。

A     1 ( √ )

B     3 ( × )

C     1 3 ( × )

D     输出格式符不够,输出不确定的值 ( × )

4. 以下程序段运行结果是(   )。

int x,y,z,t;

x=y=z=1;

t=++x || ++y && ++z;

printf("%d,%d,%d,%d",x,y,z,t);

A  2,1,1,1 ( √ )

B  2,2,2,1 ( × )

C  2,2,2,2 ( × )

D  1,1,1,1 ( × )

5. 下列选项中,不合法的常量是(   )。

A  '\0' ( × )

B  'a' ( × )

C  010 ( × )

D  '\048' ( √ )

6. 若有

int n=0,i,x;

for(i = 0,x = 0; i<= 9 && x!=876;i++,x++){

    n++;

}

则程序段运行后,n的值为(    )。

A  10 ( √ )

B  9 ( × )

C  无限 ( × )

D  0 ( × )

7. 下面程序的运行结果是(    )。

void main()

{

 char s[20]={"a b c d e f g"},ts[20];

 char *p = s;

 int i,t;

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

  if (!isspace(*(p+i))&&(*(p+i)!='a')){

    ts[t++]=toupper(s[i]);

  }

 ts[t]='\0';

}

 puts(ts);

}

A  abcdefg ( × )

B  a ( × )

C  A ( × )

D  BCDEFG ( √ )

8. 文件指针fp指向文件末尾时,feof(fp)的返回值是(   )。

A   EOF ( × )

B   NULL ( × )

C   0 ( × )

D   非零值 ( √ )

9. 若有定义: int a[10] , *p = a; 并在以后的语句中未改变 p 的值,不能表示 a[1] 地址的表达式是()

A    ++p ( × )

B    a+1 ( × )

C    p+1 ( × )

D    a++ ( √ )

10. 若有以下说明和定义,在必要的赋值之后,对fun函数的正确调用语句是(   )。

int fun (int *c)  {  }

void main()

{

int (*a)(int*)=fun,*b(),w[10],c;

}

A    a=a(w); ( × )

B    (*a)(&c); ( × )

C    b=*b(w); ( × )

D    fun(b); ( √ )

11. 下面程序段执行后的输出结果是(   )。

int a=3366;

printf("│%-08d│",a);

(□表示一个空格)

A    │-0003366│ ( × )

B    │00003366│ ( × )

C    │3366□□□□│ ( √ )

D   输出格式非法 ( × )

12. 下列选项中,均是不合法的用户标识符的是(   )。

A    A ,  P_0  , do   ( × )

B   float  ,_A  , la0   ( × )

C   b-a ,  goto , int   ( √ )

D  _123 , temp  ,INT   ( × )

13. 下面四个选项中,均是合法转义符的是(   )。

A  '\''    '\\'    '\n'   ( √ )

B  '\'    '\017'    '\"'   ( × )

C  '\018'     '\f'     'xab'   ( × )

D  '\\0'    '\101'    'x1f'    ( × )

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

#include<stdio.h>

void fun(int px,int pa,int *pb)

{

 *pb=pa+px;

 pa=*pb+px;

}

void main()

{

 int  x=4,a=2,b=2;

 fun(x,a,&b);

 printf("%d,%d",a,b);

}

A   2,2 ( × )

B   2,6 ( √ )

C   6,2 ( × )

D   6,6 ( × )

15. 下面程序段,当调用func(1)时,结果为(   )。

int func(int a)

{

    int b;

    switch (a)

    {

        case 1: b = 30;

        case 2: b = 20;

        case 3: b = 16;

        default: b = 0;

    }

    return b;

}

A  30 ( × )

B  20 ( × )

C  16 ( × )

D  0 ( √ )

16. 以下语句或语句组中,能正确进行字符串赋值的是(       )。

A   char *sp; *sp="right!"; ( × )

B   char s[10]; s="right!"; ( × )

C   char s[10]; *s="right!"; ( × )

D   char *sp="right!"; ( √ )

17. 下面程序的输出结果是(   )。

main(){  

int  i=1,j=2,k=3;  

if(i++==1&&(++j==3||k++==3))    

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

}

A  1 2 3 ( × )

B  2 3 4 ( × )

C  2 2 3 ( × )

D  2 3 3 ( √ )

18. 下面选项正确的是(   )。

A   continue语句使得整个循环终止 ( × )

B   break语句不能用于提前结束for语句的本层循环 ( × )

C   使用break语句可以使流程跳出switch语句体 ( √ )

D   在for语句中,continue与break的效果是一样的,可以互换 ( × )

19. 下面程序的运行结果是(   )。

void add(int *p)

{

    (*p)++;

    printf("%d",*p);

    if (*p>5)

    {

        return;

    }

    add(p);

}

int main()

{

    int i=0;

    add(&i);

    return 0;

}

A  12345 ( × )

B  123456 ( √ )

C  111111 ( × )

D  未知 ( × )

20. 本程序的功能是:统计给定输入中每个大写字母的出现次数,下列选项中,能正确完成此功能的是(   )。

void AlpCount(char a[],int n){

    int count[26]={},i,kind=0;

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

        (____________);

    for(i=0;i<26;++i){

        if(++kind>1)

            putchar(';');

       printf("%c=%d",(____________));

    }

}

A  ++count[a[i]-'z']  'Z'-i,count['Z'-i] ( × )

B  ++count['A'-a[i]]  'A'+i,count[i] ( × )

C  ++count[i]  i,count[i] ( × )

D  ++count['Z'-a[i]]  'Z'-i,count[i] ( √ )

21. 若有:

float x=2.5,y=4.7;int a=7;

则:printf("%.1f",x+a%3*(int)(x+y)%2/4)的结果为(      )。

A  2.5 ( √ )

B  2.8 ( × )

C  3.5 ( × )

D  3.8 ( × )

22. 下面程序段最后一行的输出结果为(   )

int main() {

    int x;

    x = printf("I am c program\n");

    printf("x=%d", x);

    return 0;

}

A  x=2 ( × )

B  随机值 ( × )

C  都不是 ( × )

D  x=15 ( √ )

23. 已知:char s1[10],s2[10]={"hello"};

则在程序中不能将字符数组s2赋值给s1的语句是(  )。

A  s1=s2; ( √ )

B strcpy(s1,s2); ( × )

C  strcpy(s1,s2,6); ( × )

D  memcpy(s1,s2,5); ( × )

24. 在c语言中,一个函数不写返回值类型,默认的返回类型是(    )。

A  int ( √ )

B  char ( × )

C  void ( × )

D  null ( × )

25. 若有下面定义:

char *str1 = "hello";

short * p1;

int  p2[2];

则sizeof(str1),sizeof(p1) ,sizeof(p2) 的值分别为(   )。

A  6 4 8 ( × )

B  6 2 4 ( × )

C  4 4 8 ( √ )

D  5 2 4 ( × )

不定项(15道)

26. 若有char *str="abcdef",则输出*str的结果为(   )。

A   a ( √ )

B   abcdef ( × )

C   字符a的地址 ( × )

D   ab ( × )

27. 若有如下定义:

struct Stu{

 int num;

 char[10] name;

 char sex;

} stu1,*p;

 p=&stu1;

则对num成员正确的引用有(   )。

A  (*p).a ( √ )

B    p->a ( √ )

C (*p).stu1.a ( × )

D   p->stu1.a ( × )

28. 若有下面定义

 int a[4][4]={{1,2},{3,4},{5,6}}; int(*p)[4]=a;

下面表达式的值为4的有(    )。

A  *p[1]+1 ( √ )

B  p++,*(p+1) ( × )

C  *(*(p+1)+1) ( √ )

D  p[2][2] ( × )

29. 若有:int (*p)(); 则以下叙述正确的是(   )。

A     p是指向一维组数的指针变量 ( × )

B     p是返回值为int型数据的函数指针 ( √ )

C     p是一个函数名,该函数的返回值是指向int型数据的指针 ( × )

D     p是指向函数的指针,该函数返回一个int型数据 ( √ )

30. 若有:char *str[2]={"abcd","ABCD"}; 则以下叙述正确的是(   )。

A     str是一个长度为2的指针数组 ( √ )

B     str中的元素分别是指向"abcd"数组的指针和指向"ABCD"数组的指针 ( √ )

C     str是指针变量,指向含有两个数组元素的字符型一维数组 ( × )

D     str分别存放的是两个含有4个字符的一维字符数组 ( × )

31. 数组初始化的常见方式有:(    )。

A     直接对数组中的所有元素赋值 ( √ )

B     只对数组中的一部分元素赋值 ( √ )

C     对数组全部元素赋值但不指定长度 ( √ )

D     数组声明后,将数组元素整体赋值给数组名。 ( × )

32. C语言中的基本数据类型包括:(    )。

A     整型 ( √ )

B     实型 ( √ )

C     字符型 ( √ )

D     枚举型 ( × )

33. C语言中,关系运算符的运算结果为(   )。

A     0 ( √ )

B     逻辑假 ( × )

C     1 ( √ )

D     逻辑真 ( × )

34.下面哪个选项是正确的文件包含命令(   )。

A     #include( √ )

B     #include stdio.h ( × )

C     #include "stdio.h" ( √ )

D     #include "stdio" ( × )

35. 下面选项正确的是(   )。

A     gets函数能从键盘读一串字符串 ( √ )

B     getchar能从文件读一个字符 ( × )

C     fputs可以向文件输出一串字符串 ( √ )

D     fwrite函数可以以二进制形式将数据写入文件 ( √ )

36. print函数声明为void print(int a,char b='b',int c=1); 下面函数调用正确的是(      )

A     print('a'); ( √ )

B     print(5,8); ( √ )

C     print(5,'#'); ( √ )

D     print(5,'#',2); ( √ )

37. 有下面程序段:

char str[4][12]={"aaa","bbbb","ccccc","dddddd"},*strp[4];

for(int i=0;i<4;i++){

 strp[i]=str[i];

}

若0<=k<4,则对字符串的正确引用为(   )。

A     *strp ( √ )

B     strp ( × )

C     str[k] ( √ )

D     strp[k] ( √ )

38.  已知i,j都是整型变量,下列表达式中,与下标引用X[i][j]不等效的是(    )。

A     *(X[i]+j) ( × )

B     *(X+i)[j]  ( √ )

C     *(X+i+j)  ( √ )

D     *(*(X+i)+j)  ( × )

39. 有以下语句定义:

int x =5;

const int * const p = &x;

const int &q=x;

int const *next=&x;

const int *j=&x;

有语法错误的是(      )。

A     * p =1; ( √ )

B     q++; ( √ )

C     next++; ( × )

D     (*j)++; ( √ )

40. 下面选项中错误的是(   )。

A     逻辑"或"(即运算符||)的运算级别比算术运算要高 ( √ )

B     C语言的关系表达式:0 ( √ )

C     逻辑"非"(即运算符!)的运算级别是最低的 ( √ )

D     由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象 ( × )

判断题(10道)

41. 在C程序中,变量名代表内部存储器上的一个位置   √  

42.静态变量的生存期和整个程序的运行期相同   √

43.可以通过赋值运算符"="对字符型数组进行整体赋值。 ×

44.静态类别变量的生存周期贯穿于整个程序的运行期间。√

45.fseek(fp,-100L,2)表示将文件指针从结尾位置向前移动100个字符。×

46.int a=10,*p=&a;表示将变量a的地址赋值给p所指向的内存单元。×

47.在源程序被编译器处理之前,预处理器会将宏定义标识符替换成所定义的字符串。√

48.union类型的变量在任何时刻都仅有一个成员驻留在内存中。√

49.执行程序段:fclose(fp);fprintf(fp, "%s", "hello");后,可以向文件中写入hello  ×

50. C语言源程序的基本结构单位是 main 函数。  ×

  • 15
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值