1、 - - 1 - C 语言 程序设计 习 题 李玲 张海蓉 黄玉兰 孙大洋 赵晓京 温泉 厉茜 吉林大学通信工程学院 - - 2 - 第 6章 练习 6-1答案 一、选择题 1已知函数 abc的定义为: void abc() 则函数定义中 void的含义是 ( A )。 A执行函数 abc后,函数没有返回值 B执行函数 abc后,函数不再返回 C执行函数 abc后,可以返回任意类型 D以上三个答案全是错误的 2已知: int p();, p是 ( C )。 A int型变量 B函数 p的调用 C一个函数声明,该函数的返回值是 int型的值 D强制类型转换表达式中的变量 3以下正确的函数形式是
2、( D )。 A double fun(int x, int y) B 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; z=x+y; return z; double z; z=x+y; return z; 4以下说法正确的是 ( C )。 A定义函数时,形参的类型说明可以放在函数体内 B return后边的值不能为表达式 C如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准 D如果形参与实参的类型不一致,以实参类型为准
3、 5 C 语言允许函数值类型缺省定义,此时该函数值隐含的类型是 ( B )。 A float 型 B int型 C long型 D double型 6下面函数调用语句含有实参的个数为 ( B )。 func(exp1, exp2), (exp3, exp4, exp5); A 1 B 2 C 4 D 5 7以下程序的功能是计算函数 F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include #include float f(float, float); main() float x, y, z, sum; scanf(“%f%f%f“, sum=f
4、( B )+f( C ); (注:或 者选择 sum=f( C )+f( B ) printf(“sum=%fn“, sum); float f(float a, float b) float value; - - 3 - 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 A x-y, x+y B x+y, x-y C z+y, z-y D z-y, z+y 二、填空题 8以下程序的功能是根据输入的 “y“(“Y“)与 “n“(“N“),在屏幕上分别显示出 “This is YES.“与 “This is
5、 NO.“。请填空,是 ( break; )、是 ( getchar() 或 getch() 或 getche() )。 #include void YesNo(char ch) switch (ch) case y: caseY: printf(“nThis is YES.n“); ; case n: case N: printf(“nThis is NO.n“); main() char ch; printf(“nEnter a char y, Y or n, N:“); ch= ; printf(“ch:%c“, ch); YesNo(ch); 9下面函数 pi的功能是:根据以下公式,返
6、回满足精度 (0.0005)要求的 的值,请填空,是 ( t=n=1, s=0 )、是 ( s*2 )。 /2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+ . #include #include #include double pi(double eps) double s, t; int n; for ( ; teps; n+) s+=t; t=n*t/(2*n+1); return( ); main() double x; - - 4 - printf(“nPlease enter a precision:“);
7、 scanf(“%1f“, printf(“neps=%1f, =%1f“, x, pi(x); 三、读程序,写结果 10下列程序的运行结果是 ( 5 )。 #include fun(int p) int a=10; p=a; +p; main() int a=5; fun(a); printf(“%dn“, a); 11下列程序的运行结果是 ( 8 )。 #include int abc(int u, int v); main() int a=24, b=16, c; c=abc(a, b); printf(“%dn“, c); int abc(int u, int v) int w; wh
8、ile (v) w=u%v; u=v; v=w; return u; 12下列程序的运行结果是: ( before swap a=5,b=10 in swap x=10,y=5 after swap a=5,b=10 )。 #include main() int a, b; - - 5 - a=5; b=10; printf(“before swap a=%d,b=%dn“, a, b); swap(a, b); printf(“after swap a=%d,b=%dn“,a, b); swap(int x, int y) int temp; temp=x; x=y; y=temp; pri
9、ntf(“in swap x=%d,y=%dn“, x, y); 13以下程 序的运行结果是: ( i=5 i=2 i=2 i=0 i=2 )。 int i=0; main() int i=5; reset(i/2); printf(“i=%dn“, i); reset(i=i/2); printf(“i=%dn“, i); reset(i/2); printf(“i=%dn“, i); workover(i); printf(“i=%dn“, i); workover(int i) i=(i%i)*(i*i)/(2*i)+4); printf(“i=%dn“, i); return(i);
10、reset(int i) i=i main() int k=4, m=1, p; p=fun(k, m); printf(“%d“, p); /* */ p=fun(k, m); printf(“%d“, p); /* */ fun(int a, int b) static int m=0, i=2; i+=m+1; m=i+a+b; return(m); 8下面程序的运行结果是 ( 8 4 )。 #include int d=1; fun(int p) int d=5; d+=p+; printf(“%d“, d); main() int a=3; fun(a); d+=a+; printf
11、(“%d“, d); - - 8 - 第 7章 练习 7-1答案 选择题 1已知: int *p, a;,则语句“ p=”中的运算符“ , 则正确的赋值语句是 ( C )。 A a=(a1+a2)/2; B a*=*a+1; C a=(x=1, x+, x+2); D a=“good“; 3 已知 : int a, *p=, 则下列函数调用中错误的是 ( D )。 A scanf(“%d“, B scanf(“%d“, p); C printf(“%d“, a); D scanf(“%d“, *p); 4 已知 : char *p, *q;, 选择正确的语句 ( C )。 A p*=3; B
12、p/=q; C p+=3; D p+=q; 5已知: int x;,则下面的说明指针变量 pb的语句 ( C )是正确的。 A int pb= B int *pb=x; C int *pb= D *pb=*x; 练习 7-2答案 一、选择题 1设有说明 int (*ptr)M;,其中的标识符 ptr是 ( C )。 A M个指向整型变量的指针 B指向 M个整型变量的函数指针 C一个指向具有 M列的二维数组的一行的指针 D具有 M个指针元素的一维数组的指针 2已知: double *p6;,它的含义是 ( C )。 A p是指向 double型变量的指针 B p是 double型数组 C p是指
13、针数组 D p是数组指针 3已知: char s10, *p=s,则在下列语句 中,错误的语句是 ( B )。 A p=s+5; B s=p+s; C s2=p4; D *p=s0; 4已知: char s100; int i;,则在下列引用数组元素的语句中,错误的表示形式是 ( D )。 A si+10 B *(s+i) C *(i+s) D *(s+)+i) 5已知: char b5, *p=b;,则正确的赋值语句是 ( C )。 A b=“abcd“; B *b=“abcd“; C p=“abcd“; D *p=“abcd“; 6下列对字符串的定义中,错误的是 ( A )。 A char
14、 str7=“FORTRAN“; B char str=“FORTRAN“; C char *str=“FORTRAN“; D char str=F, O, R, T, R,A,N,0; 7已知: char s20=“programming“, *ps=s;,则不能引用字母 o的表达式是 ( A )。 A ps+2 B s2 C ps2 D ps+=2,*ps 8已知: char *s;,正确的语句是 ( B )。 A s=“computer“; B *s=“computer“; C *s=“computer“; D *s=A; 9已知: char c8=“beijing“, *s=c; in
15、t i;,则下面的输出语句中,错误的是 ( B )。 A printf(“%sn“, s); B printf(“%sn“, *s); C for (i=0; i main() static int a23=1, 2, 3, 4, 5, 6; int m, *ptr; ptr= m=(*ptr)*(*(ptr+2)*(*(ptr+4); printf(“%dn“, m); - - 10 - 23下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串则是 ( 0 或 0 )、是 ( + )。 main() char str81, *sptr; int i; for (i=0
16、; i char *pp23=“abc“, “defgh“, “ijkl“, “mnopqr“, “stuvw“, “xyz“; main() printf(“%cn“, *(pp+1); /*输出 */ printf(“%cn“, *pp0); /*输出 */ printf(“%cn“, (*(*(pp+1)+1)4); /*输出 */ printf(“%cn“, *(pp12+2); /*输出 */ printf(“%sn“, *(pp+1); /*输出 */ 三、读程序,写结果 26下面程序的运行结果是: ( 1 3 5 7 9 11 13 15 17 19 21 23 )。 (注:表示空格。 ) #include main()