文章教程

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

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

10.4 综合自测

一、选择题

1.对下面程序段,正确的判断是(  )。

#define A 3

#define B(a)((A+1)*a)

x=3*(A+B(7));

A.程序错误,不许嵌套宏定义    B.x=93

C.x=21    D.程序错误,宏定义不许有参数

2.以下程序的输出结果为(  )。

#include <stdio.h>

#define F(y)3.84+y

#define PR(a)printf("% d",(int)(a))

#define PRINT(a)PR(a);putchar('\n')

main()

{ int x=2;

PRINT(F(3)*x);

A.8    B.9    C.10    D.11

3.以下说法中,正确的是(  )。

A.#define和printf都是C语句    B.#define是C语句,而printf不是

C.printf是C语句,但#define不是    D.#define和printf都不是C语句

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

#define f(x)x*x

#include <stdio.h>

main()

{ int a=6,b=2,c;

c=f(a)/f(b);

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

A.9    B.6    C.36    D.18

5.以下程序运行后,输出的结果是(  )。

#define PT 5.5

#define S(x)PT*x *x

#include <stdio.h>

main()

{ int a=1,b=2;

printf("% 4.1f\n",S(a+b));

A.49.5    B.9.5    C.22.0    D.45.0

6.下列程序执行后的输出结果是(  )。

#define MA(x)x*(x-1)

#include <stdio.h>

main()

{ int a=1,b=2;printf("% d \n",MA(1+a+b));

A.6    B.8    C.10    D.12

7.有以下程序:

#define N 2

#define M N+1

#define NUM 2*M+1

main()

{ int i;

for(i=1;i< =NUM;i++)printf("% d\n",i);

该程序中的for循环执行的次数是(  )。

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

8.程序中头文件typel.h 的内容是:

#define N 5

#define M1 N*3

程序如下:

#include "type1.h"

#define M2 N*2

main()

{ int i;

i=M1+M2;printf("% d\n",i);

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

A.10    B.20    C.25    D.30

9.以下正确的描述为(  )。

A.每个C语言程序必须在开头使用预处理命令#include<stdio.h>

B.预处理命令必须位于C源程序的首部

C.在C语言中预处理命令都以“#”开头

D.C语言的预处理命令只能实现宏定义和条件编译的功能

10.从下列选项中选择不会引起二义性的宏定义是(  )。

A.#definePOWER(x)x*x    B.#definePOWER(x)(x)*(x)

C.#definePOWER(x)(x*x)    D.#definePOWER(x)((x)*(x))

11.设有以下宏定义:

#define N 3

#define Y(n) ((N+1)*n)

则执行语句"z=2 * (N+Y(5+1));"后,z的值为(  )。

A.出错    B.42    C.48    D.54

12.若有宏定义#defineMOD(x,y) x%y,则执行以下语句后的输出为(  )。

int z,a=15,b=100;

z=MOD(b,a);

printf("% d\n",z++);

A.11    B.10    C.6    D.宏定义不合法

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

#include<stdio.h>

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

f(int *s,int p[][3])

{*s=p[1][1];}

main()

{ p=(int*)malloc(sizeof(int));

f(p,a);

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

free(p);

A.1    B.4    C.7    D.5

二、操作题

下列给定程序中,函数fun()的功能是:将形参s所指字符串中的所有字母字符按顺序前移,其他字符按顺序后移,处理后将新字符串的首地址作为函数值返回。

例如,若s所指字符串为asd123fgh543df,处理后新字符串为asdfghdf123543。

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

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

试题程序

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

char *fun(char *s)

{ int i,j,k,n;char *p,*t;

n=strlen(s)+1;

t=(char*)malloc(n*sizeof(char));

p=(char*)malloc(n*sizeof(char));

j=0;k=0;

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

{ if(((s[i] > = 'a')&&(s[i] < = 'z'))||

((s[i] > = 'A')&&(s[i] < = 'Z'))){

t[j] =【1】;j++;}

else

{p[k] =s[i];k++;}

for(i=0;i<【2】;i++)t[j+i] =p[i];

t[j+k] =【3】;

return t;}

main()

{ char s[80];

printf("Please input:");scanf("% s",s);

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

教程类别