第三章(C语言程序设计同步练习指导)

来源:网络收集 时间:2025-04-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

printf(\

for(i = 0; i < argc; i++) printf(\ printf(\}

若上面的程序编译、连接后生成可执行程序文件abc.exe ,则输入以下命令行: abc file1 file2

程序执行后的输出结果是( )。 答:3

abc.exefile1file2

因为输入的参数个数为3,所以argc的值为3。Argv是指针数组,argv[0]指向字符串参数abc.exe,argv[1]指向字符串参数file1,argv[2] 指向字符串参数file2。 38.下面的findmax函数返回数组s中的最大元素的下标,数组元素的个数由t传入,请填空. findmax(int s[], int t) {

int k, p;

for(p = 0, k = p; p < t; p++)

if(s[p] > s[k] )_____ (1) ; /*填空*/ return k; }

答:k=p

39.下面程序的输出结果是( )。 #include funa(int a, int b) {

return a + b; }

funb(int a, int b) {

return a - b; }

sub(int (*t)(), int x, int y) {return ((*t)(x, y));} main() {

int x, (*p)(); p = funa;

x = sub(p, 9, 3); x += sub(funb, 8, 3); printf(\}

答:17

p是指向函数的指针变量;(*t)(x, y)是调用t所指向的函数。 40.下面的函数的功能是( )。 int fun1(char *x)

85

{ char *y =x; while (*y++); return(y-x-1); }

答:计算字符串的长度。 循环while (*y++);的循环体为一空语句,循环结束时指针y指向字符串结束符’\\0’的下一个字节,因此y-x-1是指针x所指向的字符串的长度。 41.下面程序的输出是( )。 #include #include main()

{ char *p1=\ strcpy(str+2,strcat(p1,p2)); printf(\}

A)xyzabcABC B)zabcABC C)yzabcABC D)xyabcABC 答:D)

42.下面程序的输出是( )。 void prtv(int *x) {

printf(\}

main() {

int a=25; prtv(&a); }

答:26

43.下面程序的输出是( )。 fun3(int x) {

staic int a=3; a+=x;

return(a); }

main() {

int k=2,m=1,n; n=fun3(k); n=fun3(m);

printf(\} 答:6

44.下面程序的输出是( )。

86

void fun(int *n) { while((*n)--);

printf(”%d”,++(*n)); }

main()

{ int a=100; fun(&a); }

答:0 45.己知函数isalpha(ch)的功能是判断变量ch是否是字母,若是,函数值为1,否则为0,下面程序的输出是( )。 #include #include void fun4(char str[]) {

int i,j;

for (i=0,j=0;str[i];i++)

if (isalpha(str[i]))str[j++]=str[i]; str[j]='\\0'; }

main() {

char ss[80]=\ fun4(ss);

printf(\}

答:Itis!

函数fun4的功能是将字符串中的非字母剔除。

46.下面invert 函数的功能是将一个字符串 str 的内容颠倒过来。请填空。 #include

void invert(char str[]) {

int i,j,_____(1) ___; /*填空*/ for (i=0,j=strlen(str)______(2) ___;i

47.下列程序的输出结果是( )。 main() {

char *p1,*p2,str[50]=\ p1=\ p2=\

87

strcpy(str+2,strcat(p1+2,p2+1)); printf(\}

答:xycdBCD

48.执行下面的程序后,a的值是( )。 #define SQR(X) X*X main() {

int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(\} 答:1

a/=SQR(k+m)/SQR(k+m);的宏替换和计算过程是: a/=k+m*k+m/k+m*k+m a/=2+1*2+1/2+1*2+1 a/=7 a=1

49.下列程序执行后输出的结果是( )。 int d=1; fun(int p) {

int d=5; d+=p++;

printf(\}

main() {

int a=3; fun(a); d+=a++;

printf(\} 答:8

4

在函数fun中局部变量d 起作用;在函数main中全局变量d起作用。 50.下面程序通过函数average 计算数组中各元素的平均值,请填空。 float average (int *pa ,int n) {int i;

float avg=0.0; for (i=0;i

avg=avg+_____(1) _; /*填空*/ avg=_____(2) ; /*填空*/ return avg;

88

}

main()

{int i,a[5]={2,4,6,8,10}; float mean;

mean=average(a,5);

printf(\}

答:(1)pa[i]或*(pa+i) (2)avg/n

51.以下程序的输出结果是( )。 fun(int n,int *s) {int f1,f2;

if (n==1||n==2)*s=1; else {

fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } }

main() {

int x;

fun (6,&x);

printf(\} 答:8

函数fun是用递归计算斐波纳奇数列的第n项。 52.下面的程序输出是( )。 #include main() {

char *a=\ fun(a);puts(a); }

fun(char *s) {

int x=0,y; char c;

for (y=strlen(s)-1;x

答:hgfedcba

函数fun是将指针变量s指向的字符串倒置。 53.下面程序的输出是( )。

89

第三章 C语言程序设计同步练习指导

简介:本章从历届“国家计算机等级考试二级C语言笔试”试题中精选出典型的试题,按照C语言程序设计教学内容编排,供学生们边学习边练习,达到即学即会,举一反三,触类旁通的效果。

3.1 C语言基本知识

3.1.1 考试要求

一、C语言的结构

1.C语言源程序的构成,main函数和其他函数 2.头文件、数据说明、函数的开始和结束 3.源程序的书写格式 4.C 语言的风格 二、数据类型及其运算

1.C语言的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法 2.C语言运算符的种类、优先级和结合性 3.不同类型数据之间的转换与运算

4.各种类型的C语言表达式(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)及其计算规则

3.1.2 要点指导

1.C语言源程序的构成、main函数和其它函数

每个C语言程序都是由若干个函数组成的,这其中包含一个“主函数”main()和其它函数。其它函数包括用户编写的函数和C语言本身提供的标准库函数。程序的运行总是从main() 函数开始执行。函数是C程序的基本单位。

2.函数的组成

每个函数是由函数说明部分和函数体两部分组成的。函数的说明部分包括函数名、函数的形式参数、函数的值的类型等。函数体是由大括号 { }括起的部分,由变量定义和执行部分组成。函数的执行部分是由C语句组成的。这些C语句是按照结构组成起来的,这些结构有三类即顺序结构、选择结构和循环结构。结构之间可以并列和嵌套。

3.头文件

包含头文件的格式: #include \头文件名\ 或

#include <头文件名> 例如: #include \

它的作用是将文件stdio.h的内容插入在#include \所在的位置。

当调用C语言标准函数库中输入输出类函数时,要把头文件stdio.h包含在程序的开头;当调用C语言标准函数库中数学类函数(如sin、sqrt)时,要把头文件math.h包含在程序的开头;

4.数据的说明

C语言的数据分为常量和变量,常量可以直接使用,符号常量在使用前需要定义(宏定义),变量在使用前必须先定义名称和类型。

变量的定义格式为: 类型名 变量名; 或

40

类型名 变量名=常量; 5.源程序的书写格式

C语言的书写格式比较自由,一行可以写几条语句,一条语句可以写在几行里,每

条语句和数据定义的最后一个字符必须是分号“;”。

C语言的注释信息格式为:

/* 注释信息 */ C语言区分字母的大、小写。 6.C语言的风格

语言简练、使用方便:有32个关键字、9种控制语句; 运算符丰富:32种运算符;

数据类型丰富:有整型、实型、字符型、枚举类型等基本数据类型,有数组、结构体、共用体等构造类型和指针类型,能够实现复杂的数据结构;

可直接访问地址; 可以进行位操作; 可移植性好。

7.C语言的数据类型

C语言的数据类型分为:基本类型、构造类型、指针类型、空类型。 其中基本类型包含:整型(带符号整型int 、short int 、long int;

无符号整型unsigned 、unsigned short 、unsigned long)

实型(单精度型float、双精度型double) 字符型char 枚举类型

C语言中int数据用2个字节(16位二进制数)的补码表示,表示整数的范围是-32768到32767。unsigned数据用2个字节二进制数(16位二进制数)表示,表示整数的范围是 0到65535。

8.运算符和表达式

C语言程序是由若干个函数组成的,每个函数由函数说明部分和函数体两部分组成的。函数体是由大括号 { }括起的部分,由变量定义和执行部分组成。函数的执行部分是由C语句组成的。因此在学习C语言的过程中注意熟练掌握C语言中的各种语句,达到能够灵活运用C语言中的各种语句。而构成C语句的核心是表达式,C语言中有算术表达式、赋值表达式、逗号表达式、关系表达式、逻辑表达式和条件表达式。而表达式是由常量、变量、函数和运算符构成的。

C语言共有34个运算符,这些运算符的优先级和结合性十分重要,在学习中要......牢记。C语言的运算符按照优先级从高到低排列如下: 优先级 1 2 3 4 5 6 7 8 9 运算符 ( ) [ ] -> . * / % + - << >> < <= > >= == != & ^ 41

算术运算符 算术运算符 位操作运算符 关系运算符 关系运算符 位操作运算符 位操作运算符 结合方向 自左至右 自右至左 自左至右 自左至右 自左至右 自左至右 自左至右 自左至右 自左至右 ! ~ ++ -- - (类型) * & sizeof 10 11 12 13 14 15 | && || ? : = += -= *= /= %= <<= &= , 位操作运算符 逻辑运算符 逻辑运算符 条件运算符 赋值运算符 逗号运算符 自左至右 自左至右 自左至右 自右至左 自右至左 自左至右

从而,C语言表达式的计算顺序从高到低: 算术表达式 关系表达式 逻辑表达式 条件表达式 赋值表达式 逗号表达式

9.输入输出函数 输出函数 printf

字符输出函数putchar 输入函数scanf

字符输入函数getchar 常用格式编辑符:

输出整数格式编辑符 %d %u %x %o 输出实数格式编辑符 %f %e

输出字符和字符串格式编辑符 %c %s

3.1.3 同步练习

1.C语言中,int型数据在计算机内部是由( )表示的。 答:int型数据在计算机内部是由16位补码表示的。 2.下列可以作为C语言用户标识符的是( )。 A) _123 B) a1b2c3 C) int D) 123abc 答:A)和B)

C语言标识符必须是以英文字母(a到z)、或者下划线_开头的字符串。字符串中只能包含英文字母、下划线和数字(0到9)。但字符串不能是C语言中的32个保留字(例如int,short,long,unsigned,float,char,if,switch,for,while等)。

3.在C语言中,如果下面的变量都是int类型,则输出的结果是( )。 sum=pad=5,pAd=sum++,pAd++,++pAd; printf(\答:输出结果是5。

因为C语言是字母大小写敏感的,也就是说区分大小写字母。pad和pAd是两个不同的变量。

4.以下程序的输出结果是 ( )。 #include main() {

printf(\

42

} 答:0

因为stdio.h头文件中NULL的定义如下: #define NULL 0

5.下面程序的输出是( )。

main()

{ int x=10,y=3;

printf(\

} 答:3

因为两个同类型的数据作算术运算,其结果仍为该类型。即整数除以整数,商仍为整数。 10/3的商为3。

6.下面程序的输出是( )。 main()

{ int x=023;

printf(\}

答:18

因为023是一个八进制数,表达式--x的值为022,按照%d带符号的十进制数输出,结果为18。

注意:023是八进制数;23是十进制数;0x23是十六进制数。 7.在C语言中,不正确的int类型的常数是( )。 A)32768 B)0 C)037 D)0xAF 答:A)

8.执行下面程序中的输出语句后 a的值是( )。 main() { int a;

printf(\}

答:15

因为在计算逗号表达式a=3*5,a*4,a+5时,依次计算下面3个表达式: a=3*5(结果变量a的值为15,该赋值表达式的值也为15) a*4(该算术表达式的值为60)

a+5(该算术表达式的值为20,输出函数printf输出20) 逗号表达式的值为20,但变量a的值认为15。 9.以下程序的输出结果是( )。 #include main()

{int a=2,c=5;

printf(\ }

A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d 答:D)

因为%%是格式说明符,输出%,其它原样输出。

43

如果输出函数语句改成printf(\那么输出结果为A)。 10.以下程序的输出结果是( )。 #include main()

{ int a,b,d=241; a=d/100%9; b=(-1)&&(-1);

printf(\ }

A)6,1 B)2,1 C)6,0 D)2,0 答:B)

