c語言實戰 逆序一個三位數


題目:給定一個正的三位整數,比如123,輸出321,但如果是700,輸出必須是7不能是007

思路是怎么樣的呢?

假設這個正三位數是m,它的百分位是c,十分位是b,個位是a,那么就存在下面的等式。

m=c*100+b*10+a*1

現在已知了m,只要知道c、b、a這三個數的值,那么我們直接按abc的順序輸出不就給逆序了嗎?

那么怎么知道這三個數的值呢?

首先c是最好求的

c=m/100   //整除的結果就是百位數

利用相似的思路b的值也比較好求。

b=(m%100)/10  //m對100取余之后剩下的就是十位數和個位數的和,和在整除10就是十位數了。

一個等式三個未知數,知道了其中兩個,那么第三個就知道了。

a=m-c*100-b*10

恩,解決了啊,寫程序。

 

    int m = 0;
    int a = 0;
    int b = 0;
    int c = 0;

    scanf_s("%d",&m);

    c = m / 100;
    b = (m % 100) / 10;
    a = m - (c*100)-(b*10);

    printf("%d%d%d",a,b,c);

 

運行之后,發現沒有什么大問題,只是針對700這種情況,輸出的還是007,怎么辦?怎么辦,很急,我一開始還想利用字符輸出的,程序崩潰了,沒成功。后來一想,既然已經知道了三個位置的數值了,那么直接三個位置的數加一下就行了嘛,反正結果沒變,比如輸入700,那么c等於7 b等於0 a等於0,那么逆序之后的這個數不就是0*100+b*10+c*1,那么結果不就是7嘛,

最后改成這樣就可以了。

        int m = 0;
	int a = 0;
	int b = 0;
	int c = 0;

	scanf_s("%d",&m);

	c = m / 100;
	b = (m % 100) / 10;
	a = m - (c*100)-(b*10);

	printf("%d",a*100+b*10+c);        

  

 

2018.9.13更新

溫故而知新,又寫了一遍。

int main()
{
	//用來保存用戶輸入的數據
	int input = 0;
	
	//用來保存提取出來的三個位置的數據
	int gewei = 0;
	int shiwei = 0;
	int baiwei = 0;
	
	//用來保存最后輸出的那個三位數
	int output = 0;

	scanf_s("%d",&input);

	gewei = input % 10;
	shiwei = (input % 100) / 10;
	baiwei = input / 100;

	output = gewei * 100 + shiwei * 10 + baiwei * 1;

	printf("%d",output);

}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM