C语言补考复习题(毕业、重修和二级学位)

共 13340字,需浏览 27分钟

 ·

2021-05-17 01:46

关于补考的题型分布:

一、选择题 20道,2分/道

二、填空题 10道,2分/道

三、程序填空题 1道,10分/道

四、程序改错题 1道,10分/道

五、程序设计题 1道,20分/道

 

以下是各题型的复习题,我将在之后陆续发布视频讲解,请大家认真复习,祝考试顺利!

 

 

 

 

 

一、选择题

 

1           

设有定义int a;float b;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入

876<空格> 854.0<回车>,a和b的值分别是().

A:876和543.000000

B:87和6.000000

C:87和543.000000

D:76和543.000000

 

2           

若有如下语句,则程序段().

        int x=6;

        do{printf("%d\n",x-=2);}

        while(--x);

 

A:输出的是1

B:输出的是4和1

C:输出的是3和0

D:是死循环

 

3           

以下叙述中正确的是 ().

A:C语言比其他语言高级

B:C语言可以不用编译就能被计算机识别执行

C:C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D:C语言出现的最晚,具有其他语言的一切优点

 

4          

以下选项中,能用作数据常量的是().

A:115L

B:118

C:1.5e1.5

D:o115

 

5          

数字字符0的ASCII值为48,若有以下程序:

main(){char a='1',b='2';

printf("%c,",b++);

printf("%d\n",b-a);

}

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

A:3,2

B:50,2

C:2,2

D:2,50

 

6           

现有定义int a;double b;float c;char k;,则表达式a/b+c-k值的类型为().

A:int

B:double

C:float

D:char

 

7           

C语言中,char类型数据占().

A:1个字节

B:2个字节

C:4个字节

D:8个字节

 

8          

若有代数式如"图片1.jpg"

