c语言源程序输入483应输出字符串384,2011年计算机二级C语言程序填空题及答案解析精选2...

【3.21】下面程序的功能是计算S= k! 。

k=0

long fun(int n)

{ int i;

long s;

for(i=1;i ① ;i++)

s*=i;

return( ② );

}

main()

{ int k,n;

long s;

scanf("%d",&n);

s= ③ ;

for(k=0;k<=n;k++)

s+= ④ ;

printf("%ld\n",s);

}

【3.22】下面程序的功能是显示具有n个元素的数组s中的最大元素。

#define N 20

main()

{ int i,a[N];

for(i=0;iscanf("%d",&a[i]);

printf("%d\n", ① );

}

fmax(int s[],int n)

{ int k,p;

for(p=0,k=p;pif(s[p]>s[k]) ② ;

return(k);

}

【3.23】下面程序的功能是由键盘输入n,求满足下述条件的x、y:

nx和ny的末3位数字相同,且x≠y,x、y、n均为自然数,并使x+y为最小。

#include

pow3(int n,int x)

{ int i, last;

for(last=1,i=1;i<=x;i++ )

last= ① ;

return(last);

}

main()

{ int x,n,min,flag=1;

scanf("%d", &n);

for(min=2;flag;min++)

for(x=1;xif( ② && pow3(n,x)==pow3(n,min-x))

{ printf("x=%d,y=%d\n", x, min-x );

③ ;

}

}

【3.24】下面的程序是用递归算法求a的平方根。求平方根的迭代公式如下:

#include

double mysqrt( double a, double x0 )

{ double x1, y;

x1 = ① ;

if( fabs(x1-x0)>0.00001 )

y = mysqrt( ② );

else y = x1;

return( y );

}

main()

{ double x;

printf("Enter x: ");

scanf("%lf", &x);

printf("The sqrt of %lf=%lf\n", x, mysqrt( x, 1.0) );

}

【3.25】以下程序是计算学生的年龄。已知第一位最小的学生年龄为10岁,其余学生的年龄一个比一个大2岁,求第5个学生的年龄。

#include

age( int n )

{ int c;

if( n==1 ) c=10;

else c= ① ;

return(c);

}

main()

{ int n=5;

printf("age:%d\n", ② );

}

【3.26】下面的函数sum(int n)完成计算1~n的累加和。

sum(int n)

{ if(n<=0)

printf("data error\n");

if(n==1) ① ;

else ② ;

}

【3.27】下面的函数是一个求阶乘的递归调用函数。

facto(int n)

{ if( n == 1 ) ① ;

else return( ② );

}

【3.28】组合问题,由组合的基本性质可知:

(1) C(m,n)=C(n-m,n)

(2) C(m,n+1)=C(m,n)+C(m-1,n)

公式(2)是一个递归公式,一直到满足C(1,n)=n为止。当n<2*m时,可先用公式(1) 进行简化,填写程序中的空白,使程序可以正确运行。

#include"stdio.h"

main()

{ int m,n;

printf("Input m,n=");

scanf("%d%d", &m, &n);

printf("The combination numbeers is %d\n", combin(m,n));

}

combin( int m, int n)

{ int com;

if( n<2*m ) m=n-m;

if( m==0 ) com=1;

else if(m==1) ① ;

else ② ;

return(com);

}

【3.29】下列函数是求一个字符串str的长度。

int strlen( char *str )

{ if( ① ) return (0);

else return ( ② );

}

【3.30】用递归实现将输入小于32768的整数按逆序输出。如输入12345,则输出54321。

#include"stdio.h"

main()

{ int n;

printf("Input n : ");

scanf("%d", ① );

r(n);

printf("\n");

}

r( int m )

{ printf("%d", ② );

m = ③ ;

if( ④ )

⑤ ;

}

【3.31】输入n值,输出高度为n的等边三角形。例如当n=4时的图形如下:

*

***

*****

*******

#include

void prt( char c, int n )

{ if( n>0 )

{ printf( "%c", c );

① ;

}

}

main()

{ int i, n;

scanf("%d", &n);

for( i=1; i<=n; i++ )

{ ② ;

③ ;

printf("\n");

}

}

【3.32】下面的函数实现N层嵌套平方根的计算。

double y(double x, int n)

{ if( n==0 )

return(0);

else return ( sqrt(x+( ① )) );

}

【3.33】函数revstr(s)将字符串s置逆,如输入的实参s为字符串"abcde", 则返回时 s 为字符串"edcba"。递归程序如下:

revstr( char *s )

{ char *p=s, c;

while(*p) p++;

① ;

if(s{ c=*s;

*s=*p;

② ;

revstr(s+1);

③ ;

}

}

如下是由非递归实现的revstr(s)函数:

revstr (s)

char *s;

{ char *p=s, c;

while( *p ) p++;

④ ;

while( s

{ c=*s;

⑤ = *p;

*p-- = c;

}

}

【3.34】下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA"。

void invent(char *str,int n)

{ char t;

t=*str; *str=*(str+n-1); *(str+n-1)=t; if( n>2 ) invent ( ① ,n-2);

else ② ;

}

【3.35】从键盘上输入10个整数,程序按降序完成从大到小的排序。

#include

int array[10];

sort( int *p, int *q )

{ int *max, *s;

if( ① )

return;

max=p; for( s=p+1; s<=q; s++)

if( *s > *max )

② ; swap( ③ );

sort( ④ ); }

swap( int *x, int *y ) { int temp;

temp=*x;

*x=*y;

*y=temp;

}

main()

{ int i; printf("Enter data :\n"); for( i=0; i<10; i++)

scanf("%d", &array[i]); sort( ⑤ );

printf("Output:");

for( i=0; i<10; i++)

printf("%d ", array[i]);

}

【3.36】下面函数的功能是将一个整数存放到一个数组中。存放时按逆序存放。例如:483存放成"384"。

#include

void convert(char *a, int n)

{ int i;

if((i=n/10) !=0 )

convert( ① , i );

*a = ② ;

}

char str[10]= " ";

main()

{ int number;

scanf("%d", &number);

convert( str, number );

puts(str);

}

【3.37】下面程序的功能是实现数组元素中值的逆转。

#include

main()

{ int i,n=10,a[10]={1,2,3,4,5,6,7,8,9,10};

invert(a,n-1);

for(i=0;i<10;i++)

printf("M",a[i]);

printf("\n");

}

invert(int *s,int num)

{ int *t,k;

t=s+num;

while( ① )

{ k=*s;

*s=*t;

*t=k;

② ;

③ ;

}

}

【3.38】下面程序通过指向整型的指针将数组a[3][4] 的内容按3行×4列的格式输出,请给printf( )填入适当的参数,使之通过指针p将数组元素按要求输出。

#include

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p=a;

main()

{ int i,j;

for(i=0;i<3;i++ )

{ for(j=0;j<4;j++ )

printf("M ", ① );

}

}

【3.39】下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。

#include

main ( )

{ char str[81], *sptr;

int i;

for(i=0;i<80;i++ )

{ str[i]=getchar( );

if(str[i]== '\n') break;

}

str[i]= ① ;

sptr=str;

while( *sptr )

putchar( *sptr ② );

}

【3.40】下面函数的功能是将字符变量的值插入已经按ASCII码值从小到大排好序的字符串中。

void fun(char *w,char x,int *n)

{ int i,p=0;

while(x>w[p]) ① ;

for(i=*n;i>=p;i--) ② ;

w[p]=x;

++*n;

}

以上是上海育路网为上海计算机考试收集整理的上海计算机资料,更多资料请点击上海计算机网

本文结束

特别声明:①凡本网注明稿件来源为"原创"的,转载必须注明"稿件来源:上海育路网",违者将依法追究责任;

②部分稿件来源于网络,旨在与用户分享信息,如有侵权,请联系我们沟通解决。

有用

25人觉的有用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值