任意輸入一個整數如 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;不過沒必要,會浪費時間;