(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的

C语言表达式是().

A:sqrt(fabs(pow(n,x)+exp(x)))

B:sqrt(fabs(pow(n,x)+pow(x,e)))

C:sqrt(abs(n^x+e^x))

D:sqrt(fabs(pow(x,n)+exp(x)))

 

9          

有以下程序段:

  #include   <stdio.h>

  int   j;      float   y;      char   name[50];

  scanf("%2d%f%s", &j, &y, name);

当执行上述程序段,从键盘上输入55566  7777abc 后,y的值为().

A:566

B:55566

C:7777

D:566777

 

10          

以下叙述中正确的是().

A:调用printf函数时,必须要有输出项

B:使用putchar函数时,必须在之前包含头文件stdio.h

C:在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D:调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

 

11           

有以下程序:

#include  <stdio.h>

main()

{ char  c1,c2;

c1='A'+'8'-'4';

c2='A'+'8'-'5';

printf( "%c,%d\n",c1,c2);

}

已知字母A的ASCII码为65,程序运行后的输出结果是().

A:E,68

B:D,69

C:E,D

D:输出无定值

 

12           

执行下面程序片段的结果是().

        int x=23;

        do{  printf("%d",x--);  }while(!x);

 

A:打印出321

B:打印出23

C:不打印任何内容

D:陷入死循环

 

13题           

x是int型变量,且有下面的程序片段:

for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d\n"),x);

上面程序片段的输出结果是().

A:**3

##4

**5

B:##3

**4

 ##5

C:##3

**4##5

D:**3##4

**5

 

14题           

以下叙述正确的是().

A:在C程序中,main函数必须位于程序的最前面

B:C程序的每行中只能写一条语句

C:C语言本身没有输入输出语句

D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误

 

15           

下列是用户自定义标识符的是().

A:w1

B:3xy

C:int

D:LINE-3

 

16           

以下叙述中正确的是().

A:C语言程序将从源程序中第一个函数开始执行

B:可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C:C语言规定必须用main作为主函数名,程序从此开始执行,在此结束

D:main作为用户标识符,用以命名任意一个函数作为主函数

 

17           

下列叙述中错误的是().

A:C程序可以由多个程序文件组成

B:一个C语言程序只能实现一种算法

C:C程序可以由一个或多个函数组成

D:一个C函数可以单独作为一个C程序文件存在

 

18           

以下叙述不正确的是().

A:一个C源程序可由一个或多个函数组成

B:一个C源程序必须包含一个main函数

C:C程序的基本组成单位是函数

D:在C程序中,注释说明只能位于一条语句的后面

 

19          

下列数据中,为字符串常量的是().

A:A

B:"house"

C:How do you do.

D:$abc

 

20           

以下数据中,不正确的数值或字符常量是().

A:0

B:5L

C:o13

D:9861

 

21           

下面四个选项中,均是不合法的用户标识符的选项是().

A:c-b goto int

B:A P0 do

C:float la0A

D:123 temp goto

 

22           

设有如下程序段:

int x=2004,y=2008;

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

则以下叙述中正确的是

A:输出值为2004

B:输出值为2008

C:运行时产生出错信息

D:输出语句中格式说明符的个数少于输出项的个数,不能正确输出

 

23          

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

main()

{

int y=5, x=14; y=((x=3*y,x+6),x-1);

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

}

A:x=27,y=27

B:x=12,y=13

C:x=15,y=14

D:x=y=27

 

24          

有以下程序,其中%u表示按无符号整数输出

main(){ unsigned int x=0xFFFF; /* x的初值为十六进制数 */

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

       }

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

A:-1

B:65535

C:32767

D:0xFFFF

 

25          

从循环体内某一层跳出,继续执行循环外的语句是().

A:break语句

B:return语句

C:continue语句

D:空语句

 

26          

C语言的if语句中,用作判断的表达式为().

A:任意表达式

B:逻辑表达式

C:关系表达式

D:算术表达式

 

27           

以下4个选项中,不能看作一条语句的是().

A:;

B:a=5,b=2.5,c=3.6;

C:if(b!=5)x=2;y=6;

D:return j;

 

28           

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

A:过程

B:函数

C:子程序

D:标识符

 

29          

求平方根函数的函数名为().

A:cos

B:abs

C:pow

D:sqrt

 

30           

一个C语言程序是由().

A:一个主程序和若干子程序组成

B:函数组成

C:若干过程组成

D:若干子程序组成

 

31           

下面程序中的错误的行是().

(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

 

32           

若有说明: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

 

33          

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

 

A:4个字节

B:5个字节

C:6个字节

D:7个字节

 

34          

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

 

35           

如下程序段的输出结果是().

        #include<stdio.h>

        void main()

        {  int n=9;

           while(n>6)

            {n--;printf("%d",n);}  }

 

A:987

B:876

C:8765

D:9876

 

36           

在下列选项中,没有构成死循环的是().

A:int i=100;

while(1)

{i=i%100+1;

if(i>100)break;

}

 

B:for(;;);

C:int k=10000;

do{k++;}while(k>10000);

D:int s=36;

while(s)--s;

 

37           

while(x)语句中的x与下面条件表达式等价的是().

 

A:x= =0

B:x= =1

C:x!=1

D:x!=0

 

38           

有以下程序(注:字符a的ASCII码值为97) :

#include   <stdio.h>

main()

{ char  *s ={ "abc" };

do

{printf ("%d", *s%10); ++s;  }

while ( *s );

}

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

A:789

B:abc

C:7890

D:979899

 

39           

变量的指针,其含义是指该变量的().

A:值

B:地址

C:名

D:一个标志

 

40           

字符串指针变量中存入的是().

A:字符串

B:字符串的首地址

C:第一个字符

D:字符串变量

 

二、填空   

1题     

C语句句尾用___________结束.

 

2题           

C语言中一个函数由函数首部和_____________两部分组成.

 

3题           

C语言的三种基本结构是______________结构、选择结构、循环结构.

 

4题          

c语言程序的三种基本结构是:顺序结构,选择结构,______________结构.

 

5题      

预处理命令行都必须以______________号开始.

 

6题         

从函数的形式上看,函数分为无参函数和______________两种类型.

 

7题           

若在程序中用到strlen()函数时,应在程序开头写上包含命令# include  "______________".

 

8题           

C语言中,数组元素的下标下限为______________.

 

9题           

将数组a的首地址赋给指针变量p的语句是______________.

 

10题           

变量的指针,其含义是指该变量的______________.

 

11           

一个C程序总是从______________开始执行.

 

12题           

一个C源程序中至少应包括一个______________函数.

 

13           

执行下列语句后,*(p+1)的值是______________.

 

char  s[3]="ab",*p;

p=s;

 

14          

按内存排列顺序, 数组char a[2]中的所有元素是a[1]和______________.

 

15           

若有定义:double w[10];

w数组元素下标的上限为___________,下限为___________.

 

三、程序填空   

1题             

请补充main函数,该函数的功能是:从键盘输入一个字符串并保

存在字符str1中,把字符串str1中下标为偶数的字符保存在字符

str2中并输出。

例如,当str1="cdefghij",则str2="cegi"。

 

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#define LEN 80

 

void main()

{

    char str1[LEN],str2[LEN];

    char *p1=str1,*p2=str2;

    int i=0,j=0;

    printf("Enter the string:\n");

    scanf(________________);

    printf("***the origial string***\n");

    while(*(p1+j))

    {

        printf("_____________",*(p1+j));

        j++;

    }

    for(i=0;i<j;i+=2)

        *p2++=*(str1+i);

    *p2='\0';

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

}

 

2题         

功能:从键盘输入一个大写字母赋给c1,要求改用小写字母输出。

#include <stdio.h>

void main()

{

char c1,c2;

c1= _____________________;

c2= _____________________;

printf("%c,%c",c1,c2);

}

 

3        

题目:下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。

#include <stdio.h>

    __________________      

    main()

        {  int x;

double y,z;

           scanf("__________________",&x,&y);

           z=2*x*sqrt(y);

           printf("z=_______________",z);

        }

 

 

四、程序改错   

 

题目:下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。请纠正程序中存在的错误,使程序实现其功能。

(一共三个错误,都在每个FOUND下面那一行公式: x=2ab/(a+b)^2(平方)

 

-------------------------------------------------------*/

#include <stdio.h>

 main()

{

    int a,b;

    double x;

/***********FOUND1***********/

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

/***********FOUND2***********/

    x=2ab/(a+b)(a+b);

/***********FOUND3***********/

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

}

 

FOUND1改为:______________________________________

FOUND2改为:______________________________________

FOUND3改为:______________________________________

 

 

五、程序设计   

1题       

题目:已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。

 

#include <stdio.h>

void main( )

{

    int math, eng, comp, average;  

 

    /**********Program**********/

 

 

 

 

 

    /**********  End  **********/

 

    printf("math = %d, eng = %d, comp = %d, average = %d\n", math, eng, comp, average);

}

 

 

 

2   

题目:从键盘给n赋值,分别求出 n 的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。

#include <stdio.h>

void main( )

{

    int n, digit1, digit2, digit3;  

 

    /**********Program**********/

 

 

 

 

 

    /**********  End  **********/

 

    printf("整数%d的个位数字是%d, 十位数字是%d, 百位数字是%d\n", n, digit1, digit2, digit3);

}

 

3       

 

题目:计算表达式 1 + 2 + 3 + ...... + 100的值。

#include <stdio.h>

void main( )

{   

    int i, sum;

          

    /**********Program**********/

 

 

 

 

 

    /**********  End  **********/

 

    printf("sum = %d\n", sum);

}


浏览 80
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报