第六章习题
一、选择题
1、以下说法中正确的是()。
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
2、以下叙述中错误的是()。
A)用户自定义的函数中可以没有return语句
B)用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C)用户自定义的函数中若没有return语句,则应当定义函数为void类型
D)函数的return语句中可以没有表达式
3、在C语言中,函数返回值的类型最终取决于()。
A)函数定义时在函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型
D)函数定义时形参的类型
4、C语言程序由函数组成,它的()。
A)主函数必须在其它函数之前,函数内可以嵌套定义函数
B)主函数可以在其它函数之后,函数内不可以嵌套定义函数
C)主函数必须在其它函数之前,函数内不可以嵌套定义函数
D)主函数必须在其它函数之后,函数内可以嵌套定义函数
5、以下不正确的说法()。
A)在不同函数中可以使用相同名字的变量
B)形式参数是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在函数内的复合语句中定义的变量在本函数范围内有效
6、关于全局变量,下列说法正确的是()。
A)全局变量必须定义于文件的首部,位于任何函数之前。
B)全局变量可以在函数中定义。
C)要访问定义于其他文件中的全局变量,必须进行extern说明。
D)要访问定义于其他文件中的全局变量,该变量定义中必须用static加以修饰。
7、以下叙述中错误的是()。
A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束
C)#define MAX是合法的宏定义命令行
D)C程序对预处理命令行的处理是在程序执行的过程中进行的8、下面程序的运行结果是( )。
#include <stdio.h>
int a=5;int b=7;
plus(int x,int y)
{int z;
z=x+y;
return(z);
}
void main()
{ int a=4,b=5,c;
c=plus(a,b);
printf("A+B=%d\n",c);
}
A)A+B=0 B)A+B=9 C)A+B=6 D)A+B=8 9、有以下程序
#include <stdio.h>
int f(int x)
{int y;
if(x==0||x==1) return 3;
y=x*x-f(x-2);
return y;
}
main()
{int z;
z=f(3); printf(“%d\n”,z);
}
程序的运行结果是()。
A)0 B)9 C)6 D)8
10、有一个名为init.txt的文件,内容如下:
#define HDY(A,B) A/B
#define PRINT(Y) printf("y=%d\n",Y)
有以下程序:
#include "init.txt"
#include <stdio.h>
main()
{int a=1,b=2,c=3,d=4,K;
K=HDY(a+c,b+d);
PRINT(K);
}
下面针对该程序的叙述正确的是()。
A)编译有错 B)运行出错 C)运行结果为 y=0 D) 运行结果为 y=6
二、填空题
1、从用户使用的角度看,函数有_______和_______两种。
2、从函数的形式看,函数分为_______和_______两类。
3、C语言规定,简单变量做实参时,他和对应形参之间的数据传递方式是: _______ 。
4、实参对形参的数据传送是单向的,即只能把_______的值传送给_______。
5、以下程序的输出结果是_______。
#include<stdio.h>
void fun(int x)
{ if(x/2>0) fun(x/2);
printf(“%d ”,x);
}
main()
{fun(3); printf(“\n”);}
6、以下程序的运行结果是_______。
#include<stdio.h>
max(int x,int y)
{int z;
z=(x>y)?x:y;
return(z);
}
main()
{int a=1,b=2,c;
c=max(a,b);
printf("max is %d\n",c);
}
7、下面程序的运行结果是_______。
#include<stdio.h>
sub(int n)
{int a;
if(n==1)return 1;
a=n+sub(n-1);
return(a);
}
main()
{int i=5;
printf("%d\n",sub(i));
}
8、以下程序的正确运行结果是_______。
#include <stdio.h>
add()
{static int x=0;
x++;
printf("%d,",x);
}
main()
{int i;
for (i=0; i<3; i++)
add();
}
三、编程题
1、已有变量定义和函数调用语句:int x=57 ; isprime(x); 函数isprime( ) 用来判断一个整形数a是否为素数,若是素数,函数返回1,否则返回0。
请编写isprime函数。
2、函数gongyue的作用是求整数num1和num2的最大公约数,并返回该值。
第六章习题答案一、选择题
1~5:CBABD 6~10:CDBCD
二、填空题
1、库函数(或系统函数),自定义函数
2、无参函数,有参函数
3、传值方式
4、实参,形参
5、1 3
6、max is 2
7、15
8、1,2,3
三、编程题
1、参考答案:
#include <stdio.h>
int is_prime( int a)
{ int i,p=1;
for( i=2;i<a-1; i++)
if (a%i==0)
{ p=0; break;}
return (p);
}
void main()
{int i=11;
if (is_prime(i))
printf("1");
else
printf("0");
}
2、参考答案:
#include <stdio.h>
int gongyue(int num1,int num2)
{int temp,a,b;
if(num1 < num2)
{temp=num1;num1=num2;num2=temp;}
a=num1;
b=num2;
while (b)
{temp=a%b;a=b;b=temp;}
return(a);
}
void main()
{int i=12,j=8;
printf("%d",gongyue(i,j)); }。