C语言程序设计教程第四章练习题解析(1)

更新时间:2024-03-21 10:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单选题

1、关于C语言中的函数,下列描述正确的是() A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的嵌套均不可以嵌套 D.函数的定义和函数的调用均不可以嵌套 答案:B

解析:函数的定义不可以嵌套,但函数的调用可以嵌套

2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个 A.3 B.4 C.5 D.6 答案:A

解析:(v1, v2), (v3,v4,v5)和v6一共三个实参

3、关于C语言中print()函数与scanf()函数,下列描述中正确的是() A.printf()函数可以向任何地方输出数据 B.printf()只向控制台输出数据 C.scanf()只能输入英文字母和数字 D.scanf()函数可以识别输入的空格 答案:B

解析:printf()是向控制台输出的函数

4、在C语言中,内部函数需要添加的关键字是() A.extern B.static C.this D.auto 答案:B

解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态

函数)。

5、当调用时,会调用内部函数 A.当调用时,会调用内部函数 B.当调用时,会调用外部函数

C.当调用时,会调用两次,先调用内部函数再调用外部函数 D.都不调用,会报错 答案:A

解析:当内部函数与外部函数重名时,会优先调用内部函数 6、在C语言中,声明外部函数需要添加的关键字是() A.extern B.static C.this D.auto

答案:A

解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字 7、关于C语言中的局部变量,下列描述中错误的是() A.局部变量就是在函数内部声明的变量 B.局部变量只在函数内部有效

C.局部变量只有当它所在的函数被调用时才会被使用 D.局部变量一旦被调用,其生存周期持续到程序结束 答案:D

解析:当函数调用结束时局部变量就会失去作用

8、关于C语言中的全局变量,下列描述中正确的是() A.全局变量的作用域一定比局部变量的作用域范围大 B.静态类别变量的生存周期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量

D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 答案:B

解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起

作用;

选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量; 选项4不对:static变量定义时就存储地全局区,初始化为0; 9、当全局变量与局部变量重名时,那么在调用时() A.局部变量会被屏蔽 B.全局变量会被屏蔽

C.都不会调用,系统会报错

D.会调用两次,先调用局部变量,再调用全局变量 答案:B

解析:当局部变量与全局变量重名时,全局变量会被屏蔽。 10、在C语言中,关于变量的作用域,下列描述中错误的是() A.局部变量只在整个函数的运行周期中有效 B.全局变量的作用域为整个程序的运行周期

C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量 D.全局变量会覆盖掉所有与它重名的局部变量 答案:D

解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉

11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量() A.只在该复合语句中有效,在该复合语句外无效 B.在该函数中任何位置都有效 C.在本程序的原文件范围内均有效

D.此定义方法错误,其变量为非法变量 答案:D

解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该

变量,则在函数中可以引用该变量

4对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的 12、C语言程序的基本单位是()。 A.程序行

B.语句 C.函数 D.字符 答案:C

解析:函数是C语言程序的基本单位

13、C语言中决定函数返回值的类型的是()。 A.return语句中的表达式类型 B.调用函数的主调函数类型 C.调用函数时临时

D.定义函数时所指定的函数类型 答案:D

解析:函数的返回值取决于定义函数时指定的返回值类型

14、若有函数调用语句:fun(a+b, (x,y), fun(n+k,d,(a,b))); 在此函数调用语句中实参的个数是()。 A.3 B.4 C.5 D.6 答案:A

解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b))返回一个值。

15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。 A.input x,y,z;

B.scanf(\C.scanf(\D.read(\答案:B

解析:读取键盘输入的数据要用scanf()函数,scanf()中的参数要传入变量的地址 16、若变量已正确说明为float类型,要通过语句 scanf(\给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是()。 A.10 22 33

B.10.0,22.0,33.0 C.10.0 22.0 33.0 D.10; 22; 33 答案:B

解析:用scanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开 17、若有定义:int x,y; char a,b,c; 并有以下输入数据(此处\%u代表空格):1\%u2\%uA\%uB\%uC,那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()。

A.scanf(\B.scanf(\C.scanf(\

D.scanf(\答案:D

解析:空格也会作为一个字符赋给字符变量。

18、对嵌套子程序调用说法正确的是()。 A.外层子程序可以调用所有的内层子程序

B.内层子程序只可以调用包含本身的外层子程序,不可以隔层调用 C.外分程序必须能完全套住内分程序 D.以上说法均不正确 答案:C

19、C语言中函数能否嵌套调用和递归调用?() A.二者均不可

B.前者可,后者不可 C.前者不可,后者可 D.二者均可 答案:D

解析:两者调用都可以

20、C语言规定,程序中各函数之间()。 A.既允许直接递归调用也允许间接递归调用 B.不允许直接递归调用也不允许间接递归调用 C.允许直接递归调用不允许间接递归调用 D.不允许直接递归调用允许间接递归调用 答案:A

解析:各程序间既可以直接调用也可以间接调用。 21、有如下程序: long fib(int n) { if (n>2) return fib(n-1)+fib(n-2); else return 2; }

void main() { printf(\}

该程序的输出结果是()。 A.2 B.4 C.6 D.8 答案:B 解析:向fib()函数传入3时,返回fib(1)+fib(2)的值;向fib()函数传入1和2时,都返回2,

所以fib(3)返回2+2=4。

22、以下程序的输出结果是()。 long fun(int n) { long s;

if (n==1 || n==2) s=2; else s=n-fun(n-1); return s; }

void main() { printf(\}

A.1 B.2 C.3 D.4

答案:A 解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。所以fun(3)返回3-2=1。 23、在C语言中,函数的隐含存储类别是()。 A.auto B.static C.extern D.无存储类别 答案:C

解析:为简化编程,C语言中允许在定义外部函数时省略关键字extern。 24、以下叙述中不正确的是()。

A.在不同的函数中可以使用相同名字的变量 B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个函数内的复合语句中定义的变量在本函数范围内有效 答案:D

解析:函数内的复合语句中定义的变量仅仅在该复合语句中有效。 25、以下程序运行后,输出结果是()。 int func(int a, int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return m; }

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

}

printf(\

A.8,15 B.8,16 C.8,17 D.8,8 答案:C

解析:函数体内的静态局部变量不随函数的调用结束而销毁,而是一直存在。 26、以下程序的输出结果是()。 int d=1; int fun(int p) { static int d=5; d+=p; printf(\ return d; }

void main() { int a=3; printf(\}

A.6 9 9 B.6 6 9 C.6 15 15 D.6 6 15 答案:C

解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内的静态局部变量d的值是

1,d+=p后d的值是6,输出d的值,返回d的值;

然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,

d+=p后d赋值15,输出d的值,返回d的值。

27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是()。 A.extern B.register C.auto D.static 答案:D

解析:static修饰全局变量时,表示该变量仅在本文件中可使用。 28、下列程序的输出结果是()。 int b=2;

int func(int *a) { b += *a; return b;

}

void main() { int a=2, res=2; res += func(&a); printf(\}

A.4 B.6 C.8 D.10 答案:B

解析:func()函数中,对全局变量b自增a的值,func()函数返回4;res+=4,res赋值为6。 29、请读程序: void main() { int a=1,b=2,c=3; ++a; c+=++b; { int b=4,c; c=b*3; a+=c; printf(\ a+=c; printf(\ } printf(\}

该程序的输出是()

A.first: 12,4,12 Second: 26,4,12 third: 4,3,6 B.first: 14,4,12 Second: 26,12,12 third: 26,3,4 C.first: 14,4,12 Second: 26,4,12 third: 26,3,6 D.first: 14,4,12 Second: 26,6,12 third: 26,4,6 答案:C 解析:程序运行到第6行时,a=2,b=3,c=6;程序运行到第10行时,a=14,局部变量b=4,

c=12;程序运行到第13行时,a=26,局部变量b=4,c=12;程序运行到第15行时,a=26,b=3,c=6。

30、以下程序运行后,输出结果是()。 int d=1; int fun(int p) { int d=5; d+=p++;

printf(\}

int main() { int a=3; fun(a); d+=a++; printf(\}

A.84 B.99 C.95 D.44

答案:A

解析:fun()函数调用时代入局部变量a的值,fun()函数体内局部变量d自增3,输出d的

值,即8,fun()函数返回8,此时全局变量d的值不变。d+=a++后,全局变量d自增3,此时全局变量d的值是4,输出全局变量d的值。

31、以下程序的输出结果是()。 int a, b; void fun() { a=100; b=200; }

void main() { int a=5, b=7; fun(); printf(\}

A.100200 B.57

C.200100 D.75 答案:B

解析:fun()函数改变的是全局变量的值,printf()函数输出的是局部变量的值,fun()函数不

会改变局部变量a、b的值。

多选题

1、在调用外部函数时,下列描述中正确的是()(多选) A.只要有函数名,就能调用外部函数

B.调用外部函数要包含外部函数所在的头文件 C.外部函数与调用者定义在同一个源文件下

D.在声明外部函数时,外部函数与原函数定义的返回值类型、函数名称和参数列表必须

一致

答案:B,D

解析:外部函数调用时要包含其所在的头文件,当调用者声明了外部函数的原型,也可以

不用包含头文件

判断题

1、局部变量就是在函数内部声明的变量。 答案:true

解析:局部变量就是在函数内部声明的变量。

2、局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。 答案:true

解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量

就会失去作用。

3、局部变量就是在函数内部声明的变量,它只在本函数内有效。 答案:true

解析:局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,只能在本

函数内使用它。

4、局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一直存在。 答案:false

解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量

就会失去作用。

简答题

1、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void func(int a, int b) { printf(\}

void main() { func(3,2); printf(\}

答案:5

解析:fun()是一个实现两个数相加的函数,在主函数中调用并传入值,得到两个数的和 2、请阅读下面的程序,在空白处填写正确的代码,将函数的结果返回给调用者。 int func(int a, int b) {

int sum = 0; sum = a + b; ; }

void main() {

int sum = 0; = func(3,2); }

printf(\两个数相加的结果为%d\答案:return sum; sum ;

解析:return sum;return 将函数结果返回 sum ;主函数中sum接收函数返回的值

3、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void main() { int num = 100;

printf(“%d, %o, %x\\n”,num,num,num); }

答案:100 144 64

解析:printf()函数将十进制数100分别以十进制,八进制,十六进制形式输出。

4、请阅读下面的程序,当用户从键盘输入hello world时,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 void main() {

char str[256]; scanf(“%s”,str); printf(“%s\\n”,str); }

答案:hello 解析:输入hello world时,中间的空格对scanf()函数来说是终止符,后面的内容无法读取。 5、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。 用户从键盘输入两个整型数据,将两个数据相加输出。 void main() {

int a,b;

;

printf(“%d\\n”, ); }

答案:scanf(“%d%d”,&a,&b); a + b;

解析:键盘输入数据,用scanf()函数;

void main() {

printf(\的值为:%d\\n\}

答案:不能运行

解析:变量x为函数show()的局部变量,只在show()函数范围内有效,在main()中无法调

用。

17、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int show() { int x = 0; return x; }

void main() {

int x = 10; show();

printf(\的值为:%d\\n\}

答案:x的值为:10

解析:main()函数中的x是局部变量,不受show()函数调用的影响。

18、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int x = 10; void main() {

int x = 100; printf(“%d”,x); }

答案:100

解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉。

19、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int x = 2;

void func(int x) { x = x * x * x; }

void main() { func(x); printf(\

}

答案:2

解析:全局变量作为实参传递给函数,在函数中的运算并不改变其原来的值。

20、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int x=10; void show() {

int x=20;

printf(\函数中x的值为:%d\\n\}

void main() {

int x=30;

printf(\函数中x的值为:%d\\n\show(); }

答案:main()函数中x的值为:30 show()函数中x的值为:20

解析:局部变量只在它所在的函数内部有效,且当全局变量与局部变量重名时,局部变量

会屏蔽掉全局变量

21、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。 int a, b; void func() { a = 100; b = 200; }

void main() { int a = 5, b = 7; func(); printf(\}

答案:a = 5, b = 7

解析:全局变量与局部变量重名时,局部变量会屏蔽掉全局变量 22、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:用函数求x的绝对值。 void main() { int x,y; scanf(\ _______ printf(\

}

int abs(int a) { int b; if (a>=0) b=a; else _______ _______ }

答案:y=abs(x); b=-a; return b; 解析:abs()函数是求绝对值的函数。

23、以下check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse的值相等,则显示“WELL DONE!!”,否则显示计算后的值。请填空。 void check(int ponse, float value) { int val; val = _______; print(\计算后的值:%d\ if (_______) printf(\ else printf(\}

答案:(int)((value*10 + 5)/10) val == ponse

解析:第一个填空处利用float型转int型的规则实现四舍五入的计算;第二个填空处判断

是否计算后的值与ponse的值相等。

24、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:求整数num1和num2的最大公约数,并返回该值。 int gongyue(int num1, int num2) { int temp; while (_______) { temp = num1 % num2; num1 = num2; num2 = temp; } return _______; }

答案:num2!=0 num1

解析:循环条件是num2!=0,因为被模数不能为0;num1在对num2取模的过程中一直在

改变,最后返回num1的值。

25、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:根据对x的输入,求

1到x的累加和。 int fun(int n) { int i,c; c=0; for (i=1;i<=n;i++) c=c+i; _______ }

void main() { int x; scanf(\ printf(\}

答案:return c; &x

解析:函数fun()中求总和,c是总和变量,最后返回c; 从键盘输入x,则要对scanf()函数传入变量x的地址。

26、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:先输入10个数据到数组a中,再输入x,然后在a数组中查找与x值相同的元素的所在位置。 void main() { int a[11],x,i; printf(\ for (i=1; _______;i++) scanf(\ printf(\ _______ *a=x;i=10; while (x!=*(a+i)) _______ if (i>0) printf(\ else printf(\}

答案:i<=10 scanf(\ break;

27、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:输入10个整数存入数组x中,然后计算各元素的和,并将和存入S中。 void main() { int x[10],i,s; for (i=0;i<10;i++) _______

}

s=0;

for (i=1; i<10; i++) _______ printf(\

答案:scanf(\ s+=i;

解析:第一个空格从键盘输入元素的值; 第二个空格将元素存入变量s中;

28、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:读入一个两位的正整数,按字符型形式输出。 void main() { int n; scanf(_______); printf(_______); }

答案:\ \29、请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。 #include int sum(int a) { int c=0; static int b=3; c+=1; b+=2; return a+b+c; }

void main() { int i; int a=2; for (i=0; i<5; i++) printf(\}

答案:8,10,12,14,16,

解析:sum()函数体中的静态局部变量b会一直存在,其值不随函数调用结束而销毁。 30、编写一个函数,判断一个数是奇数还是偶数,并在主函数中调用。 答案:#include void func(int num) {

if(num %2 == 0)

printf(“该数是偶数”); else

printf(“该数是奇数”); }

int main() {

int num;

scanf(“%d”,&num); func(num); return 0; }

解析:func()函数对传入进来的参数num进行奇偶判断; 主函数中调用func()函数,传入参数得到判断结果。

31、编写一个函数,实现1-100的相加和,并在主函数中调用。 答案:#include int func() {

int num, sum = 1;

for(num = 1; num <= 100; num++) {

sum += num; }

return sum; }

int main() {

int sum = 0; sum = func();

printf(“sum = %d”,sum); return 0; }

解析:func()函数实现1-100的相加和,并将结果返回给调用者。 主函数中的sum接收调用func函数的返回值,并将其打印

32、请编写一个程序,用户从键盘输入英文字母,如果是大写,将其转换成小写输出;如果是小写,将其转换成大写输出。

提示:英文字母在计算机中以ASCII码表形式存在。 答案:#include int main() {

char ch; printf(\请输入英文字母:\\n\ scanf(\ if (ch >= 'A' && ch <= 'Z') printf(\ else if (ch >= 'a' && ch <= 'z')

printf(\return 0; }

解析:英文字母对应的ASCII码值,大写比对应小写小32

33、请编写一个程序,用户输入一个十进制整数,分别输出其十进制、八进制、十六进制对应的数值。

答案:#include int main() {

int num;

scanf(“%d”,&num);

printf(“十进制为:%d\\n八进制为:%o\\n十六进制为:%x\\n”,num,num,num); return 0; }

解析:十进制输入格式符为%d,八进制输出格式符为%o,十六进制输出格式符为%x。 34、请编写一个程序,实现两个数的求和,并打印出来。 答案:#include void show(int s) { printf(\两个数的和为:%d\ return; }

void add(int a, int b) { int s = a + b; show(s); return; }

int main() {

int s = a + b; show(s); return 0; }

解析:add()函数实现两个数相加,show()函数将两个数相加的结果打印出来。 35、请编写一个程序,用户从键盘随机输入四个数,比较这个四个数得出其中最大值并输出。 提示:

1)编写一个两个数值比较的函数

2)编写一个四个数值比较的函数,调用这个函数,在该函数中调用两个数值比较的函数 答案:#include int max2(int a, int b) { if (a > b){ return a;

} else { return b; } }

int max4(int a, int b, int c, int d) { int res; res = max2(a, b); res =max2(res,c); res = max2(res, d); return res; }

int main() {

int a, b, c, d, max;

printf(\请输入四个整数:\ scanf(“%d%d%d%d”,&a,&b,&c,&d); max = max4(a, b, c, d); printf(\return 0; }

解析:输入四个数,调用max4()函数,在max4()函数中又调用max2()函数进行两两比较,

最后得出最大值,返回给调用函数。

36、请编写一个程序,计算s = 2^2! + 3^2!; 提示:

1)编写一个函数计算平方值 2)编写一个函数计算阶乘 答案:#include long f1(int p){ int k; long r; long f2(int); k = p*p; r = f2(k); return r; }

long f2(int q){ long c = 1; int i; for (i = 1; i <= q; i++) c = c*i;

return c; }

int main() { int i; long s = 0; for (i = 2; i <= 3; i++) s = s + f1(i); printf(\return 0; }

解析:函数f1()实现了计算数值的平方,函数f2()实现了阶乘计算,在f1()中调用f2()实现

了计算表达式的值。

37、请编写一个程序,用递归方法实现n!。 提示:

1) 递归调用是函数自身调用自身的过程 2) 每递归调用一次n就要自减一次 答案:#include int add(int n) { if (n == 1) return 1; else return n + add(n - 1); }

int main() {

int n ;

scanf(“%d”,&n); int sum = add(n);

printf(“结果为:%d\\n”,sum); return 0; }

解析:add()函数实现递归,每调用一次n要减1. 38、请编写一个程序,求出m的n次方。 提示:编写递归函数求解。 答案:#include int func(int m, int n) { if (n == 1) return m; else return m*func(m, n - 1); }

int main() {

int m, n,sum; scanf(\ sum = func(m, n); printf(\return 0; }

解析:func()实现递归调用,每乘上一个m,再用n-1调用函数,实现m的n次方。

39、假设有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都存活,问一年之后(第13个月)月兔子总数为多少对? 提示:兔子的规律为数列1,1,2,3,5,8,13,? 答案:#include int get_count(int month) { if (month == 1) { return 1; } else if (month == 2) { return 1; } else { return get_count(month - 1) + get_count(month - 2); } }

int main() {

int month = 13; printf(\第 %d 个月兔子总数为 %d 对。\\n\return 0; }

解析:斐波那契数列是典型的递归实现问题,兔子每月的增长有一定的规律,本月出生的

兔子等于上一个月与上上一个月兔子的总和。

40、定义一个内部函数,求出1-100的和。 答案:#include static int func(int n) {

int i, sum = 0; for(i = 0; i<=n; i++) { sum += i;

}

return sum; }

int main() {

int sum = func(100);

printf(“sum = %d\\n”,sum); return 0; }

解析:内部函数是与调用者在同一个文件夹下;求和可以用循环来实现。

41编写一个内部函数,用户从键盘输入一个数,分别打印出其每一位上的数字。 答案:#include static void func(int num) { while (num != 0) { printf(\ num = num / 10; } }

int main() {

int num; scanf(\ func(num); return 0; }

解析:内部函数与调用者定义在同一个文件下;

本题打印出数字的结果是倒序排列的,如果要正序排列,待接下学习数组后,同学们可以

用数组实现。

42、定义一个外部函数,判断一个数是否是素数,在主函数中调用该函数。 答案:first.h int func(int num); first.c

#include int func(int num) { int i; if (num < 2) return 0; for (i = 2; i < sqrt(num); i++) { if (num % i == 0) return 0;

else return 1; } }

second.c

#include #include “first.h> int main() {

int x, num; scanf(\ x = func(num); if (x == 1)

printf(\是素数\\n\else

printf(\非素数\\n\return 0; }

解析:调用外部函数时要包含外部函数所在的头文件

43、定义一个外部函数,打印出1-100之间3与4的所有公倍数,并在主函数中调用。 答案:irst.c

#include int func() { int i; for (i = 1; i <= 100; i++) { if (i % 3 == 0 && i % 4 == 0) printf(\ } }

second.c

extern int func(); int main() {

func(); return 0; }

解析:extern int func();声明为外部函数,可以调用其他源文件中的函数; 3和4的公倍数要对3与4取模要同时为0

44、编写一个两个函数,对定义好的两个变量分别实现相加、相乘,并在主函数中调用两个函数并输出结果。 答案:int a = 3, b = 5;

int add() { return a + b; }

int mul() { return a * b; }

int main() {

printf(\ printf(\return 0; }

解析:可以让多个函数调用的变量,定义为全局变量

本文来源:https://www.bwwdw.com/article/waw8.html

Top