一、填空题
1、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前,a=10、b=20、c=30;交换后,a=20、b=30、c=10。请填空。 _______;a=b;b=c;_______;
2、函数swap(arr,n)可对arr数组从第1个元素到第n个元素分别进行两两元素交换。在运行调用函数中的如下语句后,a[o]和a[1]的值分别为_______,原因是_______。
a[0]=1;a[1]=2;swap(a,2); 3、执行下面程序段后,k的值是_______。 k=1;n=263;
do{k*=n%10;n/=10;} while(n);
4、C语言中的标识符可分为关键字、_______和_______3类。
5、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为_______
6、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是_______,a[2][1]得到的初值是_______。
7、测试char型变量a第6位是否为1的表达式是_______(设最右位是第1位)。 8、C语言源程序文件的后缀是 ;经过编译后,生成文件的后缀是 ;经过连接后,生成文件的后缀是
9、结构化程序由________、________ 、________ 3种基本结构组成。
10、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。请填空。(假设程序段中的所有变量均已正确说明。)
for(k=0;k<10;k++,m++)scanf(\"%d\",_______);
二、选择题
11、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(A.7 B.8 C.6 D.2
12、下面正确的字符常量是( ) A.\"c\" B. \"\\\\\" C. 'w' D. \" 13、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 14、以下叙述不正确的是( )
A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数
)D.在C程序中,注释说明只能位于一条语句的后面 15、若要对a进行++运算,则a应具有下面说明( )
A.int a[3][2];B.char*a[]={\"12\",\"ab\;C.char(*A.[3];D.int b[10],*a=b;
16、已有如下定义和输入语句,若要求al,a2,c1,c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的数据输入方式是。(注:口表示空格) int a1,a2; char c1,c2;
scanf(\"%d%c%d%c”, &a1,&c1,&a2,&c2); A.10A□20B<回车> B.10□A□20□B<回车> C.10A□20B<回车> D.10A20□B<回车>
17、在下面的程序段中( )。
Int t,x;
for(t=1;t<=100;t++) {scanf(\"%d”,&x); if(x<0)continue; printf(\"%3d\",t); }
A.当x<0时整个循环结束 B.x≥0时什么也不输出
C.printf函数永远也不执行 D.最多允许输出100个非负整数
18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是( ) A.地址传递 B.单向值传递
C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式
19、下面描述正确的是( )。
A.两个字符串所包含的字符个数相同时,才能比较字符串 B.字符个数多的字符串比字符个数少的字符串大 C.字符串\"STOP\"与\"STOP\"相等 D.字符串\"That\"小于字符串\"The\"
20、以下对二维数组a的正确说明是( )。
A.inta[3][];B.float a(3,4);C.double a[ ][4];D.float a(3)(4); 21、以下程序的输出是( )。
#include {int x=2,y=-1,z=2; if(x 22、有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。请选择填空。 #include {char a[20]=\"cehikngtw\", s[]=\"fbla\"; inti,k,j; for(k=0;s[k]!=\\0';k++) { j=0; while(s[k]>=a[j]& &a[]!=\\0)j++; for(i=strlen(a);i>=j;i--)[2]; a[j]=s[k]; puts(a); return 0; } A)a[i]=a[i+1] B)a[i+1]=a[i] C)a[i]=a[i-1] D)a[i-1]=a[i]23、下面程序的运行结果是( )。 #include {char str[]=\"SSSWLIA\",c;int k; for(k=2;(c=str[k])!=\\o';k++) {switch(C. {case'I':++k;break; case'L':continue; default:putchar(C.;continue; putchar('*’); } return 0; } A.SSW* B.SW* C.SW*A D.SW 24、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include {floatx,y,z,sum; scanf(\"%f%1%f\",8.x,&y,8.z); sum=f(【】)+f(z+y,z-y); printf(\"sum=%fNn\",sum); return(0); } float f(float a,float B. {float value; value=a/b; return(value); } A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y 25、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空( )。 #include do{i++;k=316-13*i;}while(【 】); j=k/11; printf(\"316=13*%d+11*%d\",i,j); return0; } A.k/11 B.k%11 C.k/11==0 D.k/11=0 三、读程序填空 26、若要求下列程序的输出结果为8.00,则[]中应填入的是_______。 #include 27、以下程序的输出结果是_______。 #include {int x=10;float pi=3.1416; printf(\"(1)%d\\n\ printf(\"(2)%6d\\n\ printf(\"(3)%f\\n\ printf(\"(4)%14fNn\ printf(\"(5)%e\\n\ printf(\"(6)%14e\\n\ printf(\"(7)%g\\n\ printf(\"(8)%12g\\n\ return 0; } 28、若运行以下程序时输入:-2<回车>,则程序的输出结果是_______。 #include scanf(\"%d\",&a); b=(a>=0)?a:-a; printf(\"b=%d\",b); return 0; } 29、将以下两条if语句合并成一条if语句为_______。 语句1:if(a>b)scanf(\"%d\",8&a); else scanf(\"%d\",&b); 语句2:if(a<=b)m++; else n++; 30、函数yanghui能够按以下形式构成一个杨辉三角形。请填空。 1 1 1 1 2 1 1 3 2 1 1 4 3 2 1 # include void yanghui(int a[] [N]) { int i,j; for(i=0;i } 31、下面程序的功能是求矩阵a的两条对角线上的元素之和。请填空。 #include {int a[3][3]={1,3,6,7,9,11,14,15,17},s1=0,s2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j)s1=s1+a[i][j]; for(i=0;i<3;i++) for(_______;_______;j--) if((i+j)==2)s2=s2+a[i][j]; printf(\"s1=%d,s2=%d\\n\",s1,s2); return 0; } 32、下面程序的运行结果是_______。 #include for(i=0;i<=3;i++) { for(j=0;j<=5;j++) if(i==0||j==0||i==3||j==5)printf(\"*\"); else printf(\"\"); printf(\\n\"); return 0; } 33、以下程序是用递归方法求数组中的最大值及其下标值。请填空( )。 #include void findmax(int *a, int n, int i, int * pk) { if(i int main() { int a[M],i,n=0; printf(\"\\ nEnter %d data:\\n\ for(i=0;i 四、编程题 34、定义一个带参数的宏,用来判断一个字符是否为字母。编写主函数,从键盘输入一个字符,调用上述宏输出判断结果。 35、用switch语句编程实现以下函数关系: −1 (x<0) y={0 (x=0) 1 (x>0) 参考答案 一、填空题 1、【1】t=a【2】c=t 2、【1】a[0]=2a[1]=1 【2】因实参是地址,已对指定地址中的内容进行了交换。 3、36 4、【1】用户标识符【2】预定义标识符 5、1 6、【1】0【2】6 7、a &040或a&0×20或a&32 8、【1】.c【2】.obj【3】.exe 9、【1】顺序结构【2】选择结构【3】循环结构 10、m 二、选择题 11、B 12、C 13、C 14、D 15、D 16、A 17、D 18、B 19、D 20、C 21、B 22、B 23、B 24、B 25、B 三、读程序填空 26、3.6 27、(1)10 (2)口口口囗10 (3)56.100000 (4)口口口口口口3.141600 (5)5.68100e+02 (6)口口口3.14160e+00 (7)3.1416 (8)口口口口囗囗3.1416 (注:答案中的囗代表空格) 28、b=2 29、if(a>b){scanf(\"%d\",&a);n++;} else{scanf(\"%d\",&b);m++;} 30、【1】i=1【2】j<=i-1【3】a[i-1][j-1] 31、【1】j=2【21j>=0 32、* * * * * * * * * * * * * * * * 33、【1】*pk=i【2】a,n,i+1,&(*pk) 四、编程题 34、/*判断是否是字母*/ #include ((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z '))?1:0 int main() {char c; printf(\"Enter a letter:\"); scanf(\"%c”,8c); if(ISAL.PHA(c))printf(\"%c is an alpha.\\n\",c); else printf(\"%cis not an alpha.\\n\",c); return 0; } 35、#include {case 1:y=-1;break; case 0:switch(x==0) {case 1:y=0; break; default:y=1; } } printf(\\n y=%d',y); return 0; } 因篇幅问题不能全部显示,请点此查看更多更全内容