2022年程序设计复习题 .pdf
一、选择填空:1 逻辑运算符两侧的运算对象的数据类型D 。(A) 只能是 0或 1 (B) 只能是 0 或非 0 整数(C) 只能是整型或字符型数据(D) 可以是任何类型的数据2 C 语言的标识符只能由字母、数字和下划线组成,且第一个字符C 。(A) 必须为字母(B) 必须为下划线(C) 必须为字母或下划线(D) 可以是字母、数字或下划线3. 在 C语言中,表达式dcbax应表示为 C 。(A) x = a + b / c d; (B) x = a + b / (c d); (C) x = (a + b) / (c d); (D) x = (a + b) / c d; 4. 下列说法中正确的是 C 。(A) 一个 C+ 语言程序总是从第一个定义的函数开始执行。(B) 在 C+语言程序中,要调用的函数必须在main() 函数中定义(C) C+ 语言程序总是从main( )函数开始执行。(D) C+ 语言程序中的main() 函数必须放在程序的开始部分。5设 int i=0;下列语句中不正确的是_A_ (A)(i+1)+ ;(B)(float) (i+1) ;(C)i+1 ;(D)i+;6若用数组名作为函数调用的实参,传递给形参的是_A_ (A)数组第一个元素的地址。(B)数组第一个元素的值。(C)数组全部元素的地址。(D)数组全部元素的值。7 下列说法中正确的是_D_ (A)switch语句中必须有default 语句。(B)switch语句中必须有break 语句。(C)如果 xy 或 ay & ab) 为真。(D)若 p 为一指针变量,则表达式(!p)与表达式 (p!=null) 等价。8. C 语言的下列基本数据类型中_B_是错误的 . (A) long (B) short float (C) unsigned int (D) float 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 9. 设 int i=0 ;下列语句中正确的是_B_ (A)i+1=i;(B) i=i+1;(C)i0;(D)i+=10;10为了判断两个字符串s1和 s2 是否相等应当使用A 。(A) if(strcmp(s1,s2)=0) (B)if(s1=s2) 。(C) if(strcpy(s1,s2) 。(D) if(s1=s2) 。二、写出下列程序的运行结果:1long f(n) int n; static x=2; if (n=0) return (1); else x=x+n; return(x); main() cout f(0)+f(1)+f(2)+f(3); 17 2main() int n=0,i=1 ;while( n+=2) ; cout “ n= n ” n; n=4 3void a();void b();void c();int x=6;main() int x=8 ;cout “ x in main is n” x;a(); b(); c();x+;printf( “ x in main is %dn ” , x); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - void a() int x=10; cout “ x in a is n” x; void b() static int x=40;cout “ x in b is n” +x ; void c() x +=10 ;cout “ x in c is n” 0) function(&b1,size-1) ; coutb0; main() static int a6=30 , 27,64,19,95,100;function(a,6); 100 95 19 64 27 30 三. 找出下列程序中的错误并说明原因:1.main() int a= 10, b= 20, c; c= add( a, b); cout “ A+B= n”, c ); add(int x, int y ) float x; x=x+y; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - return(x); add(int x, int y )中的 X 重复定义且与返回值类型不一致2. int fac(int n) float f; int i ;if(n0) cout “ n0,data error! ” ; f=0; else for( i=1; i=n; i+) f = f * i;return( f ); else for( i=1; i=n; i+) f = f * i;中 f 无初值且与返回值类型不一致3. int sum(int n) if(n=0) return 0 ;else return( n+ sum(n) ; if(n=0) return 0 中表达式永为假且else return( n+ sum(n) 形成死递归4 main() int i,j; i=0; char a10,b10; for (j=0;jaj; b=a; for (j=0;ji;+j) coutbj; b=a 不能直接赋值四根据要求,完成下列各题:1下面程序的功能是用起泡排序法对读入的数组元素进行降序排序,请将程序补充完整:# include # define SIZE 10 void swap(int *p1 ,int *p2) int temp;temp=*p1 ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - _*p1=*p2_ ;*p2=_temp_ ; void sort(int *array ,int n) int i,j;for (i=1 ;i=_n-1_ ;i+) for (j=0 ;j=_n-i_ ;j+) if(arrayj_array j+1) swap(_&arrayj_,_&array j+1_); main() int i,aSIZE ;for (i=0 ;i=SIZE 1;i+) scanf ( “ %d ”,a+i ) sort(a ,SIZE) ;for (i=0 ;idata _data) c=a ; a=a-next; else c=_b_;b=b-next; p=c; while (a!=NULL & b!= NULL) if (a-data b-data) p-next=a; _a=a-next_; else p-next=b; b=b-next; p=p-next; if (a=_ NULL _) p-next=b; else p-next=a; return (c); 五.编程:编一程序将一个两行三列的二维数组的行和列元素互换, 存到另一个三行两列的二维数组中。main( ) int a23 = 1, 2, 3 , 4, 5, 6 ; int b32, i, j; for ( i=0; i=1;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - for ( j=0; j=2; j+) cout aij ; bji = aij; for ( i=0; i=2; i+ ) for ( j=0; j=1; j+ ) coutbij ; cout&p1-data; while(p1-data!=0) n=n+1; if (n= =1) head-next=p1; else p2-next=p1; p2=p1; p1=new struct link; cin&p1-data; p2-next=NULL; return(head); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -