c语言程序设计例题ppt,C语言程序设计精品课件试题8

【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("%4d",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("%4d ", ① );

}

}

【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;

}

【3.41】下面程序的功能是从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符。

#include

strmerge(a,b,c)

char *a,*b,*c;

{ char t,*w;

w=c;

while( *a!= '\0' ① *b!='\0'

)

{ t= ②*a ? *b++ : ( ③

);

if( *w ④ '\0' ) *w=t;

else if( t ⑤ *w)

*++w=t;

}

while( *a != '\0' )

if( *a != *w )

*++w=*a++;

else a++;

while( *b != '\0')

if( *b != *w )

*++w=*b++;

else b++;

*++w = ⑥ ;

}

strsort( char *s )

{ int i,j,n;

char t,*w;

⑦ ;

for( n=0;*w != '\0'; ⑧

)

w++;

for( i=0;i

)

for( j=i+1;j

)

if( s[i]>s[j]

)

{ ⑨ }

}

main( )

{ char

s1[100],s2[100],s3[200];

printf("\nPlease Input First

String:");

scanf("%s",s1);

printf("\nPlease Input Second

String:");

scanf("%s",s2);

strsort(s1);

strsort(s2);

⑩ = '\0';

strmerge(s1,s2,s3);

printf("\nResult:%s",s3);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值