当前位置:文档之家› C语言期末复习文档.docx

C语言期末复习文档.docx

C语言期末复习文档.docx
C语言期末复习文档.docx

期末考试题型:

程序设计基础题型举例

?、选择题

1、 C 语言规定:在一个源程序中,main 函数的位置—B ________ 。 A.

只能在程序头部; B.可以在程序任何位

置;

C.必须在#include ^Uttdefine 语句后面;

D.只能在程序最后面。

2、 在使用TurboC2.0环境编辑程序时,运行某程序使用的菜单项为_A_。 A. RUN

B. FILE

C. EDIT

D. OPTION

3、 下面标识符中止确的是—B _______ o A. $a#b

B. sum

C. 1A23BC

D.Y ?M ?D

4、 在C 语言屮(以16位PC 机为例),存储一个整型、字符型、双精度实型变量

所需的字节数是 ____ C_0

A.4、1、4

B.4、1、4

C.2、1、8

D. 2、2、8

5、 下面的变量说明中 _____ B ________ 是止确的。 A. Char : a, b, c ; B ? Char a, b, c ; C. Char a ; b ; c ;

D. Char a, b, c

6、判断char 型变量ch 是否为大写字母的止确表达式是—C ________

C. (ch>=/A ,)&&(ch<=T)

D. (W<= ch)AND(/Z ,>= ch)

7、已知int x=10,y=20,z=30;以下语句执行后x,y,z 的值是 ____ D _____ if(x>y) z=x; x=y; y=z;

、 选择题

30分

二、 填空题或程序填空 三、 判断题 10分 四、 分析题 20分 五、 编程题 20—

20分

30分

A. /A ,<=ch<=7,

B. (ch>=W)&(ch<=T)

A. x=10, y=20, z=30

B. x=20, y=30, z=20

C. x=20, y=30, z=10

D. x=20, y=30, z=30

int n=0;while(n++<=2);printf( “%d” z n);

A. 2

B. 3

C.4

D.死循环

9、下面程序的功能是输岀如右图所示形式的金字塔图案。

main()

