《C语言程序设计习题集(2)-精品文档资料整理.doc》由会员分享,可在线阅读,更多相关《C语言程序设计习题集(2)-精品文档资料整理.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数组一 单项选择题(每题2分,共40分)1 以下对一维整型数组a的正确定义(说明)的是。A int a(10); B)int n=10,an; C int n; D #define SIZE 10scanf(%d,&n); int aSIZE;int an;2 若有定义(说明)int a10;,则对数组a的元素正确引用的是。A a10 B a3.5 C a(5) D a10-103 执行下面程序段后,变量k 的值是。int k=3,s2;s0=k; k=s1*10;A 不定值 B 33 C 30 D 104 以下程序的输出结果是。main() int i,k,a10,p3;k=5;for(i=
2、0;i10;i+) ai=i;for(i=0;i3;i+) pi=ai*(i+1);for(i=0;i3;i+) k+=pi*2;printf(%dn,k);A 20 B 21 C 22 D 235 以下对一维整型数组a初始化的语句中正确的是。A int a10=(0,0,0,0,0); B int a10=();C int x=2,a10=10*x; D int a10=0;6 若有以下说明,则数值为4的表达式是。int a12=1,2,3,4,5,6,7,8,9,10,11,12;char c=a,d,g;A ag-c B a4 C ad-c D ad-c7 下列程序运行后的输出结果是。#
3、define MAX 10void main() int i,sum,a=1,2,3,4,5,6,7,8,9,10;sum=1;for(i=0;i=1);for(j=i-1;j0;j-) printf(%d,aj);A 1000 B 1001 C 1010 D 11009 以下对二维数组a的正确定义(说明)的是。A int a3; B float a(3,4); Cdouble a14; D float a(3)(4);10 若有定义(说明)int a34;,则对数组a的元素的引用非法的是。A a22*1 B a13 C a4-20 D a0411 以下不能对二维数组a进行正确初始化的语句是。
4、A int a23=0; B int a3=1,2,0;C int a23=1,2,3,4,5,6; D int a3=1,2,3,4,5,6;12 下列数组定义语句中,正确的是。A char a=a,b,c,d,e,f; B char a23=a,b;C char a3=a,b,c,d,e,f; D char a=a,b,c,d,e,f;13 下列程序运行后的输出结果是。main() int a44,i,j,k;for(i=0;i4;i+)for(j=0;j4;j+) aij=i-j;for(i=1;i4;i+)for(j=i+1;j4;j+) k=aij; aij=aji; aji=k;
5、for(i=0;i4;i+) printf(n);for(j=0;j4;j+) printf(%4d,aij);A 0 -1 -2 -3 B 0 1 2 31 0 -1 -2 -1 0 1 22 1 0 -1 -2 -1 0 13 2 1 0 -3 -2 -1 0C 0 -1 -2 -3 D 0 1 2 31 0 1 2 -1 0 -1 -22 -1 0 1 -2 1 0 -23 -2 -1 0 -3 2 1 014 以下程序的输出结果是。main() int i,a44=1,3,5,2,4,6,3,5,7;printf(%d%d%d%dn,a03,a12,a21,a30);A 0650 B
6、1470 C 5430 D 输出值不定15 有以下程序:main() int x32=0,i;for(i=0;i3;i+) scanf(%d,xi);printf(%3d%3d%3dn,x00,x01,x10);若运行时输入:2 4 6,则输出结果是。A 2 0 0 B 2 0 4 C 2 4 0 D 2 4 616 下列描述不正确的是。A 字符型数组中可以存放字符串B 可以对字符型数组进行整体输入和输出C 可以对整型数组进行整体输入和输出D 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值17 对于以下定义,叙述正确的是。char x=abcdef;char x=a,b c,d,
7、e,f;A 数组x和数组y等价 B 数组x和数组y的长度相等C 数组x的长度大于数组y的长度 D 数组x的长度小于数组y的长度18 以下选项中,不能正确赋值的是。A char s110;s1=Ctest; B char s2=C,t,e,s,t;C char s320=Ctest; D char s430;strcpy(s4,Ctest);19 若有定义和语句:char s=10;s=abcd;printf(%sn,s);,则输出结果是。(以下表示空格)A abcd B a C abcd D 编译不通过20 当执行下面程序时,如果输入ABC,则输出结果是。#include#includemai
8、n() char ss10=12345;gets(ss); strcat(ss, 6789); printf(%sn,ss);A ABC6789 B ABC67 C 12345ABC6 D ABC45678 二 填空题(每空3分,共24分)1 若int类型变量占两个字节,定义int x10=0,2,4;,则数组x在内存中所占的字节数是。2 若有定义char a=141141abct;,则数组a在内存中所占的字节数是。3 下列程序的输出结果是。main() int i,a10;for(i=9;i=0;i-) ai=10-i; printf(%d%d%dn,a2,a5,a8);4 下列程序运行的结
9、果是。main() char ch7=65ab21; int i,s=0;for(i=0;chi=0 & chi=9;i+=2) s=10*s+chi-0;printf(%dn,s);5 有定义语句:char s100,d100;int j=0,i=0;且s中已赋字符串,请填空以实现字符串复制。(注意:不得使用逗号表达式)while(si) dj=; j+ ; dj=0;6 下面程序运行的结果是。main() char s=abcdef;s3=0;printf(%sn,s);7 以下程序的输出结果是。main() char ch35=AAAA,BBB,CC;printf(%sn,ch1);8
10、以下程序的输出结果是。main() char ch=abc,x34; int i;for(i=0;i3;i+) strcpy(xi,ch);for(i=0;i=0.0 & n1000) sum+= 【1】 ; xn= 【2】 ;n+; scanf(%f,&a); ave= 【3】 ;print(Output:n);printf(ave=%fn,ave);for(i=0;in;i+) if( 【4】 ) printf(%fn,xi);2 以下程序的功能是求出矩阵x的上三角元素之积。其中矩阵x的行列数和元素的值均由键盘输入。请填空。#define M 10main() int xMM; int n
11、,i,j; long s=1;printf(Enter a integer(=10):n);scanf(%d,&n);printf(Enter %d data on each line for the array xn,n);for( 【1】 )for(j=0;jn;j+) scanf(%d,&xij);for(i=0;in;i+)for( 【2】 ) 【3】 ;printf(%ld,s);3 以下程序,数组a中存放一个递增数列。输入一个整数,并将它插入到数组a中,使之仍为一个递增数列。请填空。main() int a 【1】 =1,10,20,30,40,50,60,70,80,90,x,i
12、,p; scanf(%d,&x);for(i=0,p=10;i10;i+)if(x=p;i-) ai+1=ai; 【3】 ;for(i=0;i=10;i+) printf(%5dn,ai);printf(n);4 以下程序的功能是:将t数组的内容连接到s数组内容的后面,使s数组保存连接后的新字符串。main() static char s30=abcdefg,t=abcd; int i=0,j=0;while(si!=0) 【1】 ;while(tj!=0) si+j=tj; j+; 【2】 ;printf(%sn,s);函数一 单项选择题(每题2分,共40分)1 以下正确的函数定义是。A d
13、ouble fun(int x,int y) B double fun(int x,y) z=x+y; return z; int z; return z; C fun (x,y) D double fun(int x,int y) int x,y; double z ; double z;z=x+y; return z; return z; 2 以下正确的说法是。A 实参和与其对应的形参各占用独立的存储单元B 实参和与其对应的形参共占用一个存储单元C 有当实参和与其对应的形参同名时才共占用相同的存储单元D 形参是虚拟的,不占用存储单元3 若调用一个函数,且此函数中没有return语句,则正确
14、的说法是。A 该函数没有返回值 B 该函数返回若干个系统默认值C 能返回一个用户所希望的函数值 D 返回一个不确定的值4 以下正确的描述是。A 函数的定义可以嵌套,但函数的调用不可以嵌套B 函数的定义不可以嵌套,但函数的调用可以嵌套C 函数的定义和函数的调用均不可以嵌套D 函数的定义和函数的调用均可以嵌套5 若用数组名作为函数调用的实参,传递给形参的是。A 数组的首地址 B 数组中第一个元素的值C 数组中的全部元素的值 D 数组元素的个数6 以下不正确的说法是。A 在不同函数中可以使用相同名字的变量B 形式参数是局部变量C 在函数内定义的变量只在本函数范围内有定义D 在函数内的复合语句中定义的
15、变量在本函数范围内有定义7 已知一个函数的定义如下:double fun(int x, double y) 则该函数正确的函数原型声明为。A double fun(int x,double y) B fun(int x,double y)C double fun(int,double); D fun(x,y);8 关于函数声明,以下不正确的说法是。A 如果函数定义出现在函数调用之前,可以不必加函数原型声明B 如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明C 函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查D 标准库不需要函数原型声明9 调用函
16、数的实参与被调用函数的形参应有如下关系。A 只要求实参与形参个数相等 B 只要求实参与形参顺序相同C 只要求实参与形参数据类型相同 D 上述三点均需具备10 凡在函数中未指定存储类别的变量,其隐含的存储类别是。A 自动 B 静态 C 外部 D 寄存器11 在源程序的一个文件中定义的全局变量的作用域是。A 在本文件的全部范围 B 该程序的全部范围C 一个函数的范围 D 从定义该变量的位置开始至该文件的结束12 下列程序运行后的输出的数据是。int sum(int n) int p=1,s=0,i;for(i=1;i=n;i+) s+=(p*=i);return s;main() printf(s
17、um(5)=%dn,sum(5); A sum(5)=151 B sum(5)=152 C sum(5)=153 D sum(5)=15513 下列程序运行后的输出结果是。int c=1;main() static int a=5;int b=6;printf(a=%d,b=%d,c=%dn,a,b,c);func();printf(a=%d,b=%d,c=%dn,a,b,c);func();func() static int a=4;int b=10;a+=2;c+=10;b+=c;printf(a=%d,b=%d,c=%dn,a,b,c);A a=5,b=6,c=1 B a=5,b=6,c
18、=11 C a=5,b=6,c=1 D a=5,b=6,c=1a=6,b=21,c=11 a=5,b=21,c=11 a=5,b=21,c=11 a=6,b=21,c=11a=5,b=6,c=11 a=5,b=6,c=11 a=5,b=6,c=11 a=5,b=6,c=11a=8,b=31,c=21 a=8,b=31,c=21 a=8,b=31,c=21 a=5,b=31,c=2114 运行下面的程序后,其输出结果是。main() int a=6,b=2,c;c=f(a)/f(b);printf(%dn,c);int f(int x) int y;y=x+*x+;return y;A 9 B
19、6 C 36 D 1815 下列程序输出结果是。#includemy() static int x=3;x+;return(x);main() int i,x;for(i=0;i=2;i+) x=my();printf(%dn,x);A 3 B 4 C 5 D 616 下列程序的输出结果是。#includeint abc(int u,int v) int w;while(v) w=u%v; u=v; v=w; return u;main() int a=24,b=16,c;c=abc(a,b);printf(%dn,c);A 8 B 6 C 5 D 417 下列程序运行后的输出结果是。main
20、() static char s=abcdefgca;p(s); printf(s=%sn,s);p(char s) int i,j;for(i=j=0;si!= 0;i+) if(si!=a+2) sj+=si;sj= 0;A s=abcdefgca B s=abdefga C s=bcdefgc D 程序有错18 下列程序运行后的输出结果是。void main() int m=4,n=2,k;k=fun(m,n); printf(%dn,k);k=fun(m,n); printf(%dn,k);int fun(int x,int y) static int n=3,i=2;i+=n+1;
21、n=i+x+y;return(n);A 12 B 12 C 12 D 1212 23 25 1619 下列程序运行后的输出结果是。int x=1;main() int i=5;fun(i);printf(%d,%dn,i,x);fun(m)int m; m+=x;x+=m; char x=A; printf(%dn,x); printf(%d,%dn,m,x);A 65 B A C A D 656,1 6,1 6,7 6,76,1 6,1 6,7 5,720 下列程序运行后,若从键盘输入ABC!四个字符后,程序输出是。#includemain() void receiv();receiv();
22、void receiv() char c;c=getchar();putchar(c);if(c!=!) receiv();putchar(c);A ABC! B ABC!ABC! C ABC!CBA D ABCABC二 填空题(每空3分,共30分)1 函数调用语句:fun(a,b),(c,d,e);,实参个数为。2 凡在函数中未指定存储类别的局部变量,其默认的存储类别为。3 在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为。4 C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是。5 运行下面程序,其输出结果是。#includ
23、e int x,y;one() int a,b;a=25,b=10;x=a-b;y=a+b;main() int a,b;a=9,b=5;x=a+b;y=a-b;one();printf(%d,%dn,x,y):6 运行下面程序,其输出结果是。#include main() void printd()int n=123;printd(n);void printd(int n) int i;if(n0) n=-n; putchar(-); putchar(n%10+0);if(i=n/10)!=0) printd(i);7 运行下面程序,从键盘输入四个字符xyz#,其输出是。#include m
24、ain() void recursion();recursion();void recursion() char c;c=getchar();putchar(c);if(c!=#) recursion(); putchar(c);8 以下程序的输出结果是。#include void fun(int x) if(x/20) fun(x/2); printf(%d ,x); main() fun(3); printf(n); 9 以下程序运行结果是。int a=1;int f(int c) static int a=2;c=c+1;return (a+)+c;main() int i,k=0;fo
25、r(i=0;i2;i+) int a=3; k+=f(a); k+=a;printf(%dn,k);10以下程序的运行结果是。int k=0;void fun(int m) m+=k; k+=m; printf(m=%dn k=%d ,m,k+); main() int i=4;fun(i+); printf(i=%d k=%dn,i,k);三 程序填空题(每空3分,共30分)1 一个整数称为完全平方数,是指它的值是另一个整数的平方。例如81是个完全平方数,因为它是9的平方。下列程序是在三位的正整数中寻找符合下列条件的整数:它既是完全平方数,且三位数字中又有两位数字相同:例如144(12*12
26、)、676(26*26)等,程序找出并输出所有满足上述条件的三全数。程序如下:main() int n,k,a,b,c;for(k=1;k+) 【1】 if(n999) 【3】 ;a=n/100;b= 【4】 ;c=n%10;if(flag(a,b,c) printf(n=%d=%d*%dn,n,k,k);flag 【5】 return(!(x-y)*(x-z)*(y-z); 2 以下程序的功能是应用近似公式计算ex的值。其中,函数f1计算每项分子的值,函数f2计算每项分母的值。共取nmax项之和作为e的近似值。float f2(int n) if(n= =1) return 1;else r
27、eturn 【6】 ;float f1(float x, int n) int i; float j= 【7】 ;for(i=1; 【8】 ;i+) j=j*x;return j;#define nmax 20main() float x,exp=1.0; int n;printf(Input x value:);scanf(%f,&x);for(n=1;nnmax;n+) exp= 【9】 ;printf(x=%f,exp(x)=%fn,x, 【10】 _);数组一 单项选择题(每题2分,共40分)DBBCDDDABD1-5 6-10CCCABCCADA11-15 16-20 二 填空题(每
28、空3分,共24分)1205si+2106abc38527BBB468abcbcc三 程序填空题(每空3分,共36分)1 【1】a 【2】a 【3】sum/n 【4】xiave2 【1】i=0;in;i+ 【2】j=i;jn;j+ 【3】s=s*xij3 【1】11或者大于11的任何整数 【2】 break 【3】ap=x或者ai+1=x4 【1】i+ 【2】si+j=0函数一 单项选择题(每题2分,共40分)DCCDADDABA1-5 6-10DCAADABCDC11-15 16-20 二 填空题(每空3分,共30分)1263212自动7xyz#zyx3静态外部变量81 34值传递914515
29、,3510m=4k=4 i=5 k=5三 程序填空题(每空3分,共30分)【1】 n=k*k; 【6】 n*f2(n-1)【2】 continue 【7】 1【3】 break 【8】 i=n【4】 n/10%10 【9】 exp+f1(x,n)/f2(n)【5】 int x,int y,iny z 【10】exp指针一 单项选择题(每题2分,共40分)DACBBBBBAC1-5 6-10BACCADADAA11-15 16-20二 填空题(每空3分,共30分)12521246861222 5612347a04557a3三 程序填空题(每空3分,共30分)【1】 str0 【6】 stri【2】 *sp=stri 【7】 j=i【3】 *p 【8】 k+1【4】 *p-0 【9】 a+1【5】 j- 【10】n%10+014