课 后 练 习
一、选择题
1.以下说法中正确的是 C 。
A.C语言程序总是从第一个的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
2.一个函数返回值的类型是由 C 决定的。
A.return语句中表达式的类型
B.在调用函数时临时指定
C.定义函数时指定的函数类型
D.调用该函数的主调函数的类型
3.C语言规定,简单变量作实参时,它和对应形参之间的数据传递方式 B 。
A.地址传递 B.单向值传递
C.由实参传给形参,再由形参传回给实参 D.由用户指定
4.当调用函数时,实参是一个数组名,则向函数传送的是 B 。
A.数组的长度 B. 数组的首地址
C.数组每一个元素的地址 D. 数组每个元素中的值
5.以下正确的函数声明形式是 C 。
A.double fun(int x,int y) B.double fun(int x;int y)
C.double fun(int x,int y); D.double fun(int x, y);
6.如果在一个函数的复合语句中定义了一个变量,则该变量 A 。
A.只在该复合语句中有效 B.在该函数中有效
C.在本程序范围内均有效 D.为非法变量
7.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为 A 。
A.自动(auto) B.静态(static)
C.外部(extern) D.寄存器(register)
8.要求定义一个返回值为double类型的名为sum的函数,其功能为求两个 double类型数的和。正确的定义形式为 C 。
A.sum(double x,y)
{ rerurn x+y;
}
B.sum(double x,double y)
{ return x+y;
}
C.double sum(double x,double y)
{ return x+y;
}
D.double sum(double x,double y);
{ return x+y;
}
二、填空题
1.有以下程序,程序运行后的输出结果是 9 。
float fun(int x,int y)
{
return(x+y);
}
void main()
{ int a=2,b=5,c=8;
printf(\"%3.0f\\n\
}
2.有以下程序,执行后输出的结果是 4,3,5 。
void f(int x,int y)
{ int t;
if(x{ t=x; x=y; y=t; }}
void main()
{ int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf(\"%d,%d,%d\\n\
}
3.下面程序的输出是 C 。
fun3(int x)
{
static int a=3;
a+=x;
return(a);
}
void main()
{
int k=2, m=1, n;
n=fun3(k);
n=fun3(m);
printf(\"%d\\n\
}
4.程序运行后的输出结果是 22 。
void reverse(int a[ ],int n)
{
int i,t;
for(i=0;i{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}}
void main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)
s+=b[i];
printf(\"%d\\n\
}
5.以下程序输出结果是 8 。
#include \"stdio.h\"
int abc(int u,int v);
void main()
{
int a=24,b=16,c;
c=abc(a,b);
printf(\"%d\\n\
}
int abc(int u,int v)
{
int w;
while(v)
{
w=u%v; u=v; v=w;
}
return u;
}
6.下面程序的输出是 31 。
void fun(int x, int y, int z)
{ z=x*x+y*y; }
void main()
{
int a=31;
fun(5,2,a);
printf(\"%d\
}
三、编程题
1.编写程序实现下述功能:从键盘输入四个实数,然后输出其中最大的一个。要求定义并使用求两数中较大者的函数float max(float x, float y),输入与输出由主函数完成。
#include float max(float x,float y);
void main()
{
float a,b,c,d;
printf(\"请输入4个实数:\\n\");
scanf(\"%f%f%f%f\
printf(\"4个数中的最大值为%f\\n\
}
float max(float x,float y)
{
if(x>y)
return x;
else
return y;
}
2.编写程序实现下述功能:从键盘输入一个字符,若是数字,显示“yes”,否则显示“no”。要求定义函数isdigit(char ch),其功能是检查ch是否数字字符,是则返回1,否则返回0。主函数完成键盘输入和屏幕输出。
#include int isdigit(char ch1);
void main()
{
char ch;
printf(\"请输入一个字符:\");
ch=getchar ();
printf(\"\\n\");
if(isdigit(ch))
printf(\"yes\\n\");
else
printf(\"no\\n\");
}
int isdigit(char ch1)
{
int a;
if(ch1>='0'&&ch1<='9')
a=1;
else
a=0;
return a;
}
3.编写程序实现下述功能:先从键盘指定个数,再按此个数输入字符,然后输出它们中的最小者。要求定义并使用求数组前n个元素中最小值的函数char min_cn(char b[ ], int n),输入与输出由主函数完成。
#include char min_cn(char b[],int n);
void main()
{
char a[10];
int i,n;
printf(\"请指定字符个数:\\n\");
scanf(\"%d\
printf(\"请输入n个字符:\");
for(i=0;ia[i]=getche(); //此处不能使用getchar函数printf(\"其中最小字符为%c\\n\
}
char min_cn(char b[],int n)
{
int i;
char min;
min=b[0];
for(i=1;i{if(b[i]min=b[i];}
return min;
}