编程语言应用

首页 » 常识 » 常识 » 程序设计基础C语言程序设计最后附答案
TUhjnbcbe - 2023/3/4 18:51:00

一、单选题(每题2分,共60分)

1.C语言源程序扩展名是()。

A、cB、objC、exeD、h

2.算法的空间复杂度是指()。

A、算法在执行过程中所需要的计算机存储空间

B、算法所处理的数据量

C、算法程序中的语句或指令条数

D、算法在执行过程中所需要的临时工作单元数

3.系统的标准输入文件是指()。

A、显示器B、硬盘C、键盘D、软盘

4.判断char型变量ch是否为大写字母的正确表达式是()。

A、’A’=ch=’Z’

B、(ch=’A’)

(ch=’Z’)

C、(ch=’A’)(ch=’Z’)

D、(’A’=ch)

5.对for(表达式1;;表达式3),可理解为()。

A、for(表达式1;0;表达式3)B、for(表达式1;1;表达式3)

C、语法错误D、仅执行循环一次

6.有以下程序段

intk=0,a=1,b=2,c=3;k=ab?b:a;k=kc?c:k;

执行该程序段后,k的值是()。

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

7.以下描述中正确的是()。

A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

C、在do-while循环体中,是先执行一次循环,再进行判断

D、do-while循环中,根据情况可以省略while

8.C源程序中不能表示的数制是()。

A、二进制B、八进制C、十进制D、十六进制

9.关于C语言的数据类型,下列说法不正确的是()。

A、C语言包含基本数据类型B、C语言包含指针类型

C、C语言包含字符串类型D、C语言包含结构体类型

10.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()。

A、必须为字母B、必须为下划线

C、必须为字母或下划线D、可以是字母,数字和下划线中任一字符

11.下面有关C程序书写风格的说法中,错误的是()。

A、每一对{}上下对齐B、每一行的C语句尽可能长度一致

C、每一对{}内的语句左对齐D、不同语句段采用缩进格式以示区别

12.下列四组选项中,正确的C语言标识符是()。

A、%xB、a+bC、aD、

13.计算机能直接执行的程序是()。

A、源程序B、目标程序C、汇编程序D、可执行程序

14.break语句不能出现在()语句中

A、switchB、forC、whileD、if…else

15.以下关于简单程序设计的步骤和顺序的说法中正确的是()。

A、确定算法后,整理并写出文档,最后进行编码和上机调试

B、首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档

C、先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档

D、先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构

16.执行下面的程序段后,变量k中的值为()。

intk=3,s[2];

s[0]=k;

k=s[0]*10;

A、不定值B、33C、30D、10

17.已知对学生记录的描述为:

structteacher

{

intsex;

charname[20];

intage;

struct{

intyear,month,day;

}birthday;

};

structteacherli;

设变量li中的“生日”是“年3月3日”,对“birthday”正确赋值的程序是()。

A、year=;month=3;day=3;

B、li.year=;li.month=3;il.day=3;

C、birthday.year=;birthday.month=3;birthday.day=3;

D、li.birthday.year=;li.birthday.month=3;li.birthday.day=3;

18.有以下程序

#include

#definePT3.5;

#defineS(x)PT*x*x;

main()

{inta=1,b=2;printf(%4.1f\n,S(a+b));}

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

A、14.0B、31.5

C、7.5D、程序有错无输出结果

19.下列命令或语句中,正确的是()。

A、#defineMYNAME=”ABC”

B、#includestdio.h

C、for(i=0;i10;i++);

D、structintstu{intname};

20.已知枚举类型定义语句为:

enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};

则下列叙述中错误的是()。

A、枚举常量MINUS的值为6B、枚举常量PRINT的值为10

C、枚举常量NUMBER的值为1D、枚举常量NAME的值为1

21.设有以下说明语句:

typedefstruct

intn;

charch[8];

}PER;

则下面叙述中正确的是()。

A、PER是结构体变量名

B、PER是结构体类型名

C、typedefstruct是结构体类型

D、struct是结构体类型名

22.以下函数的功能是:求x的y次方,请填空()。

#includestdio.h/stdio.h

voidmain()

{inti,x,y;

doublez;

scanf(%d%d,x,y);

for(i=1,z=x;iy;i++)

z=z*______;

printf(x^y=%e\n,z);

}

A、i++B、x++C、xD、i

23.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

A、#defineN10

inta[N];

B、#definen5

inta[2*n];

C、inta[5+5];

D、intn=10,a[n];

24.若有以下语句

typedefstructS

{intg;charh;}T;

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

A、可用S定义结构体变量B、可用T定义结构体变量

C、S是struct类型的变量D、T是structS类型的变量

