期末考试题型:
程序设计基础题型举例
?、选择题
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, ①);