{ int i,j;

for(i=l;i<=4;i++)

{ for(j=l;j<=4-i;j++) printf(“ “);

for(j=l; j<= ______ ; j++) printf("〃);

printf(〃\n〃);

}

}

在下划线处应填入的是_____ B ____________

A. i

B. 2*i-l

C. 2*i+l

D. i+2

10、下列数组定义方式不止确的语句是—A ________ 。

A. intx[3]={12, 13, 14, 15};

B. chary[]={z h,, z e\ T, T, V};

C. char x[5];

D. chary[][10]二{"Hi,Hello〃};

□、c语言规定,数组名做实参时,它和对应形参Z间的数据传递方式为_c A.由实参传给形参,再由形参传回给实参 B.单向值传递

C.地址传递

D.由用户指定传递方式

12、以下正确的函数定义形式是—D_o

A. double fun(int x, y);

B. double fun(int x; int y);

C. double fun(x, y);

D. double fun(int x, int y);

13、执行下列程序后,其结杲为_A_。

inta[]={2, 4, 6, 8, 10, 12}, *p;

p=a;

*(p+4)二2;

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

A. 2, 2

B. 0, 10

C. 2, 10

D. 0, 2

14、下面程序的输出结杲是:_D ______ o

#define POWER(x) (x*x)

main()

{int i = 4; printf("%d,,/ POWER( i-2));}

分析:4-2*4-2=-6

A. -9

B. -7

C. 5

D. -6

15、有下列结构体,对该结构体变量stu的成员项引用不正确的是_A _______ -

struct student

{int m;

float n;

}stu,*p;

A. p.stu.n

B. p->m

C. (*p).m

D. stu.n

16、一个C程序的执行是从____ B____ o

A. main()函数开始,直到最后一个函数结束

B. main()函数开始,直到main()函数结束

C. 第一个语句开始,直到最后一个语句结束

D. 第一个函数开始,直到最后一个函数结束

17、下面标识符中止确的是_A ______ -

A. number

B. 123abc

C. *a#b*c

D. P?H?D

18、在使用TurboC2.0环境编辑程序时,编译某程序使用的菜单项为—C_。

A. FILE

B. COMPILE

C. RUN

D. OPTION

19、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为_____ C_O

A. char < int < long int = float = double

B. char = int < long int <= float < double

C. char < int < long int <= float < double

D. char = int = long int <= float < double

20、下面的变量说明中 ___ B __ 是止确的。

A. char: a, b, c;

B. char a, b, c;

C. char a; b; c;

D. char a, b, c

21、C语言程序中出现条件分支语句if-else时,else与_(:_组成配对关系。

A.同一复合语句内部的讦

B.在其之前任意的讦

C.在其2而未配对的最近的讦

D.首行位置相同的if

22、已知int x=10,y=20,z=30;以卜-语句执彳亍后x,y,z的值是 __ D ___ 。

if(x>y) z=x; x=y; y=z;

A. x=10, y=20, z=30 B? x=20, y=30, z=20

C. x=20, y=30, z=10

D. x=20, y=30, z=30

23、从循环体内某一层跳出, 继续执行循环外的语句是:

C. break语句

D.空语句

24、判断char型变量ch是否为大写字母的正确表达式是—B—。

A. z A,<=ch<=z Z,

B. (ch>=/A,)&&(ch<=z Z,)

C. (ch>=W)&(ch<=/Z,)

D. (W<= ch)AND(/Z,>= ch)

25、下而程序的输出结果是: ____ B_o

#define POWER(x) (x*x)

main()

{int i = 2; printf(H%d H z POWER( i-2));}

A. -4

B. -6

C. 5

D. -9

26、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为一_C_O

A、地址传递由实参传给形参,再由形参传冋给实参

C、单向值传递

D、由用户指定传递方式

27、下列数组定义方式不正确的语句是—A—o

A. intx[3]={12, 13, 14};

B. chary[]={z h,, z e\ T, T, V};

C. char x[5];

D. chary[][2]={//Hi7Hello,,};

28、以下正确的函数定义形式是—A—o

A. double fun(int x, int y);

B. double fun(int x; int y)

C? double fun(x, y) D? double fun(int x,y)

29、执行下列程序后,其结杲为—D—o

inta[]={l, 3, 5, 7, 9, 11};*p;

p=a;

printf (“%d, %d\n〃, *p, * (p+2));

A. 0, 9

B. 0, 3

C. 1, 7

D. 1, 5

30、char(*p)[5];该语句声明D是一个 A 。

A) 指向含冇5个元素的一维字符型数组的指针变量p

B) 指向t度不超过5的字符串的指针变量p

C) 有5个元素的指针数组p,每个元素可以指向一个字符串

D) 有5个元索的指针数组p,每个元索存放一个字符串

31、C语言源程序的某文件中定义的全局变量的作用域为:_C—。

A) 本文件的全部范围B)本函数的全部范围

C)从定义该变量的位置开始到本文件结束D)本程序的所有文件的范围

32、已知学生记录描述为:

struct student

int no; char n ame[20]; char s ex; struct

{ int year; char mon th[20]; int day; Jbirth;

}; struct student s;

设变量s 屮的〃生日〃应是“1984年口月11日〃,下列对“生日〃的正确赋值方式是

s.birth.month = "11"; s.birth.day = 11; s.birth.m onth = 11; s.birth.day = 11;

strcpy(s.birth.month,"11"); s.birth.day = 11; s.birth.month[] = {"11"}; s.birth.day = 11;

33.若有二维数组定义语句:int a[3][4];则下面能正确引用元

素a[i][j]的为:

A) *(a+j*4+i) B) *(a+i*4+j) C) *(a[i]+j)=*(*(a+i)+j)

D) *((*a+i)+j)

34.在下面的语句中:只有一个在功能上与其他三个语句不等价(其中si 和s2 表示某个C 语句),这个不等价的语句是 D 。 A) if (a) si; else s2; B)讦(!a) s2; else si; C) if(a!=O) si; else s2;

D) if(a==O) si; else s2;

?以下正确的描述是—A 。

A) 对共用体初始化时,只能对第一个成员进行初始化,每一?瞬吋起作用的成员 是最后一次为其赋值的成员

B) 结构体可以比较,但不能将结构体类型作为函数返回值类型 C) 函数定义可以嵌套

D) 关键字typedef 用于定义一种新的数据类型 36.下列的定义中,正确使用字符串初始化的是 C o

A) char str[7] ="FORTRAN";

B) char str[]= {FQ,RJ ;R,A,N,0}; C) char

*str = "FORTRAN";

D) char str[]=

37. 判断字符串si 与字符串S2相等,应当使用:_D ________ o A) 讦(si = s2) B)讦(strcmp(sl, s2)) C) if (!strcmp(sl, s2))

D) if (strcmp(sl, s2) = 0)

38. 二维数组a 有m 行n 列,则在汕川]之前的元素个数为 B 。

A. j*n+i

B. i*n+j

C. i*n+j ?l

D. i*n +j+l

43.以下不能正确定义二维数组的选项是一 D 。

A) int a[2][2]={{1},{2}};

B) inta[]⑵二{123,4};

C) inta[2][2]={{l},2,3}; D) int a[2][]={{l,2},{3,4}};

A) s.birth.year = 1984; B) s.birth.year = 1984; C) s.birth.year = 1984; D)

s.birth.year = 1984;

39. 若有二维数组定义语句:int a[3][4];则下面对元素a[i][j]不正确的引用方式是:

B 。

A) *(&a[i][j]) B) *(a+4*i+j)

C) *(a[i]+j) D) *(*(a+i)+j)

40. 如果int i = 3,则printfC^d", ?i++ )的输出结果是_______________ , i的值是

A_o

A) -3 4 B)-4 4

C) -4 3 D)-3 3

41. 判断字符串si与字符串s2相等,应当使用: D 。

A) if (sl = s2)

B) if (strcmp(sl, s2))

C) if (!strcmp(sl, s2))

D) if (strcmp(sl, s2) = 0)

42. 二维数组a有m行n列,则在a[i][j]之前的元素个数为 B 。

A. j*n+i

B. i*n+j

C. i*n+j?l

D. i*n +j+l

43. 以下选项中可作为C语言合法整数的是一C

A)10110B B)0386 C)0Xffa D)x2a2

44. 以下不能定义为用户标识符的是_Q_

Ajscanf B)Void C)_3com_ D)int

45. 若已定义的函数有返向值,血以下关于该函数调用的叙述中错误的是_

A) 函数调用可以作为独立的语句存在

B) 函数调用可以作为一个函数的实参

C) 函数调用可以出现在表达式中

D) 函数调用可以作为一个函数的形参(X)

46. 已定义c为字符型变量,则下列语旬中正确的是一C

A) c=,97,; B) c=H97H; C) c=97; D) c="a n;

47 ?以下能正确定义一维数组的选项是B

A) int num[];

B) #define N 100 int num[N];

C) int num[0..100];

D) int N=100; int num[N];

48|?下列选项中正确的语句组是D

A) char s[8]; s={"Beijing"}; B) char *s; s={"Beijing"};

C) char s[8]; s=H Beijing"; D) char *s; s="Beijing";

49. 已定义以下函数

fun(char *p2, char *pl)

{while((*p2=*pl)!='\0,){ pl++;p2++;}}

函数的功能是A

A) 将pl所指字符串复制到p2所指内存空间

B) 将pl所指字符串的地址赋给指针p2

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

D) 检查pl和p2两个指针所指字符串中是否有、0’

50. 若fp已止确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp) 的值为 A .

A) 0 B) 1 C) -1 D) 一个非0 值

51. 下列关于C语言数据文件的叙述中正确的是 D .

A) 文件由ASCII 码字符序列组成,C 语言只能读写文本文件 B) 文件由二进制数据序列组成,C 语言只能读写二进制文件

C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文木文件 D) 文件曲数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 52. C 语言源程序的某文件中定义的全局变量的作用域为:—C_o A) 本文件的全部范围 B) 本函数的全部范围

C) 从定义该变量的位置开始到木文件结朿 D) 本程序的所有文件的范围

53. C 语言规定,简单变量作为实参时,他和对应形参Z 间的数据传递方式是: A

A)单向值传递B)地址传递C)相互传递D)由用户指定方式 54. |以,卜?语句或语句组中?能止确进行字符命赋值的是一 D A) char *sp;*sp="right!"; C) chars[10];*s=,,nght!";

for(i 二 O;ivlO;i++) if(i (=5) break;

则循坏结束后i 的值为_

A)0

B)1

56. C 语言中, A)整型、实

型、

C)整型、实型、 5?|,以下

说法正确的是

A) C 程序总是从第一个定义的函数开始执行

B) 在C 程序中,要调用的函数必须在main()函数中定义 C) C 程序总是从main()函数开始执行

D) C 程序的main()函数必须放在程序的开始部分

58.假定int 类型变量占用两个字节,有定义:int x[10]={0,2,4};,则数组x 在内 存中所

占字节数是一 B

A)3

B)6

C) 10 D) 20

59?若fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp) 的

值为

A .

A) 0 B) 1 C) -1 D) 一个非 0 值

B) chars[10];s="right!n ; D) char *sp="right!";

C)5

D)10

最基本的数据类型包括:_C 逻辑型 字符型 B)

整型、字符型、数组 D)整型、实型、结构体 C

60.下列关于C语言数据文件的叙述中正确的是D?

A) 文件由ASCII码字符序列组成,C语言只能读写文本文件

B) 文件由二进制数据序列组成,C语言只能读写二进制文件

C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

二、填空题

1、C源程序的基木单位是_____ 函数________ o

2、在C语言程序设计中,正确的标识符由—下划线_、—数字—和—字母—组成。

3、设整型变量n的值为2,执行语句5+二叶二n*n「后,n的值是—-4—。

4、为表示关系x

5、已知字符A的ACSTT码值为65,以下语句的输出结果是—66 ___________ 。

char ch二8;

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

6、在定义int a[3] [4] [2];后,第5个元索是—a[0] [2] [0]_,最后一个元

素的首地址为—a[2][3] [0] ___________ o

7、下面程序段的运行结果是 ____ efgh _________ 。

char str[]="abcdefgh"/p=str;

printf(”%s”,p+4);

8、一个C源程序至少应该包含一个_main _________ 函数。

9、在C语言中,输入操作是由库函数____ scanf _______ 完成的,输岀操作是由库函数 _____ p r i n t f _____ 完成的。

10>设x=3, y二x++;那么y的值为—3 _______ ,表达式执行后,变量x的值为

_4 _____ o

11、已知字符a的ACSII码值为97,以下语句的输出结果是________ 99 ______ 。

char ch=V; printf("%c,%d\n",ch,ch);

12、定义整型变量a,字符型变量b,应该使用的正确语句为_int a;char b 13?若有定

义:char ch;

(1)使指针P指向变量ch的定义语句是________ o (2)在(1)的基础上,通过指针p给变量ch读入字符的scanf调用语句是scanf (“%c”,*p)_____________ o

(3)在(1)的基础上,通过指针p用格式输出函数输出ch屮字符的语句是printf ("%c”,*p)_____________ o

14. 从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:

能被4整除,但不能被100整除。

能被400整除。

★include

main()

{

int year, flag; printf (/z Entcr year:; scanf ("%cT, &year );

if

((year%4二二O&&year%100!二0)|| (year%400二二0) )

{ flag 二1; }

else

{ flag = 0; }

if ( ______________ )

{ printf (,z Yes! \n,z) ; }

else

{ printf (z,No! \n,z) ; }

}

15. 下面函数Fa订用于计算不及格成绩的学生人数, 个学生成绩由高到低排序。

ttinclude "stdio. h”

int Fail (float score[], int n)

{

int i, j, sum = _________________ ;

for (i=0; i

{ if (score[i] < 60) sum ___________________ ;

rcturn sum;

}

void Sort (float score[], int n)

{

int i, j, k;

float tempi;

for (i=0; i

{

k 二i;

for (j= _____________ ; j

{

if (score[j] > score[k]) k =_

} — if ( _____________ )

{ tempi 二score[k]; score[k] 二tempi; } }

}

int main()

int i;

float score[30];

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

scanf ( "%d” , &score[i]);函数Sort采用选择法对n score[i]; score[i] 二

printf ( “不及格学生人数为%d\n” Fail (score, 30));

Sort(score,30);

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

printf( "%4d” , score[i]);

return 0;

}

16. 下而这个程序的功能是对含冇n个元素(最多10个)的一维数组按升序进行排序。

#inelude

^define ARRAY_STZE 10

void Sort(int a[], int n);

void InputArray(int a[], int n);

void PrintArray(int a[], int n);

main ()

{

int a[ARRAY_SIZE], n;

printf(,z lnput array lenth n<=10: “);

scanf (〃%d〃,&n);

printf(,z输入数组a:\iT);

TnputArray (a, n);

Sort (a, n);

printf(,z打印排序后的数组a:\rT);

PrintArray (a, n);

}

void Sort (int a[], int n)

{

int i, j, p, temp;

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

{

P 二i;

for(j = ______________ ; j < n; j++)

{ if( _______________ ) P = J;

}

if ( _____________ )

{ temp = a[p];a[p] = a[i];a[i] = temp; }

void InputArray(int a[], int n)

int i;

for (i 二0; i 〈n; i++) void PrintArray(int a[], int n) {

int i;

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

printf (〃\n〃);

}

17?输入一行字符,统计莫屮的英文字符、数字字符、空格及英它字符的个数。#include

#inelude

^define ARR_STZE 80

main ()

{

char str[ARRSIZE];

int len, i, letter二0, digit二0, space二0, others二0;

gets (str);

for (i=0; ;i++)

{

if ( )

el se

letter ++;

if ( )

else digit ++; if ( )

space ++;

else

others ++;

i

J

printf (z,English character: %d\n〃,letter); printf (''digit character: %d\n〃,digit);

printf (/z space: %d\n〃,space);

printf(〃other character: %d\n〃,others);

i

J

18. C语言提供的三种逻辑运算符是___________________

和。

19. 已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33

#inelude

main ()

{

char a, b; a=getchar ();

scanf (〃%d〃,&b);

a=a~,A' +' O';

b二b*2;

printf ("%c %c\n", a, b);

}

20. 以下程序运行后的输出结果是____________ 。

#def ine S (x) 4*(x)*(x)+l

main ()

{

int i=2,j=3;

printf(〃%d\rT,S (i+j));

I

21「屮在内存中占 1 个字节,”畀在内存中占个字节。

22. ____________________________________________________ 若有inta[3][2] = {{l},{3,2},{4,5}};,则a⑴⑴的值是____________________________ 。

23?在循环语句屮,break语句的作用是跳出所在循环结构,转向执行该循环结构后面的语句 ________________ ,

continue语句的作用是使木次循环提前结束,跳过循环体continue语句后面尚耒执行的循坏体语句继续进行下一次循坏的条件判

断 ____________________________________________________ O

三、分析题

1、源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10

void main()

{ inti, a[10];

int *p=a;

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

scanf("%d", p卄);

for(p=a; p< (a+10); p++)

if (*p%2)printf("%3d", *p);

}

请回答:

上述程序的运行结果为: ___________________ 。

2、下面程序判断用户输入的数据是否为素数。

#include

void main()

{int a,i,flag=0;

scanf(”%cT, ①);

for(i=2; i

讦(②)

{flag=l; break;}

if (③)printf("%d 不是素数。;a);

else printf("%d 是素数。a);

}

请回答:

(1)①处应为_______________________________

⑵②处应为_________________________________

⑶③处应为_________________________________

3、下面程序求矩阵a的转置矩阵,请完善该程序。如右图,矩阵a的转置矩阵为b。

void main()

{inta[3][2]={2,4,6,8,10,12}, b[2][3];

int sum=0,ij;

for( i=0; i<3; ①)

for( j=0;②;j++)

prin tf(n sum=%d\rV:sum);

}

请冋答:

(1)①处应为_________________________________

⑵②处应为_________________________________ 2

3?

L 1 4?

a= 1 b= 2 5 -4 5 6 一

-3 6 -

⑶③处应为 _________________________________

4. Winclude

main()

{

int vl 二 10 ; float v2 二 2. 5 ; float v3 ; int v4 ; float v5 ; v3 = vl / v2 ; v4 二 vl / v2 ; v5 = vl / 4 ;

printf Cv3=%f\tv4=%d\tv5=%f\n }

程序运行结果是:

5? #include struct date

{

int year; int month; int day;

};

void func (struct date p)

{

p.year 二 2000; p. month = 5; p. day = 22;

}

main ()

{

struct date d; d.year = 1999; d. month = 4; d. day = 23;

printf ( “%d, %d, %d\n" , d. year, func (d);

printf ( "%d, %d, %d\n” , d. year,

}

程序运行结果是:

6. ttinclude main ()

int i = 0; wh 订e(i < 10) if(i++ < 1) continue;

,v3, v4, v5)

d. month, d. day); d. month, d. day);

相关主题
文本预览
相关文档 最新文档