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));
}