11.11 编写程序outch,程序读入一行字符,根据命令行中的参数进行不同的输出。若有以下命令行:outch -2 ;程序对所读入的一行字符输出最后两个字符。若有以下命令行:outch +6;程序对所读入的一行字符输出开头6个字符。若命令行中没有参数,则隐含规定输出最后十个字符。为简单起见,命令行的参数中只包含一位数字。
#include<stdio.h>
#include<string.h>
main(int a,char *c[])
{
char b[]="abcdefghijkl";
int i,n;
printf("a=%d",a);
printf("\n");
n=*(c[1]+1)-'0';
if(a==1)
{ for(i=strlen(b)-10;i<=strlen(b)-1;i++)printf("%c",b[i]);
}
else
{ if((*c[1])=='+')for(i=0;i<n;i++)printf("%c",b[i]);
if((*c[1])=='-')for(i=strlen(b)-n;i<=strlen(b)-1;i++)printf("%c",b[i]);
}
printf("\n");
}
11.12 请写递归函数,把输入的一个整数转换成二进制数输出。
#include<stdio.h>
#include<string.h>
void outninary(int x)
{ int y;
y=x%2;
if(x!=0){outninary(x/2);printf("%d",y);}
}
main()
{ int x;
printf("请输入一个整数:\n");scanf("%d",&x);
outninary(x);
}
11.13 请用递归算法,求1+2+3+···+n,n由键盘输入。
#include<stdio.h>
int sum(int x)
{ int t;
if(x==1)return 1;
else { t=x+sum(x-1);
return t;
}
}
main()
{ int x,y;
printf("请输入一个数字:\n");scanf("%d",&x);
y=sum(x);
printf("sum=%d\n",y);
}
11.14 请用递归算法,求Fibonacci数列。求n阶Fibonacci数列的公式如下:公式略。
#include<stdio.h>
int f(int n)
{ int t;
if(n==0||n==1)return 1;
else { t=f(n-1)+f(n-2);
return t;
}
}
main()
{ int n,y;
printf("请输入阶数:\n");scanf("%d",&n);
y=f(n);
printf("f(%d)=%d\n",n,y);
}
|