pad=sum++; pad++; ++pad;
printf(\}
A.7 B.6 C.5 D.4 10.以下程序的运行结果为( D )。
#include
int a=2,b=10;
printf(\}
A.a=%2,b= B.a=2,b=10 C.a=%%d,b=%%d D.a=%d,b=%d
11.为了避免嵌套的if-else语句的二义性,C语言规定else总是( C )。
A.与缩排位置相同的if组成配对关系 B.与在其之前未配对的if组成配对关系 C.与在其之前未配对的最近的if组成配对关系 D.与同一行上的if组成配对关系
12.对于for (表达式1; ;表达式3)可理解为( B )。
A.for (表达式1; 0 ;表达式3) B.for (表达式1; 1 ;表达式3) C.for (表达式1;表达式1;表达式3) D.for (表达式1;表达式3;表达式3)
二、程序填空
1.下面程序的功能是计算n!。
#include
int i, n; long p;
printf ( \ scanf (\ p= 1 ; for (i=2; i<=n; i++)
p*=i或p=p*i ; printf(\}
2.下面程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高和最低成绩,当输入负数时结束输入。
#include
float score, max, min;
printf ( \ scanf (\ max=min=score;
while ( score>=0 ) {
if (score>max) max=score;
if ( score printf(\} 3.下面程序的功能是:计算y= #include float x , y=0, fz=-1, fm=-1, temp=1; printf ( \ scanf (\ while ( abs(temp)>0.00001 ) { fz= 【6】-fz*x ; fm=fm+2; temp=fz/fm; y+=temp; } printf(\} 的值。要求从键盘上输入x的值,精度控制在0.00001内。 4.下面的程序完成两个数的四则运算。用户输入一个实现两个数的四则运算的表达式,程序采用switch语句对其运算进行判定后执行相应 的运算并给出结果。 #include float x,y; char op; printf(\ scanf(\ 【7】switch (op) { case '+': printf(\ 【8】x,op,y,x+y ); 【9】break ; case '-': printf(\ break; case '*': printf(\ break; case '/': if ( 【10】(y>=-1e-6)&&(y<=1e-6) ) printf(\ else printf(\ break; default:printf(\ } } 题解4 函 数 4.1 习题 一、选择题 1.C语言中函数形参的缺省存储类型是( B )。 A.静态(static) B.自动(auto) C.寄存器(register) D.外部(extern) 2.函数调用语句function((exp1,exp2), 18)中含有的实参个数为( C )。 A.0 B.1 C.2 3.下面函数返回值的类型是( D )。 square(float x) { return x*x; } A.与参数x的类型相同 B.是void型 C.无法确定 D.是int型 4.C语言规定,程序中各函数之间( D )。 A.不允许直接递归调用,也不允许间接递归调用 B.允许直接递归调用,但不允许间接递归调用 D.3 C.不允许直接递归调用,但允许间接递归调用 D.既允许直接递归调用,也允许间接递归调用 5.一个函数返回值的类型取决于( C )。 A.return语句中表达式的类型 B.调用函数时临时指定 C.定义函数时指定或缺省的函数类型 D.调用该函数的主调函数的类型 6.下面叙述中,错误的是( C )。 A.函数的定义不能嵌套,但函数调用可以嵌套 B.为了提高可读性,编写程序时应该适当使用注释 C.变量定义时若省去了存储类型,系统将默认其为静态型变量 D.函数中定义的局部变量的作用域在函数内部 7.在一个源程序文件中定义的全局变量的有效范围为( C )。 A.一个C程序的所有源程序文件 B.该源程序文件的全部范围 C.从定义处开始到该源程序文件结束 D.函数内全部范围 8.某函数在定义时未指明函数返回值类型,且函数中没有return语句,现若调用该函数,则正确的说法是( D )。 A.没有返回值 B.返回一个用户所希望的值 C.返回一个系统默认值 D.返回一个不确定的值 9.函数swap(int x, int y)可实现对x和y值的交换。在执行如下定义及调用语句后,a和b的值分别为( B )。 int a=10, b=20; swap (a,b ); A.10和10 B.10和20 C.20和10 D.20和20 10.下面错误的叙述是( D )。 A.在某源程序不同函数中可以使用相同名字的变量 B.函数中的形式参数是局部变量 C.在函数内定义的变量只在本函数范围内有效 D.在函数内的复合语句中定义的变量在本函数范围内有效 二、程序填空 1.求s=1!+2!+3!+…+10!之和。 程序如下: #include int k=1; long int p=1; for(k=1; k<=n; k++) 【1】p=p*k; ; return p; } main( ) { int n; float sum=0; for(n=1;n<=10;n++) 【2】sum=sum+factorial(n); ; printf(\} 2.以下函数用以求x的y次方。 double fun (double x, int y) { int i; double m=1; for ( i=1; i 【3】<=y或 三、阅读程序并写出运行结果 1.下面程序运行的结果是_____2,4,,6,8________: #include int n; for(n=1; n<=MAX_COUNT; n++) fun( ); } void fun( ) { static int k; k=k+2; printf (\} 4.下面程序运行的结果是___8,17______: #include static int m=0, n=2; n+=m+1; m=n+x+y; return m; }