“C语言程序设计”期末复习题.doc
“C语言程序设计”期末复习题一单项选择题1组成C程序的基本单位是_。A)表达式与语句 B)若干文件 C)函数 D)main函数2下列为字符常量的是_。A)HE B)"I" C)'Z' D)She3若变量c为char类型,能正确判断c为小写字母的表达式是_。A)'a'<=c<= 'z' B)(c>= 'a')|(c<= 'z') C) ('a'<=c)and ('z'>=c) D)(c>='a')&&(c<='z')4在C语言中,正确的int类型的常数是_。A)2U B)059 C)3a D)0xAF5下列变量定义正确的是_。A)int x_1 ; y;B)int x=y=5 ;C)int for=4;D)int printf=2,x_y=2;6以下函数原型说明正确的是_。A)float add(int x, int y) ; B)int add(int x;int y) ;C)char add( x,y) ; D)int add(char x ) ; 7有程序段如下,不能表示为地址的是_。int x=2,*p; p=&x; x=x+1; A)&x B)p C)&p D)&(x+1)8简单变量做实参时,实参与其对应的形参之间的数据传递方式是_。A)双向值传递方式 B)地址传递方式C)单向值传递方式 D)用户指定传递方式9下列表达式没有错误的是_。int x,*p;A)5.0%2 B)x+1=5 C)&p D)&(x+1)10下列错误的语句是_。A)int k,*p=&k; scanf(“%d”,&k);B)int k,*p=&k; scanf(“%d”,p);C)int k,*p; *p=&k; scanf(“%d”,p);D)int k,*p ; p=&k; scanf(“%d”,p); 11任何复杂的程序,都是由_构成的。A)分支结构、顺序结构、过程结构 B)循环结构、分支结构、过程结构C)顺序结构、循环结构、分支结构 D)循环结构、分支结构12有以下定义和赋值语句,能够正确表示a12的表达式是 。int a43=1,2,3,4,5,6,7,8,9,10,11,12;int (*p)3= a;A)*(*p+1)+2) B)(*p+1)+2 C)*(*(p+5) D)*(*(p+1)+2)13以下说法中正确的是_。A)程序总是从第一个定义的函数开始执行B)在程序中,要调用的函数必须在main函数中定义C)程序总是从main函数开始执行的D)程序中的main函数必须放在程序的开始部分14以下结构体类型变量的定义错误的是_。A)#define STU struct student STU float height; int age; std1;B)struct student float height; int age; std1;C)struct float height; int age; std1;D)struct float height; int age; student; struct student std1;15以下说法错误的是_。A)dowhile语句与while语句的区别仅是关键词“while”出现的位置不同B)while语句是先进行循环条件判断,后执行循环体的C)dowhile是先执行循环体,后进行循环条件判断D)while、dowhile和for语句的循环体都可以是空语句16C语言程序是从main函数开始执行,这个函数写在_。A)程序文件开始 B)它所调用函数的前面C)程序文件最后 D)程序文件任何位置17在语言类型说明中,int、char、short等类型的长度是_。A)由用户自己定义的 B)与机器字长有关的C)固定的 D)任意的18以下字符中,不正确的C语言转义字符分别是_。A) B)011 C) D)xaa19以下选项中,合法的语言关键字是_。A)integer B)Char C)short D)Long20若一个外部变量的定义形式为static int x ; 其中static的作用是_。A)将变量存放在静态存储区,使x的值可以永久保留B)使变量x可以由系统自动初始化C)使x只能在本文件内引用D)使x的值可以永久保留21以下叙述错误的是_。A)语言本身没有输入输出语句B)一个可执行的源程序必须包含一个main函数C)程序中,注释说明只能位于一条语句的后面D)程序的基本组成单位是函数22设有以下程序片段,请问执行后的输出结果是_。char ch='A'ch=(ch>='a' && ch<='z')?ch:ch-'A'+'a'printf("%c" , ch);A)A B)a C)Z D)z23int (*ptr) ();说明了_。A)ptr是指向一维数组的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针24以下有关宏替换的叙述错误的是_。A)宏名必须用大写字母表示 B)宏替换不占用运行时间C)宏名不具有类型 D)宏替换只是字符替换25以下对二维数组a的声明正确的是_。A)int a 3 ; B)int a (3,4); C)int a 14; D)int a (3)(4);26如果在一个函数的复合语句中定义一个变量,以下叙述正确的是_。A)该变量在该函数中有效 B)该变量只在该复合语句中有效C)该变量为不合法的变量 D)该变量在本程序范围内有效27能表示x为偶数的表达式是_。A)x %2=0 B)x%2=1 C)x%2 D)x%2!=028C语言中运算对象必须是整型的运算符是_。A) % B) / C)= D) <=29下列数组定义正确的是_。A)int a5,b2,3; B)char no(30); C)char x; D)int x5=1,2,3;30变量定义如下:int x;float y;以下输入语句正确的是_。A)scanf("%f%f",&y,&x); B)scanf("%f%d", y, x);C)scanf("%f%d",&y,&x); D)scanf("%5.2f%2d",&y,&x);31下列函数头中形参说明错误的是_。A)float average(float array9, n) B)float average(float *array ,int n)B)float average(float array ,int n) C)float average(float array ,int n32函数形参与实参之间的传递是“值传递”,以下叙述正确的是_。A)实参和与其对应的形参共用一个存储单元B)实参和与其对应的形参各占用独立的存储单元C)当实参和与其对应的形参同名时才共用一个存储单元D)形参是形式的,不占用存储单元33以下if语句错误的是_。A)if (x<y) x+; y+; else x-; y-;B)if (x) x+y; C)if (x<y); D)if (x!=y) scanf (" %d",&x) ; else x+;34若有定义:int (*p)3; 则p 。A)是一个指向整型变量的指针B)是一个指针数组名C)是一个指针,它指向一个含有3个整型元素的一维数组D)定义不合法35t为int类型,进入下面的循环之前t的值为0,以下叙述正确的是_。while( t=l ) A)循环控制表达式的值为0 B)循环控制表达式的值为1C)循环控制表达式不合法 D)以上说法都不对36以下说法正确的是_。A)C语言源程序无论包含了多少函数,总是从main函数开始执行。B)main是由C语言提供的,并不需要用户自己编写。C)调用C语言标准库函数时,程序中要用到include命令,它也是C语言的一种语句。D)在C语言中,要调用的函数必须在main函数中定义。37若0<=i<10,则下列_是对数组元素的错误引用。int a =1,2,3,4,5,6,7,8,9,0,*p, i;p=a;A)*(a+ i) B)ap-a C)p+ i D)*(&ai)38下列表达式的值为1.5的是_。int x;float y;A)x=3/2.0 B)x=3/2 C) y=3/2 D)y=3/2.039下列语句实现的功能与其printf语句中所表达的含义相符的是_。A) int a,b,c; scanf ("%d%d%d" ,&a,&b,&c); if(a=b=c) printf("这是一个等边三角形n");B) int a,b,c; scanf ("%d%d%d" ,&a,&b,&c); if(a+b>c|a+c>b| c+b>a)printf("这三条边能组成一个三角形n");C) int a,b,c; scanf ("%d%d%d" ,&a,&b,&c); if(a=b&&b=c) printf("这是一个等边三角形n");D) int a,b,c; scanf ("%d%d%d" ,&a,&b,&c); if(a=b|b=c) printf("这是一个等腰三角形n")40下列关于#include命令的叙述中,错误的是_。A)#include命令中,文件名可以用双引号或尖括号括起来B)一个被包含文件中又可以包含另一个被包含文件C)一个#include命令中可以指定多个被包含文件D)一个#include命令中只能指定一个被包含文件41若a为整型变量,则以下语句_。a=-2L;printf (“%dn”,a);A)赋值不合法 B) 输出值为-2 C)输出为不确定值 D)输出值为242若有说明语句:int y4=0,0,0,0,0,0; 则正确的叙述是_。A)数组y的每个元素都可得到初值0B)二维数组y的行数为1C)该说明等价于int y04=0;D)有元素y00至y05可得到初值,其余元素均得不到初值043若short int 类型数据占两个字节,则下列语句的输出为_。int k=-1;printf(“%d,%un”,k,k);A)-1,-1 B)-1,32767 C)-1,32768 D)-1,6553544已知:char a; int b; float c; double d; 执行语句c=a+b+c+d;后,变量c的数据类型是_。A)int B)char C)double D)float45一个共用体变量所占内存是_。A)该共用体第一个成员所占的内存量B)该共用体最后一个成员所占的内存量C)该共用体占内存最多成员所占的内存量D)该共用体所有成员所需内存量的总和46若有以下变量说明和数据的输入方式,则正确的输入语句为_。变量说明:float x1,x2;数据的输入方式:4.52<回车> 3.5<回车>A)scanf(“%f,%f”,&x1,&x2); B)scanf(“%f%f”,&x1,&x2);C)scanf(“%3.2f,%2.1f”,&x1,&x2); D)scanf(“%3.2f%2.1f”,&x1,&x2);47若变量已正确定义,与语句 if(a>b)k=0;else k=1;等效的是_。A)k=(a>b)?1:0? B)k=a>b;C)k=a<=b; D)a<=b?0:1;48若有定义:int x,*pb;则正确的赋值表达式是_。A)pb=&x B)pb=x C)*pb=&x D)*pb=*x49已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为_。A)p0 B)*p C)&*a D)*&a50在语言中,引用数组元素时,其数组下标的数据类型允许是_。A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式51若有定义:int b5;则以下对b 数组元素的正确引用是_。A)*&b5 B)b+2C)*(*(b+2) D)*(b+2)52设有定义语句“char s=”123”;”,则表达式“s3”的值是_。A)1 B)3 C)0 D)语法出错53语句if (!i ) i+; 中的条件表达式 !i 等价于_。A)i=0 B)i!=1 C)i!=0 D)-i54设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句_。if (x=y) printf(" x is equal to y."); A)语法错 B)不能判断x和y是否相等C)编译出错 D)能判断x和y是否相等55C语言中规定,if语句的嵌套结构中,else总是与_配对。A)与最近的if 配套 B)与第一个if 配套C)按缩进位置相同的if配套 D)与最近的且尚未配对的if 配套56以下有关switch语句的正确说法是_。A)break语句是语句中必须的一部分B)在switch 语句中可以根据需要使用或不使用break语句C)break语句在switch 语句中不可以使用D)在switch 语句中的每一个case都要用break语句57若有以下定义:float x; int a,b; 则错误的switch语句是_。A)switch(x) B)switch(a) case 1.0:printf("*n"); case 1:printf("*n"); case 2.0:printf("*n"); case 2:printf("*n"); C)switch(a+b) D)switch(a+b); case 1:printf("*n"); case 1:printf("*n"); case 1+2:printf("*n"); case 2:printf("*n"); 58当执行以下程序时,_。#include<stdio.h>void main() int a; while(a=5) printf("%d ",a-); A)循环体将执行5次 B)循环体将执行0次C)循环体将执行无限次 D)系统会当机。59以下函数的类型是_。int sum(double x, double y) double s; s=x+y; return s;A)字符型 B)不确定 C)整型 D)实型60以下叙述不正确的是_。A)一个C源程序文件必须包含一个main( )函数B)一个C源程序文件可由一个函数组成C)一个C源程序文件是一个编译单位D)一个C源程序文件可由多个函数组成61若用数组名作为函数调用时的参数,则实际上传递给形参的是_。A)数组元素的个数 B)数组的第一个元素值C)数组中全部元素的植 D)数组首地址62C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是_。A)long 型 )float 型 C)double型 D)int型63以下叙述正确的是_。A)函数的定义和函数的调用均不可以嵌套B)函数的定义和函数的调用均可以嵌套C)函数的定义可以嵌套,但函数的调用均不可以嵌套D)函数的定义不可以嵌套,但函数的调用均可以嵌套64凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是_。A)静态(static) B)外部(extern)C)自动(auto) )寄存器(register)65若在一个源程序文件中定义了一个允许其他源文件引用的实型外部变量x,则在另一文件中可以使用的引用说明是_。)extern float x; B)float x;)extern auto float x; D)extern static float x;66C语言的编译系统对宏命令的处理是_。A)在程序连接时进行的 B)在对源程序中的其它语句编译之前进行的C)在程序运行时进行的 D)和C程序中的其它语句同时进行的67下列对字符串的定义中,错误的是_ _ 。A)char str5= "abcde" B)char str = "abcde"C)char *str ="abcde" D)char str = 'a', 'b', 'c', 'd', 'e', '0'68若有定义char x = "12345" char y = '1', '2', '3', '4', '5';则 。A)x数组与y数组的长度相同 B)x数组长度大于y的长度C)x 数组长度小于y数组长度 D)x数组等价与y 数组二程序阅读题1阅读以下程序,若输入60<回车>,写出程序运行结果。#include<stdio.h>void main() int x; scanf("%d ",&x); if (x>=60) printf("pass"); else printf("fail");2阅读以下程序,若输入5<回车>,写出程序运行结果。#include <stdio.h>int main( ) int i, n; double fact; scanf("%d", &n); fact=1; for(i=1;i<=n;i+) fact*=i; printf("%.0fn", fact);3阅读以下程序,若输入a<回车>,写出程序运行结果。#include <stdio.h>int main( ) char ch; ch=getchar(); if(ch>='a'&&ch<='z') ch=ch-a+A; else if(ch>='A'&&ch<='A') ch=ch-'A' + 'a' putchar(ch);4阅读以下程序,若输入2 3<回车>,写出程序运行结果。#include <stdio.h>int main( ) int i, n; double x, mypow; scanf("%lf%d", &x, &n); mypow=1; for(i=1;i<=n;i+) mypow*=x; printf("%.2fn", mypow);5写出下面程序的运行结果。#include <stdio.h>func(int a3) int i,j,sum=0; for (i=0;i<3;i+) for(j=0;j<3;j+) if(i=j) sum=sum+aij; return(sum);void main() int a33=1,1,1,2,2,2,3,3,3,sum; sum=func(a); printf("sum=%dn",sum);6写出以下程序的运行结果。#include<stdio.h>int fun(char *s) char *p=s; while(*p!='0') p+; return(p-s);void main( ) printf("%dn ",fun("hello world");7阅读以下程序,若输入1 9 3 4 0<回车>,写出程序运行结果。#include <stdio.h>int main( ) int x, sum; scanf("%d", &x); sum=0; while(x>0) if(x%2=0) sum+=x; scanf("%d", &x); printf("%dn", sum);8阅读以下程序,若输入4 5 7 9 5<回车>,写出程序运行结果。#include <stdio.h>int main( ) int i, index, n; int a10; scanf("%d", &n); for(i=0; i<n; i+) scanf("%d", &ai); index=0; for(i=1;i<n;i+) if(ai<aindex) index=i; printf("min=%d,index=%dn", aindex,index);9写出以下程序的运行结果。#include<stdio.h> void main() int num=0; while (num<=2) printf("%d ",num); num+; 10写出以下程序的运行结果。#include<stdio.h>void increment()static int x=0; x+=1; printf("%d",x);void main() increment(); increment(); increment();11阅读以下程序,若输入10<回车>,写出程序运行结果。#include "stdio.h"int main( )int n;void dectobin(int n);scanf("%d",&n);dectobin(n);printf("n"); void dectobin(int n) int a16=0; int i=0; while(n!=0) ai=n%2; i+; n/=2; i=i-1; while(i>=0) printf("%d",ai); i-; 12写出以下程序的运行结果。#include<stdio.h>int x;void cude() x=x*x*x; void main() x=5; cude(); printf("%dn",x);13写出以下程序的运行结果。#include<stdio.h>void main() int a =1,3,5,7,9; int y=0,x,*p; p=&a0; for(x=0; x<3; x+) y+=*(p+x); printf("%dn",y); 14阅读以下程序,写出运行结果。#include<stdio.h>int add(int a,int b) int c; c=a+b; return c; void print(int t) printf("z=%dn",t); void main() int x,y,z; void print(int t); x=1;y=2; z=add(x,y); print(z); 15写出以下程序的运行结果。#include<stdio.h>struct mine int qa, qb, qc; ; void main() struct mine s2 = 1,2,3,4,5,6; int answer; answer = s0.qa * s1.qb; printf("%d n", answer); 16写出以下程序的输出结果。#include<stdio.h>void main() int y=5; for( ; y>0; y-) if(y%2=0) continue; printf("%d", y); 17阅读以下程序,写出程序的功能。#include<stdio.h>void main() int a10=2,4,0,-5,10,6,-8,9,6,7; int i,s=0,count=0; for(i=0; i<10; i+) if(ai>0) s+=ai,count+; else continue; printf ("s= %d , count=%dn", s ,count); 18阅读以下程序,写出程序的运行结果。#