11.11 编写程序 outch ,程序读入一行字符,根据命令行中的参数进行不同的输出。若

有以下命令行:

outch -2

程序对读入的一行字符输出最后两个字符。若有以下命令行:

outch +6

程序对所读入的一行字符输出开头 6 个字符。若命令行中没有参数,则隐含规定

输出最后 10 个字符。为简单起见,命令行中的参数中只包含一位数字。

 

※程序如下※

#include<stdio.h>

#include<string.h>

main(int argc,char *argv[])

{

int i;

char s[64];

printf("Enter a string:\n");

gets(s);

while(argc>0)

{

if(argc==1)

{

for(i=strlen(s)-10;i<strlen(s);i++)

printf("%c",s);

break;

}

if(argv[1][0]=='-')

{

for(i=strlen(s)-(argv[1][1]-'0');i<strlen(s);i++)

printf("%c",s);

break;

}

if(argv[1][0]=='+')

{

for(i=0;i<(argv[1][1]-'0');i++)

printf("%c",s);

break;

}

}

}

——————————————————————————————————————

11.12 请写递归函数,把输入的一个整数转换成二进制数输出。

 

※程序如下※

 

#include<stdio.h>

dec_bin(int n,int a[])

{

static int i=0;

if(n==0||n==1)

{

a=n;

return i;

}

else

{

a[i++]=n%2;

return dec_bin(n/2,a);

}

}

 

main()

{

int i,j,n,a[64];

printf("Enter n (integer)\n");

scanf("%d",&n);

j=dec_bin(n,a);

for(i=j;i>=0;i--)

printf("%d",a);

}

——————————————————————————————————————

11.13 请用递归算法,求 1+2+3+...n,n 由键盘输入。

 

※程序如下※

 

fun(int n)

{

int sum;

if(n==1)

return 1;

else

{

sum=n+fun(n-1);

return sum;

}

}

 

main()

{

int n,sum;

clrscr();

printf("Enter n(1+2+3+...+n):\n");

scanf("%d",&n);

sum=fun(n);

printf("sum=%d",sum);

}

——————————————————————————————————————

11.14 请用递归函数,求裴波拉契级数,求 n 阶裴波拉契级数的公式如下。

 

※程序如下※

#include<stdio.h>

fac(int n)

{

long t;

if(n==0||n==1)

return 1;

else

{

t=fac(n-1)+fac(n-2);

return t;

}

}

main()

{

int n;

printf("Enter n :\n");

scanf("%d",&n);

printf("%ld",fac(n));

}