数据结构论坛

首页 » 分类 » 问答 » 程序设计基础C语言程序设计知识要点
TUhjnbcbe - 2024/9/11 17:04:00
白癜风康复来袭 http://www.xxzywj.com/

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

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

A、程序行B、语句C、函数D、字符

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

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

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

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

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

3.C语言中,文件组成的基本单位为()。

A、记录B、数据行C、数据块D、字符序列

4.能正确表示“当x的取值在[1,10]和[,]范围内为真,否则为假”的表达式是()。

A、(x=1)(x=10)(x=)(x=)

!--=10(x--

B、(x=1)

(x=10)

(x=)

(x=)

!--=10)

(x--

C、(x=1)(x=10)

(x=)(x=)

!--=10)

(x--

D、(x=1)

(x=10)(x=)

(x=)

!--=10)(x--

5.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是()。

A、while((ch=getchar())!=N)printf("%c",ch);

B、while(ch=getchar()!=N)printf("%c",ch);

C、while(ch=getchar()==N)printf("%c",ch);

D、while((ch=getchar())==N)printf("%c",ch);

6.以下程序段中,与语句:k=ab?(bc?1:0):0;功能相同的是()。

A、if((ab)(bc))k=1;

B、if((ab)

(bc)k=1;

C、if(a=b)k=0;

D、if(ab)k=1;

7.若a是数值类型,则逻辑表达式(a==1)

(a!=1)的值是()。

A、1B、0

C、2D、不知道a的值,不能确定

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

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

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

9.下面合法的C语言字符常量是()。

A、\tB、"A"C、65D、A

10.下列关于复合语句和空语句的说法错误的是()。

A、复合语句是由“{”开头,由“}”结尾的

B、复合语句在语法上视为一条语句

C、复合语句内,可以有执行语句,不可以有定义语句部分

D、C程序中的所有语句都必须由一个分号作为结束

11.下面不是C语言合法标识符的是()。

A、abcB、5nC、_4mD、x3

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

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

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

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

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

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

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

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

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

A、oB、

C、1.5e1.5D、L

15.若要打开C盘上my子目录下名为text.txt的文本文件进行只读操作,下面符合此要求的函数调用是()。

A、fopen("C:\\my\\text.txt","r");

B、fopen("C:\\my\\text.txt","rt+");

C、fopen("C:\\my\\text.txt","rb");

D、fopen("C:\\my\\text.txt","w");

16.若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是()。

A、a[0][4]B、a[1][3]C、a[0][3]D、a[1][4]

17.下列关于枚举类型的描述不正确的是()。

A、可以在定义枚举类型时对枚举元素进行初始化

B、在赋值时,不可以将一个整数赋值给枚举变量

C、枚举变量不可以进行关系运算

D、枚举变量只能取对应枚举类型的枚举元素表中的元素值

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

A、在不同的函数中不可以使用相同的名字的变量。

B、函数中的形式参数是局部变量。

C、在一个函数内定义的变量可以在另一函数中使用。

D、在main函数中,变量一经定义,系统将自动赋予初始值。

19.若有说明:

inta[][3]={1,2,3,4,5,6,7};

则a数组第一维的大小是()。

A、2B、3C、4D、无确定值

20.设有数组定义:

chararray1[]="abcd";char

array2[]={a,b,c};

则数组array1所占的空间比array2多()。

A、1个字节B、2个字节

C、3个字节D、4个字节

21.以下程序有语法性错误,有关错误原因的正确说法是()。

intmain()

{

intG=5,k;

voidprt_char();

……

k=prt_char(G);

……

}

A、语句voidprt_char();有错,它是函数调用语句,不能用void说明

B、变量名不能使用大写字母

C、函数说明和函数调用语句之间有矛盾

D、函数名不能使用下划线

22.若有说明:inta[3][4];,则对a数组元素的正确引用是()。

A、a[2][4]B、a[1,3]

C、a[1+1][0]D、a(2)(1)

23.给出以下定义:

charx[]="good";

chary[]={g,o,o,d};

两者之所以不等价是因为()。

A、x中元素的存储是连续的,y是不连续的

B、两者存储的元素数据类型不同

C、x是字符串数组,最后一个元素为’\0’

D、数组名称不同

24.若有以下说明和定义

uniondt

{inta;charb;doublec;}data;

以下叙述中错误的是()。

A、data的每个成员起始地址都相同

B、变量data所占内存字节数与成员c所占字节数相等

C、程序段:data.a=5;printf("%f\n",data.c);输出结果为5.

D、data可以作为函数的实参

25.若有以下说明语句:

structstudent

{

intname;

intnumber;

intsex;

}stu;

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

A、struct是声明结构体类型时用的关键字

B、structstudent是用户定义的结构体类型名

C、stu是用户定义的结构体类型名

D、name,sex都是结构体成员名

26.若有定义:intw[3][5];,则以下不能正确表示该数组元素的表达式是()。

A、*(*w+3)

B、*(w+1)[4]

C、*(*(w+1))

D、*(w[0][0]+1)

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

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

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

28.若有语句:char*line[5];,以下叙述中正确的是()。

A、定义line是一个数组,每个数组元素是一个基类型为char的指针变量

B、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C、定义line是一个指针数组,语句中的*号称为间址运算符

D、定义line是一个指向字符型函数的指针

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

A、值B、地址C、名D、以上都是

30.已定义以下函数

fun(char*p2,char*p1)

{while((*p2=*p1)!=\0){p1++;p2++;}}

函数的功能是()。

A、将p1所指字符串复制到p2所指内存空间

B、将p1所指字符串的地址赋给指针p2

C、对p1和p2两个指针所指字符串进行比较

D、检查p1和p2两个指针所指字符串中是否有\0

二、是非题(正确的填写“T”,错误的填写“F”。每题1分,共10分。)

1.如果满足if条件所要执行的语句为复合语句,则应该把这些语句使用{}括起来。(T)

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

3.一维数组的引用其下标从0开始。(T)

4.算法只能用C语言来描述。(F)

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

6.二维数组的初始化,必须写第一维的长度。(F)

7.数据类型构造类型有枚举型、共用型和结构型(T)

8.一个好的算法是一个好的程序的必要组成部分。(T)

9.为了提高读写效率,在进行读写操作后应关闭文件以便下次再进行读写。(F)

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

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

1.修改以下程序,将功能表示为自定义函数,并说明在输入asdafaaz67后的输出为什么?

main()

{

charstr[81];

intn,i,j=0;

clrscr();

printf("Inputastring:");

gets(str);

puts(str);

for(i=0;str!=‘\0’;i++)

if(str!=‘’)str[j++]=str;

str[j]=’\0’;

printf("%s\n",str);

}

voidfunc(char*str)

{

inti,j=0;

for(i=0;str!=‘\0’;i++)

if(str!=‘‘)str[j++]=str;

str[j]=‘\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

puts(str);

func(str);

printf("%s\n",str);

}

输入asdafaaz67,则输出为asdafaaz67

2.以下程序可以实现求解数组元素的和,请将数组改写成指针形式。

main()

{

intx[5]={5,1,2,3,4};

intsum=0,i=0;

while(i5)

{

sum+=x;

i++;

}

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

}

main()

{

intx[5]={5,1,2,3,4};

int*p,sum=0;

p=x;

while(p-x=4)

sum+=*p;

p++;

}

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

}

1