最近在复习C语言基础,做这本书的习题.可惜没搜索到答案,就自己做了.
题目用电脑(mac环境下的xcode的c语言测试控制台)敲过的,就会直接给出来,不做标记.(意味着:基本不会错)
如果是自己做的,就会在前面标记一个 * .(意味着:个人水平所限,有可能是错的,嘻嘻,请指教)
1.以下述叙不正确的是___。
A.一个C源程序可以由一个或多个函数组成
B.一个C源程序必须包含一个main()函数
C.C程序的基本组成单位是函数
D.在C程序中注释说明只能位于一条语句的后面
答案: D
2.C语言中规定:在一个源程序中main()函数的位置___。
A.必须在最开始 B.必须在系统调用的库函数的后面
C.可以任意 D.必须在最后
答案: C
3.若程序中定义了以下函数
double myadd(double a,double b)
{return(a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是___。
A.double myadd(double a,b); B.double myadd(double,double);
C.double myadd(double b,double a); D.double myadd(double x,double y);
答案: A
4.有以下程序
程序的运行结果是___。
A.函数调用出错 B.8 C.9 D.7
答案: D
5.下列叙述错误的是___。
A.主函数中定义的变量在整个程序中都是有效的
B.复合语句中定义的变量只在该复合语句中有效
C.其他函数中定义的变量在主函数中不能使用
D.形参是局部变量
答案: A
6.若函数的类型和return语句中的表达式的类型不一致,则___。
A.编译时出错
B.运行时出现不确定的结果
C.不会出错,且返回值的类型以return语句中表达式的类型为准
D.不会出错,且返回值的类型以函数类型为准
答案: A
7.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是___。
A.3 B.4 C.5 D.7
- 答案: A
ivy:不是很会这道题,求指教
8.设函数fun()的说明形式为void fun(int,int*);,利用函数fun()对整数5和整型变量j做实参进行调用,正确的调用形式是___。
A.fun(&5,&j) B.fun(5,j) C.fun(5,&j) D.fun(&5,j)
答案: C
9.下面的函数定义正确的是___。
*答案: A,D
ivy:在电脑上试了一下,ABCD都可以通过编译,B和C有点警告就是了;D就是个隐式转换,个人感觉问题不太大
10.C语言中形参的默认存储类型是___。
A.自动(auto) B.静态(static) C.寄存器(register) D.外部(extern)
答案: A
11.以下for语句构成的循环执行了___次。
A.5 B.6 C.8 D.9
答案: C
ivy:直接替换为:(2+1+1)*2 + 1/2为8,所以是C
二、程序分析题
1.写出程序的运行结果。
答案: m=5,n=3
2.写出程序的运行结果。
答案:
yes!5
not!6
ivy:首先说明下:这道题会编译报错,因为isprime里面的i是在for里面初始化的,除非把isprime函数里面的i提前声明一下:
int isprime (int m){
int i;
for ( i =2; m%i!=0; i++);
return (i==m);
} //这样还会得到一个警告,说for没有循环体
然后会得到这个答案
3.写出程序的运行结果。
答案: 5 7
第三编程题就不做了,有需要的朋友留言我再做