241/100的值为2,2%9的值为2。

(-1)&&(-1)的值为1。在逻辑运算中,非0的值为真,真“与”真结果为真,关系和逻辑运算的结果如果为真用“1”表示,如果为假用“0”表示。 11.请选出以下语句的输出结果( )。 printf(\答:5

函数strlen的功能是计算字符串长度。那么字符串\包含多少个字符呢? \\t是横向跳格字符;\\”是字符”;\\065是ASCII码值为八进制数065的字符;\\xff是ASCII码值为十六进制数0xff的字符;\\n是换行字符。该字符串共有5个字符。 注意:记住常用的转义字符。

12.下面程序的输出结果是( )。 int i = 65536; printf(\答:-1

因为int型变量i在C语言中是用16位补码表示的,而65535变成二进制数为1111111111111111,因此i的值为1111111111111111,按照带符号的十进制数%d输出-1,因为1111111111111111是-1的补码。 13.若有说明和语句: int a=5; a++;

此处表达式a++的值是( )。 答:5

表达式a++的值是5表达式计算后,变量a的值是6。 14.若k为int变量,则以下语句( )。 k=8567;

printf(\,k); 答:|8567 |

两个|原样输出,格式符%-06d说明输出变量k的值长度为6且左对齐。 15.若x 为float型变量,则以下语句( )。 x=213.82631;

printf(\,x); 答:213.83

16.若x为double变量,则以下语句( )。

44

int f(a,b) int a, b; { int c; c = a;

if (a > b) c = 1;

else if (a == b) c = 0;

else c = -1; return (c); }

答:-1

25.下面程序的输出结果是( )。 void fun()

{ static int a=0;

a+=2; printf(”%d”,a); }

main() { int cc;

for(cc=1;cc<4;cc++) fun(); printf(”\\n”); }

答:246

26.请选出以下程序的输出结果( )。 #include fun(s,n1,n2) int *s, n1, n2; {

int i, j, t; i = n1; j = n2; while(i < j) {

t = *(s+i); *(s+i) = *(s+j); *(s+j) = t; i++;j--; }

main() {

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0},i,*p = a; fun(p,0,3); fun(p,4,9); fun(p,0,9); for(i=0;i<10;i++) printf(\ printf(\ } }

答:5678901234

27.请选出以下程序的输出结果( )。 #include

80

main() {

int a[] = {1, 2, 3, 4}, i; int x = 0;

for(i = 0; i < 4; i++) {

sub(a, x); printf(\ }

printf(\}

sub(s,y) int *s,y; {

static int t = 3; y = s[t]; t--; }

答:0000

因为实参x单向传递值给形参y,尽管在函数sub中y的值发生变化,但函数main中x的值不改变。

28.设有如下程序段: int i = 0, sum = 1; do

{ sum += i++;} while(i < 6); printf(\

上述程序段的输出结果是( )。 答:16

29.设有下列程序: #include #include main() {

int i;

char str[10],temp[10]; gets(temp);

for(i = 0; i < 4; i++) {

gets(str);

if(strcmp(temp,str)<0)strcpy(temp,str)); }

printf(\}

上述程序运行后,如果从键盘上输入: C++

81

BASIC QuickC Ada Pascal

则程序的输出结果是( ) 答:QuickC

从键盘输入5个字符串,输出最大的字符串。

30.若输入3个整数3、2、1,则下面程序的输出结果是( )。 #include void sub(n,uu) int n,uu[]; {

int t;

t = uu[n--];t += 3*uu[n]; n++;

if (t>= 10)

{uu[n++] = t/10;uu[n]=t;} else uu[n] = t; }

main() {

int i,n,aa[10]={0,0,0,0,0,0}; scanf(\ for(i = 1;i <= n; i++) sub(i, aa);

for(i = 0; i <= n; i++) printf(\ printf(\ } 答:2727

31.下面的程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此 动态存储单元,调用outone函数输出此动态存储单元中的数据。请填空。 #include getone(s) int **s;

{*s = (int *)malloc(sizeof(int));} assone(a) int *a;

{ scanf(\(1) __);} /*填空*/ outone(b) int *b;

{printf(\(2) __);} /*填空*/ main() {

int *p; getone(&p);

82

assone(p); outone(p); } 答:(1) a (2) *b

将指针变量的地址&p传给**s,这样getone函数能够实现p的值是申请到的动态存储单元地址。

32.请读程序:

#include func(int a, int b) {

int c; c = a + b; return c; }

main() {

int x = 6, y = 7, z = 8, r; r = func((x--,y++,x+y),z--); printf(\}

上面程序的输出结果是( )。 答:21

逗号表达式(x--,y++,x+y)的值是13,算术表达式z—的值为8,函数func的值为13+8。 33.请读程序:

#include char fun(char *c) {

if (*c <= 'Z' && *c >= 'A') *c -= 'A' - 'a'; return *c; }

main() {

char s[81], *p = s; gets(s); while(*p)

{*p=fun(p);putchar(*p);p++; } putchar('\\n'); }

程序运行时从键盘上输入OPEN THE DOOR,程序的输出结果是( )。 答:open the door

函数fun的功能是将大写字母变成小写字母。 34.下面程序的运行结果是( )。 #include

83

main() {

int num = 0; while(num <= 2)

{ num++; printf(\} 答:1

2 3

35.下面程序的运行结果是( )。 #include f(int b[], int n) {

int i, r; r = 1;

for(i = 0; i <= n; i++) r = r * b[i]; return r; }

main() {

int x, a[] = {2, 3, 4, 5, 6, 7, 8, 9}; x = f(a, 3);

printf(\}

答:120

36.下面程序的输出结果是( )。 #include

void as(int x, int y, int *cp, int *dp) {

*cp = x + y; *dp = x - y; }

main() {

int a = 4, b = 3, c, d; as(a, b, &c, &d);

printf(\}

答:7 1

37.请读程序:

#include

main(int argc, char *argv[]) {

int i;

84

returu z;

return(x>y?x,y); 函数值的类型 int max(x,y) char letter(c1,c2) double min(x,y)

void printstar() 4、函数的调用

函数名(实际参数)

printstar(); c=max(a,b);

d=max(max(a,b),c); printf(“%d”,max(a,b)); 5、函数的嵌套调用 函数嵌套执行过程 6、函数的递归调用

float factor(int n) { float f;

if(n= =1) f=1;

else f=factor(n-1)*n; return(f); }

7、数组作为函数的参数

实际参数————→形式参数 (数组名) (数组名) 地址传送

8、局部变量和全局变量 (1) 局部变量

在一个函数内部定义的变量,它只在本函数内有效。 (2) 全局变量

在函数外定义的变量称为外部变量。其有效范围: 从定义变量的位置开始到本文件结束。 9、动态存储变量和静态存储变量

(1) 从变量的作用域(既从空间)角度来分,可分为全局变量和局部变量。

从变量的时间(既生存期)角度来分,可分为静态存储变量和动态存储变量。

每一个变量和函数有两个属性:数据类型和数据的存储类别。 存储方法分为二大类:静态存储类和动态存储类。具体包含四种: 自动的(auto),静态的(static),寄存器的(register),外部的(extern)。 (2) 局部变量的存储方式

auto static register

70

(3) 全局变量的存储方式

int a; extern a; static int a;

10、内部函数和外部函数 (1) 内部函数 static int max(x,y)

只能被本文件内的函数调用 (2) 外部函数

extern int max(x,y) int max(x,y)

3.5.3 同步练习

1.程序的运行结果是( )。 #include void num()

{ extern int x,y;int a=15,b=10; x=a-b; y=a+b; }

int x,y; main()

{ int a=7,b=5; x=a+b; y=a-b; num();

printf(\}

答:5,25

因为x和y是全局变量,它的有效范围是从定义点开始到本文件尾,但是在定义点前的函数num中对它们进行了说明即extern int x,y;,因此变量x和y在函数num中也有效。而函数main中的局部变量a和b与函数num中的局部变量互不相干。 2.程序的运行结果是( )。 main()

{ int a=2,i;

for(i=0;i<3;i++)printf(\}

f(int a)

{ int b=0; static int c=3; b++;c++;

return(a+b+c); }

答:7,8,9

在函数f中变量c为静态存储类型,在编译时就分配了存储单元并且赋了初值3,在整个程

71

序的运行过程中变量c始终存在,但只有在运行函数f时变量c才有效。而变量b只有在开始运行函数f时才分配内存单元,并且语句int b=0;相当于int b; b=0;,当函数f 运行结束时,变量b的存储单元又被收回,既变量b只有在运行函数b时才存在。综上所述,调用函数f三次返回的函数值分别为2+1+4,2+1+5,2+1+6。 3.程序的运行结果是( )。 main()

{ int i=2,x=5,j=7; fun (j,6);

printf(\}

fun(int i,int j) { int x=7;

printf(\}

答:i=7,j=6,x=7

i=2,j=7,x=5

在执行函数fun时,fun函数中的局部变量i,j,x的值分别为7,6,7。在执行函数main时,main函数中的局部变量i,j,x的值分别为2,7,5。 4.程序的运行结果是( )。 main() { ming(); ming(); ming(); }

ming() { int x=0; x+=1;

printf(\}

答:111

局部变量定义int x=0;相当于int x; x=0;。

5.已有函数 pow,要求取消变量 i后 pow函数的功能不变,请填写函数程序。 修改前pow函数 pow(int x,int y) { int i,j=1;

for(i=1;i<=y;++i) j=j*x; return(j); }

答:函数pow是计算xy

修改后pow函数 pow(int x,int y) { int j;

for(j=1;y>0;y--)j=j*x; return(j); }

6.程序的运行结果是( )。

72

long fib(int g) { switch(g)

{ case 0: return 0;

case 1: case 2: return 1;} return(fib(g-1)+fib(g-2)); }

main() { long k; k=fib(7);

printf(\}

答:k=13

函数递归调用,实现函数fib:

fib(g)=0 当g=0时 fib(g)=1 当g=1时 fib(g)=1 当g=2时 fib(g)=fib(g-1)+fib(g-2) 当g>=3时

即计算斐波纳奇数列函数。 7.程序的运行结果是( )。 main()

{ int a[3][3]={1,3,5,7,9,11,13,15,17}; int sum; sum=fun(a);

printf(\}

fun(int a[][3]) { int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j;

if(i==j)sum=sum+a[i][j]; }

return(sum); }

答:sum=6

0 1 2

在函数fun中对数组a赋值,数组a的9个元素的值分别为 1 2 3,并计算主对角线上

2 3 4

各元素的和即0+2+4。

8.程序的运行结果是( )。 fun(int x)

{ static int a=3; a+=x;

return(a); }

73

main() {

int k=2,m=1,n; n=fun(k); m=fun(m);

printf(\}

答:56

9.程序的运行结果是( )。 int x=5,y=7;

ming(int x,int y) { int z; z=x+y; return(z); }

main()

{ int a=4,b=5,c; c=ming(a,b);

printf(\}

答:X+Y=9

10.程序的运行结果是( )。 int m=13;

int fun(int x,int y) {

int m=3;

return(x*y-m); }

main() {

int a=7,b=5;

printf(\} 答:2

虽然全局变量m的有效范围是从定义点到文件尾,但是在函数fun中又定义了局部变量m,因此在函数fun中其局部变量m有效,而在函数main中全局变量m有效,结果为(7*5-3)/13。

11.下面的程序( )。 main() { int x=3; do {

printf(\

} while(!(--x)); }

74

答:1 -2

第一次执行输出函数时printf(\,赋值表达式x-=2的值为1,输出1,当计算!(--x)时,表达式--x和变量x的值均为0,表达式!(--x)的值为真,再次执行循环。赋值表达式x-=2的值为-2,输出-2,当计算!(--x)时,表达式--x和变量x的值均为-3,表达式!(--x)的值为假,循环结束。 12.下面程序的输出是( )。 main() {int y=9;

for(; y>0;y--) {if(y%3==0)

{ printf(\ } }

答:852

13.下面程序的输出是( )。 unsigned fun6(unsigned num) {

unsigned k=1; do {

k*=num; num/=10; }while (num); return(k); }

main() {

unsigned n=26;

printf(\}

答:12

将变量num的值的各位相乘。 14.下面程序的输出是( )。 long fun5(int n) {

long s;

if ((n==1)||(n==2)) s=2; else

s=n+fun5(n-1); return(s); }

main() {

long x;

75

x=fun5(4);

printf(\ } 答:9

函数递归调用。

15.下面程序的输出是( )。 #define MAX 5 int a[MAX],k; main() {

fun1();fun3(); fun2();fun3(); printf(\}

fun1() {

for (k=0;k

fun2() {

int a[MAX],k;

for (k=0;k

fun3() {

int k;

for (k=0;k

答:0246802468

函数fun1给全局数组a赋值;函数fun2给其局部数组赋值;函数fun3输出全局数组各元素的值。

16.以下程序输出结果是( )。 #include main() {

int i=1,j=3;

printf(\{int i=0; i+=j*2;

printf(\}

printf(\}

答:1,6,3,2,3,

76

变量i在复合语句 { int i=0;

i+=j*2;

printf(\

}

中定义,其有效范围仅是该复合语句。而在main函数中定义的变量i的有效范围是除了上面的复合语句以外的main函数的其它部分。 17.以下程序输出结果是( )。 #include main() {

int k=4,m=1,p; p=func(k,m); printf(\ p=func(k,m)

printf(\}

func(a,b) int a,b;

{static int m=0,i=2; i+=m+1; m=m+1; m=i+a+b; return(m) }

答:8,17,

18.程序填空,以下程序中的trap 函数是用梯形法求定积分的通用函数。被积函数是 f(x)=x*x+3*x+2。 #include #include double trap(fun,a,b) double (*fun)(),a,b; {

double t,h; int i,n=1000;

t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n);

for(i=1;i<=n-1;i++) t=t+______(1) _; /*填空*/ t=t*h; return(t); }

double mypoly(x) double x;

{return(x*x+3.0*x+2.0); }

77

main()

{double y,(*pf)();

pf=_____ (2) ; /*填空*/ y=trap(pf,0.0,4.0); printf(\} 答:(1)(*fun)(a+i*b) (2) mypoly 19.程序填空,以下程序求a 数组中所有素数的和,函数isprime 用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。 #include main()

{int i,a[10],*p=a,sum=0;

printf(\

for (i=0;i<10;i++)scanf(\ for(i=0;i<10;i++)

if (isprime(*(p+_ _ (1) _))==1) /*填空*/ {

printf(\

sum+=*(a+i); }

printf(\ }

isprime(x) int x; {int i;

for(i=2;i<=x/2;i++) if(x%i==0) return(0);

__ (2) __; /*填空*/ } 答:(1)i

(2)return(1)

20.程序填空,以下程序调用invert 函数按逆序重新放置 a 数组中元素的值。a数组中元素的值在main 函数中读入。 #include #define N 10 invert(s,i,j) int *s,i,j; {

int t; f(i

*(s+i)=*(s+j); *(s+j)=t;

78

invert(s,___ (1) _ ,j-1); /*填空*/ }

}

main() {

int a[N],i;

for (i=0;i

for (i=0;i

21.执行下面的语句段的结果是( )。 int x = 23 do

{ printf (\while(!x); 答:23

22.下面函数的功能是( )。 sss(s, t) char *s, *t;

{while((*s)&&(*t)&&(*t++==*s++)); return (*s - *t); }

答:比较两个字符串的大小。

23.请选出以下程序的输出结果( )。 #include sub(x,y,z) int x,y,*z; { *z = y - x;} main()

{ int a, b, c;

sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c); printf(\}

答:-5,-12,-7

24.下面程序的输出结果是( )。 #include main()

{ int i = 2, p; p = f(i, i+1); printf(\}

79

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库第三章(C语言程序设计同步练习指导)在线全文阅读。

第三章(C语言程序设计同步练习指导).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/208520.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219