作业题1:
任意输入一个整数如 123456(或-123456),逆序输出;654321(或-654321)
不知道 比如 输入1230 输出 是 321 还是 0321 不过输入0123就只能输出321了, 如果要实现0123-3210,我想可以用指针实现;
不单单用了直接的递归,还照顾了一下时间效率;
就这么实现;i*i<=n也可以换成i<=n;不过没必要,会浪费时间;
任意输入一个整数如 123456(或-123456),逆序输出;654321(或-654321)
-----------------------分割线-----------------------
#include<stdio.h>
int main(void)
{
int num;
while(scanf("%d",&num)!=EOF)
{
if(num==0)printf("0\n");
else {
int a=0,b=0,Q=0,p=0;
while(num%10==0)
{
p++;
num/=10;
}
if(num<0){
Q=1;
num=-num;
}
while(num!=0)
{
b=num%10;
a=a*10+b;
num=num/10;
}if(Q)printf("-");
while(p--)printf("0");
printf("%d\n",a);
}
}
}
不知道 比如 输入1230 输出 是 321 还是 0321 不过输入0123就只能输出321了, 如果要实现0123-3210,我想可以用指针实现;
作业题2:
费式数列(Fibonacci)的前两项为1、1,之后的每一项为前两项之和,即Fn =Fn-1 +Fn-2,费式数列的前10项为:1 、1、2、3、5、8、13、21、34、55。输入一个正数数n ( n <= 40 ),计算出费式数列的第n项之值并输出。
要求:利用递归函数
-----------------------分割线-----------------------
#include<stdio.h>
int fun(int n);
int t[40];
int main(void)
{
t[0]=t[1]=1;
int n;
while(scanf("%d",&n)!=EOF&&n<40&&n>0)
{
t[n-1]=fun(n);
printf("%d\n",t[n-1]);
}
}
int fun(int n)
{
if(t[n-1])return t[n-1];
else return fun(n-1)+fun(n-2);
}
不单单用了直接的递归,还照顾了一下时间效率;
作业题3:
编写程序,输入一个正整数N,如果N 是质数则输出Y,否则输出N。:
要求:利用自定义函数P(N)检查N 是不是质数
#include<stdio.h>
char fun(int n);
int main(void)
{
int n;
while(scanf("%d",&n)!=EOF&&n>0)
printf("%c\n",fun(n));
}
char fun(int n)
{
int i;
for(i=2;i*i<=n;i++)
if(n%i==0)return 'N';
return 'Y';
}
就这么实现;i*i<=n也可以换成i<=n;不过没必要,会浪费时间;