if (n==0) return ; else{ print(n/10); printf(\ return ;
} }
A.5 3 7 8 B.8 7 3 5 C.3 5 7 8 D.8 7 5 3
*6.根据下面函数f,选出f(f(3))的值是( )。
int f(int x)
{
static int k=0; x=x+k;
k--;
return x; }
A.5 B.3 C.2 解:(1)B (2)D (3)B (4)A (5)A 二、写出下列程序的输出结果 *1.
#include
int f1(int,int),f11(int); void f2(int); void main() {
int i,j;
for(i=0;i<5;i++) { f2((5-i)*3);
for(j=0;j<=i;j++)
printf(\ putchar('\\n'); } }
int f1(int m,int n) {
return f11(m)/f11(n)/f11(m-n); }
int f11(int k) {
if(k<=1)
return 1;
return k*f11(k-1); }
void f2(int n) {
for(int i=1;i<=n;i++) putchar(' ');
}
解: 1 1 1 1 2 1
28
D.4
(6)C 1 3 3 1 1 4 6 4 1 *2.
#include
if(m%n==0) return n;
else return f(n,m%n); }
void main() {
printf(\
}
解:24 3.
#include
void fun(int a,int b,int c,int add,int mult) {
add=a+b+c; mult=a*b*c;
printf(\}
void main() {
int x,y; x=y=0;
fun(9,12,-4,x,y);
printf(\ }
解:add=17 mult=-432
add=0 mult=0 4.
#include
void fun(int a,int b,int c,) {
add=a+b+c; mult=a*b*c;
printf(\}
void main() {
fun(9,12,-4);
printf(\ }
解:add=17 mult=-432
add=17 mult=-432 5.
#include
void main() {
int i;
void fun();
29
for(i=1;i<=4;i++){ a++;
printf(\ fun(); } }
void fun() {
int a=0;
a++;
printf(\}
解:In main: a= 1In fun:a=1
In main: a= 2In fun:a=1 In main: a= 3In fun:a=1 In main: a= 4In fun:a=1 6.
#include
int x=2,i; int f(int x);
for(i=0;i<3; i++)
printf(\}
int f(int x) {
int y=0; static z=0;
y++; z++;
return(x+y+z); }
解: 4 5 6
三、程序填空题
1.输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列。其中input()返回输入的数据,且保证输入的数据是一个正整数。fun1()函数是判断正整数n是否按数字从小到大排列。
#include
int fun1(int m); void main() {
int n;
if(fun1(n)==1)
printf(\中各位数字按是从小到大排列\\n\}
int input()
30
{
int n;
printf(\请输入n:\\n\ scanf(\ if (n>0) ; do{
printf(\必须正整数,请重新输入 n:\\n\ scanf(\ }while(n<0); return n; }
int fun1( ) {
int k;
k=m;
while(m!=0)
if( m/10>k) return 0; else { k=m;
}
return 1; }
解:n=input(); return n int m m=m/10
2.输入一个末尾数非0的正整数,输出它的逆序数。其中,input是数据输入函数,reverse是数据逆序函数。
#include
long reverse(long n); void main() {
int n;
n=input();
printf(\逆序数是:%d\\n\}
long input() {
long n;
printf(\请输入n:\\n\ scanf(\
if ( ) return n ; do{
printf(\必须正整数,且末尾数非0,请重新输入 n:\\n\
}while(n<0||n==0); return n; }
long reverse(long n) {
long k=0; while(n){ n/=10; }
31