C 自测题参考答案2

2019-09-01 17:11

自测题1

一 、单项选择题(2*20=40分)

1.C语言中下列叙述正确的是____________。D

A、不能使用do-while语句构成的循环

B、do-while语句构成的循环,必须用break语句才能退出

C、do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D、do-while语句构成的循环,当while语句中的表达式值为零时结束循环 2.以下选项中,能定义s为合法的结构体变量的是____________。B

A、typedef struct abc {

double a;

char b[10];

} s;

B、struct abc{

double a;

char b[10];

}s;

C、struct ABC {

double a;

char b[10];

};

ABC s;

D、typedef ABC{

double a;

char b[10];

};

ABC s;

3.若x和y都是int型变量,x=3、y=200,则语句printf(\输出结果是__________。A A、B B、66 C、66.6 D、输出格式符不够,输出不确定的值 4.请选出可用作C语言用户标识符的一组标识符____________。B ① void ② a3_b3 ③ For ④ 2a define _123 _abc DO WORD IF case sizeof A、① B、② C、③ D、④

5.设ch是char型变量,其值为字母A,下面的表达式的值是____________。B ch=(ch>='A'&&ch<='Z')?(ch+32):ch A、A B、a C、Z D、z

6.已知a为int类型的一维数组,p为整型的指针变量,其定义如下: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则语句printf(\的输出结果是____________。C A、1 B、2 C、3 D、4

7.下面的程序中____________错误(每行程序前面的数字是行号)。C

1 #include 2 int main( ) 3 {

4 float a[3]={0.0f}; 5 int i;

6 for(i=0;i<3;i++) scanf(\7 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 8 printf(\9 }

A、第2行 B、第4行 C、第6行 D、第8行

8.下面程序段的运行结果是_________________。C

char a[ ]=\ p=a;

while(*p!='u') {

printf(\ p++; }

A、LANGUAGE B、language C、LAN D、langUAGE 9.若有如下定义: int x=0,*p=&x;

则语句printf(\的输出结果是______________。B

A、随机值 B、0 C、x的地址 D、p的地址

10.当执行下面的程序时,如果输入ABC,则输出结果是________________。A #include #include int main( ) {

char ss[100]; gets(ss);

strcat(ss,\ printf(\ return 0; }

A、ABC6789 B、ABC67 C、12345ABC6 D、ABC456789 11.当调用函数时,实参是一个数组名,则向函数传送的是______________。B

A、数组的长度 B、数组的首地址 C、数组每一个元素的地址 D、数组每个元素中的值 12.不能把字符串\赋给数组b的语句是_____________。B

A、char b[10]={'H','e','l','l','o','!','\\0'}; B、char b[10];b=\C、char b[10];strcpy(b,\ D、char b[10]=\

13.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是____________。B

A、s=a+b; B、s=a+c; C、s=s-c; D、s=b+c;

14.已知i是int类型的变量,则执行以下程序段后,输出结果是__________。A for(i=1;i<6;i++) {

if(i%2)

{

printf(\ continue; }

printf(\ }

A、#*#*# B、##### C、***** D、*#*#*

15.已知a、b、k是int类型的变量,执行下面的程序段时,从键盘上输入5和2,输出结果是______ 。D

scanf(\ k=a; if(a)

k=b/a; else

k=b%a;

printf(\

A、5 B、2 C、1 D、0

16.以下选项中,能作为常量的是____________。D

A、o115 B、0118 C、1.5e1.5 D、115

17.以下选项中,能正确定义数组的语句是_______________。D

A、int num[0..2008]; B、int num[ ]; C、int N=2008; D、#define N 2008 int num[N]; int num[N];

18.已知i、j、k为int型变量,若从键盘输入:1,2,3↙,为使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。C

A、scanf(\ B、scanf(\ %d %d\ C、scanf(\ D、scanf(\19.下面程序执行后,输出结果是______。B #include int main( ) {

FILE *fp;int i,k=0,n=0; fp=fopen(\ for(i=1;i<4;i++) fprintf(fp,\ fclose(fp);

fp=fopen(\ fscanf(fp,\ printf(\ fclose(fp); return 0; }

A、1 2 B、123 0 C、1 23 D、0 0

20.以下选项中,正确的定义变量语句是____________。C

A、double a,int b; B、double a

二 、程序填空题(18分,每空3分)

1.已知P的计算公式为:p=m!/(n!*(m-n)!),下面程序的功能计算P的值。例如:m=11,n=4时,运行结果为330.000000。请在程序的下划线处填入正确的内容,使程序得出正确结果。

#include int jc(int m) {

int s,i;

for(i=1,s=1;i<=m;i++)

s=___1_________ ; s=s*i; return s; }

float fun(int m,int n) {

float p;

p=1.0*jc(m)/jc(n)/jc(___2_________); p=1.0*jc(m)/jc(n)/jc(m-n); _________3___; return p; }

int main( ) {

printf(\ return 0; }

2.下面程序的功能是统计字符串中大写字母和小写字母个数。例如,输入:AaaaBBb123CCccccd,则输出结果应为:upper=5,lower=9。请在程序的下划线处填入正确的内容,使程序得出正确结果。

#include

void fun (char *s,int *a,int *b) {

while (*s) {

if (*s>='A'&&*s<='Z')

____________1___ ; (*a)++; else if (*s>='a'&&*s<='z')

____________2___; (*b)++; s++; } }

int main( ) {

char s[100];

int upper=0,lower=0;

printf(\

gets(s);

______________3_________________ fun(s,&upper,&lower); printf(\ return 0; }

三 、程序改错题(12分,每处3分)

注意:每题有两处错误;改错时,不得增行或删行,也不得更改程序的结构!

1.已知函数fun的功能是求两数平方根之和,作为函数值返回。例如,输入12和20,输出结果是:y=7.936238。请改正程序中的错误,使它能得出正确结果。

#include #include

double fun(double *a,*b) //double fun(double *a,double *b) {

double c;

c=sqrt(a)+sqrt(b); //c=sqrt(*a)+sqrt(*b); return c; }

int main( ) {

double a,b,y;

printf(\ :\ scanf(\ y=fun(&a,&b); printf(\ return 0; }

2.函数fun的功能是从字符串s中删除所有小写字母c。请改正程序中的错误,使它能得出正确结果。

#include void fun(char *s) {

int i,j;

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

s[j]=s[i]; //s[j++]=s[i]; s[i]='\\0'; //s[j]='\\0'; }

int main( ) {

char s[80];

printf(\

gets(s);

printf(\puts(s);

fun(s);

printf(\puts(s); return 0; }

四、程序设计题(30分)

1.请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。其中参数a指向存放n门课程成绩的数组,参数n表示数组a中实际存放的成绩的个数。例如:若有5门课程的成绩是:90.5,72,80,61.5,55。则函数的值为:71.80。 (10分)

#include float fun(float *a,int n) {

int i; float s=0;

for(i=0;i

int main( ) {

float score[30]={90.5,72,80,61.5,55},aver; aver=fun(score,5);

printf(\ is: %5.2f\\n\ return 0; }

2.请编写函数fun,它的功能是对参数s所表示的字符串,将每个字符根据其ASCII码值的大小,按照从大到小的顺序降序排列后输出。例如,字符串S所指的字符串为cabe2x1yz3,排序后输出为zyxecba321。 (20分)

#include

void fun(char *s) {

int i=0,j,n; char t;

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

for(i=0;i

int main( ) {

char s[100];

printf(\输入一个字符串:\ gets(s); fun(s);

printf(\ return 0; }


C 自测题参考答案2.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公交车调度模型

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: