4種不同編程算法實現輸入任意整數逆序輸出,看好了!

鏡音雙子 C語言 數學 技術 美佳 2017-04-25

我們學習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;

}

大家好好學習吧,歡迎提出意見,或者貼出你自己的代碼,或者還有沒有其他算法呢

相關推薦

推薦中...