单选题
2-1 在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为()。
A.void B.double C.char D.int
选择D
2-2 以下正确的说法是()。
A.实参与其对应的形参共同占用一个存储单元
B.实参与其对应的形参各占用独立的存储单元
C.只有当实参与其对应的形参同名时才占用一个共同的存储单元
D.形参是虚拟的,不占用内存单元
选择B
2-3 以下不正确的说法是()。
A.实参可以是常量、变量或表达式
B.实参可以是任何类型
C.形参可以是常量、变量或表达式
D.形参应与对应的实参类型一致
选择C,形参不能是常量
2-4 在函数调用Func(exp1 , exp2+exp3 , exp4*exp5)
中,实参的数量是 ()。
A.3 B.4 C.5 D.语法错误
选择A,实参有exp1 , exp2+exp3 , exp4*exp5这三个
2-5 下列程序的输出结果是()。
fun(int a, int b, int c)
{ c = a * b; }
int main(void)
{
int c;
fun(2, 3, c);
printf(“%d\n”, c);
return 0;
}
A.0 B.1 C.6 D.无法确定
选择D,因为c没有赋值,所以c是随机值
2-6 以下程序的运行结果是( )。
int x = 5, y = 6;
void incxy( )
{
x++;
y++;
}
int main(void )
{
int x = 3;
incxy( );
printf("%d, %d\n", x, y);
return 0;
}
A.3, 6 B.4, 7 C.3, 7 D.6, 7
选择C,main函数中的局部变量x覆盖了全局函数,intxy()对全局变量x,y起作用,printf输出的是局部变量x和全局变量y(优先使用局部变量)
2-7 以下正确的函数定义形式是()。
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)
选择A,定义函数末尾不能加“;”,定义函数必须要有形式参数的类型说明,可以写为double fun(int,int)
填空题
4-1
下列程序的输出结果为 2 3 5 7
#include <stdio.h>
int fun3(int m);
int main(void)
{ int n;
for (n = 1; n < 10; n++)
if (fun3(n) == 1) printf("%d ", n); /* %d后有1个空格 */
return 0;
}
int fun3(int m)
{ int i;
if (m == 2 || m == 3) return 1;
if (m < 2 || m % 2 == 0) return 0;
for (i = 3; i < m; i = i + 2)
if (m % i == 0) return 0;
return 1;
}
4-2 下列程序的运行结果是 4 6。
#include <stdio.h>
int f(int x)
{ static int y=1;
x+=y;
y++;
return x;
}
int main(void)
{ int k;
k=f(3);
printf("%d %d\n",k,f(k)); //%d和%d之间只有1个空格
return 0;
}
程序填空题
5-1 逆序输出整数
输入一个整数,将它逆序输出。要求定义并调用函数reverse(long number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。请将函数补充完整。运行示例如下:
-123 (输入整数-123)
-321 (逆序后输出-321)
long reverse(long number)
{
int flag;
long res=0;
flag = number < 0 ? -1 : 1;
if(number<0)
number = - number;
while(number != 0){
res = res*10+number%10;
number /= 10;
}
return flag*res;
}
5-2 判断正整数的各位数字是否按从小到大排列
输入一批正整数(以零或负数为结束标志),判断每个数从高位到低位的各位数字是否按值从小到大排列。要求定义和调用函数fun(m)判断m中各位数字是否按值从小到大排列,满足条件返回1,否则返回0。
#include <stdio.h>
int fun (int m);
int main (void)
{
int n;
scanf ("%d", &n);
while (n > 0) {
if (fun(n)) {
printf("yes\n");
}else{
printf("No\n");
}
scanf("%d", &n);
}
return 0;
}
int fun (int m)
{
int cur_digit, old_digit = 10;
if (m < 0){
m = -m;
}
do{
cur_digit = m % 10;
if( cur_digit >= old_digit){
return 0;
}
old_digit =cur_digit;
m=m/10;
}while (m != 0);
return 1;
}
5-3 输出Yes或No
输入字符'y'或'Y',则在屏幕上输出字符串"Yes.";输入其它字符,则在屏幕上输出字符串"No."。要求定义和调用函数YesNo(ch),当ch为'y'或'Y'时输出"Yes.",当ch为其它字符时输出"No."。
#include <stdio.h>
void YesNo (char ch);
int main(void)
{
char ch;
ch = getchar();
YesNo(ch);
return 0;
}
void YesNo (char ch)
{
switch(ch){
case 'y':
case 'Y':printf("Yes.");break;
default:printf("No.");break;
}
}