我們學習C語言的時候,想必是遇到過諸如:輸入一個整數將其倒著輸出 類似的編程題目。今天我倒是用了4種不同的編程思維,或是不同算法實現了“輸入一個整數將其倒著輸出 例如:123456 輸出 654321,話不多說,我上代碼,願與各位看官交流交流。
(1)。編程思路: 利用字符數組
代碼如下:
#include "stdio.h"
#include "string.h"
int main(void)
{ int a,i;
char f[30]; //大小由程序需要定義
printf("輸入任意整數:");
gets(f); //字符串輸入函數
a=strlen(f); //strlen();函數為計算數組實際長度,不包括*\0*
puts("倒序輸出為:");
for(i=a;i>=0;i--) //循環從數組末尾(*\0*前面)開始輸出
printf("%c",f[i]);
return 0;
}
(2)數學純計算方法加循環
代碼如下:
#include <stdio.h>
int main(void)
{
long num;
printf("請輸入任意正整數:");
scanf("%d",&num);
while (num > 0) //num大於0就不停循環
{
printf("%d",num%10); //num%10 ,輸出個位
num /= 10; //除以10
}
return 0;
}
(3)。利用函數遞歸方法來實現
代碼如下:
# include "stdio.h"
void f(long k) //定義了遞歸函數
{
printf("%ld", k%10);
k = k/10;
if (k>0)
f(k) ; //重點:用到了遞歸
}
int main(void)
{
long n; //定義了一個long型
printf("輸入任意正整數 : ");
scanf("%ld", &n);
f(n); //調用函數f
printf("\n");
return 0;
}
(4)用指針+函數+字符數組方法實現
代碼如下:
#include "stdio.h"
#include "string.h"
void f(char* arr) //定義函數f();
{ int i;
int len = strlen(arr); //計算arr數組的有效長度
char* p=&arr[len-1]; //定義了一個char類型的指針並指向最後一個字符的地址
for( i=0;i<len;i++)
{
printf("%c",*p--); //實現用指針方法輸出
}
p=NULL; //指針為空
}
int main(void)
{ char a[30];
printf("輸入任意正整數:");
gets(a);
f(a); //調用函數f(a);
return 0;
}
大家好好學習吧,歡迎提出意見,或者貼出你自己的代碼,或者還有沒有其他算法呢