25.若有定义语句:chars[10]=4567\0\0;,则strlen(s)的值是()。

A、7B、8C、9D、10

26.若有定义:inta[5],*p=a;,则对a数组元素的正确引用是()。

A、*a[5]B、a+2

C、*(p+5)D、*(a+2)

27.若有以下函数首部

intfun(doublex[10],int*n)

则下面针对此函数的函数声明语句中正确的是()。

A、intfun(doublex,int*n);

B、intfun(double,int);

C、intfun(double*x,intn);

D、intfun(double*,int*);

28.若有定义:inta[2][3];则对a数组的第i行第j列元素地址的正确引用是()。

A、*(a+j)B、(a+i)

C、*(a+j)D、a+j

29.若有定义语句:intk[2][3],*pk[3];,则以下语句中正确的是()。

A、pk=k;B、pk[0]=k[1][2];

C、pk=k[0];D、pk[1]=k;

30.程序段char*s=abcde;s+=2;printf(%d,s);的运行结果是()。

A、cdeB、字符c

C、字符c的地址D、无确定的输出结果

二、是非题(每题1分,共10分)

1.一维数组在定义时进行初始化,也必须指名数组大小。()

2.C语言中的字符常量可以像整数一样在程序中参与运算。()

3.break;语句执行时退出到包含该break;语句的所有循环外。()

4.有参的宏,其参数参与运算,宏替换要先完成参数的计算,然后再执行替换。()

5.在C程序中,数据只能用二进制的形式进行存放。()

6.指针可以加上或减去一个整数。()

7.在switch语句中必须使用default。()

8.C语言的特点是简洁,编译程序小、效率高。()

9.字符数组中的字符串可以直接进行比较。()

10.C程序通过编译之后会产生一个扩展名为exe的可执行程序。()

三、问答题(每题10分,共30分)

1.请写出实现选择结构的三种语句。写出关键字,表达式和语句用“表达式”和“语句i”(i=1,2,…)。

2.请将以下程序中的数组改写成指针形式,并将用户输入的字符串按照单词进行分割后再输出。提示:单词是指用空格、\t或\n分割的部分,同时用二维数组来储存单词。#includestdio.h

chartext[],ch;

inti,j;

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

text=\0;

for(i=0;(ch=getchar())!=#;i++)

text=ch;

for(i=0,j=0;text!=\0;i++)

if(text==

text==\t

text==\n)

printf();

else

printf(%c,text);

3.阅读以下程序,并写出和的罗马表示及运算步骤。

intn,i,j,k;

char*roman[4][10]={,I,II,III,IV,V,VI,VII,VIII,IX,

,X,XX,XXX,XL,L,LX,LXX,LXXX,XC,

,C,CC,CCC,CD,D,DC,DCC,DCCC,CM,

,M,MM,MMM};

scanf(%d,n);

printf(%d=,n);

for(j=0,i=00;j4;j++,i/=10)

k=(n%i)/(i/10);

printf(%s,roman[3-j][k]);

printf(\n);

三、问答题(每题10分,共30分)

答案:

单分支if选择结构,一般格式为:

if(表达式)

{语句;}(2分)

双分支if-else选择结构,一般格式为:

{语句1;}

{语句2;}(3分)

多分支switch选择结构,一般格式为:

switch(表达式)

case常量表达式1:[语句序列1;][break;]

case常量表达式2:[语句序列2;][break;]

……

case常量表达式n:[语句序列n;][break;]

default:语句序列n+1;

}(5分)

#includestdio.h

chartext[],words[][20],*t=text,(*w)[20]=words;(2分)

inti,j=0,n=0;

for(i=0;(*(t+i)=getchar())!=#;i++);(2分)

for(i=0;*(t+i)!=#;i++)

if(*(t+i)!=*(t+i)!=\t*(t+i)!=\n)

*(*(w+n)+j++)=*(t+i);(2分)

n++;

j=0;(2分)

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

printf(%s,*(w+i));(2分)

k=(%00)/(00/10)=0j=0roman[3][0]---(空)(1分)

k=(%0)/(0/10)=9j=1roman[2][9]---CM(1分)

k=(%)/(/10)=0j=2roman[1][0]---(空)(1分)

k=(%10)/(10/10)=0j=3roman[0][0]---(空)(1分)

故的罗马数字表示为CM(1分)

k=(%00)/(00/10)=1j=0roman[3][1]---M(1分)

k=(%0)/(0/10)=2j=1roman[2][2]---CC(1分)

k=(%)/(/10)=5j=2roman[1][5]---L(1分)

k=(%10)/(10/10)=0j=3roman[0][0]---(空)(1分)

故的罗马数字表示为MCCL(1分)

1