A) 一个C程序必须由多个函数组成 B)一个C源程序必须包括宏命令
C)C源程序的宏命令以分号标明命令行的结束 D) C注释可以位于源程序的任意位置
二、判断题(正确用×错误用√标记)
【习题4-8】宏替换时先求出实参表达式的值,然后代入形参求值。 ( ) 【习题4-9】.在C语言中,函数不可以嵌套定义,但宏可以嵌套定义。( ) 【习题4-10】所有的递归问题都可以用非递归算法来实现。 ( ) 【习题4-11】在C语言中,不同函数体内定义的变量可以同名。 ( )
【习题4-12】多个文件组成的C语言程序,其中各个文件中可以定义同名函数。 ( )
【习题4-13】在C语言中,一个函数只能被它所在文件的其它函数调用,称之为内部函数。 ( )
三、阅读程序写结果或填空
【习题4-14】下列程序执行后的输出结果是_________。 int fun(int k) {static int s=0;
while(k>0) s=s+k--; return s; } main( ) { int s,t;
s=fun(4);t=fun(5);
printf(\}
【习题4-15】下列程序执行后的输出结果是_________。 #include \int a=0; main( ) {int i;
for(i=1;i<=3;i=i+1) { static int b=0;
int c=1; a++;b++;c++;
printf(\} }
【习题4-16】下列程序执行后的输出结果是_________。
#include \int func(int n) {int s;
if(n<=1) s=1;else s=2+func(n-1); return s; }
main( )
{ int k=1, s=0;
while(k<=4) {s=s+func(k);k++;} printf(\}
【习题4-17】下列程序执行后的输出结果是_________。 #define M(a,b) (a)>(b)? (a):(b) main( )
{int i=10,j=15;
printf(“%d\\n”,10*M(i,j)); }
【习题4-18】下列程序的输出结果是:
#include “stdio.h” #define SQR(x) x*x main() {int a,k=3;
a=SQR(k+1); printf(“%d”,a); }
【习题4-19】以下程序运行的结果是 long f(int n) {long s;
if(n= =1||n= =2) s=2; else s=n+f(n-1); return(s); }
main( ) { long x; x=f(4);
printf(\ }
【习题4-20】下列程序的输出结果是________? #define Tap(x) 2*x+1 main( )
{int a=6,k=2,m=1; a+=Tap(k+m); printf(“%d”,a);
}
【习题4-21】在以下程序的下划线处填写适当的语句使程序执行的结果4,16,256。
test( )
{ int x=2; x=x*x;printf(\ }
main( )
{test( );test( );test( );}
【习题4-22】下列程序的输出结果是 #include
{static int a=10; int b=++a;
return(a+b+c);} main( )
{printf(“%d”,f(f(5)));}
【习题4-23】以下函数调用语句中实参的个数是________?
Sub1((x1,x2),(x3,x4,x5),x6)
四、程序设计题
【习题4-24】编写一个递归函数计算 1+X+2X2+3X3+???+nXn
1 n=0
F(n,x)=
F(n-1,x)+n Xn n>0
【习题4-25】编写递归程序的输出如右所示的结果
* *** *****
【习题4-26】编写递归程序的输出杨辉三角形 (?1)N?1【习题4-27】编写程序计算: S= ? 直到N!>106为止。
N?1N!
【习题4-28】编写程序计算1~100之间的素数,并按照由大到小的次序输出。
习题五
一、单项选择题
【习题5-1】在C语言中,数组名代表了__________。
A) 数组的全部元素值 B)数组中第一个元素的值 C) 数组中元素的个数 D)数组中第一个元素的地址
【习题5-2】不能把字符串\赋予数组a的语句是_______ 。
A)char a[8]={'c','h','i','n','a'} B)char a[]=\
C)char a[8];a=\ D)char a[8];strcpy(a,\
【习题5-3】设有如下定义语句:
int a[10]={1,2,3,4,5,6,7,8,9,10};
则下面是正确的数组元素的是 。
A)a[a[2]+1] B)a(4) C)a[10] D)a[a[4]+5]
【习题5-4】设a,b是两个已定义的字符数组,则下面语句中正确的是 。
A)gets(a,b); B)scanf(\C)scanf(\ D)gets(\
【习题5-5】设有定义:
int j=2,a[]={1,2,3,4,5};
则数组a[j]的值为 。
A)2 B)3 C)4 D)5
【习题5-6】C语言中,一维数组下标的最小值是 。
A)随便 B)根据说明 C)1 D)0
【习题5-7】下面描述中不正确的是 。
A)字符数组中可以存放字符串
B)可以对字符数组进行整体输入、输出 C)可以对任何数组进行整体输入、输出
D)不能通过赋值运算符\对字符数组进行整体赋值
【习题5-8】若有说明:
char a[]=\
char b[]={'A','B','C','D','E','F'};
则下面描述中正确的是 。
A) a数组长度比b数组长 B) a和b不相同,a是指针数组 C) a数组和b数组长度相同 D) a和b完全相同
二、阅读程序写结果或填空题 【习题5-9】设有定义语句:
char c[][5]={\
则数组c是 ⑴ 维数组,数组中共有 ⑵ 个元素,数组元素c[0][1]= ⑶ 。
【习题5-10】设有定义语句:
char s[15]={\
则表达式strlen(s)的值为 。
相关推荐: