程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 1350 Cabric Number Problem (6174問題)水題

POJ 1350 Cabric Number Problem (6174問題)水題

編輯:C++入門知識

【題意簡述】:6174問題,就是輸入一個四位數,將數字從大到小的排序結果,減去從小到大的排序結果,得到的結果再重復上述操作!直到得到的值是0,或者6174,便結束!(其中還有一些細小的敘述,參見題目。)

【思路】:沒有難度,思路很好建立,最重要的是看懂題意,按照題意要求控制輸入輸出,我就栽在這裡了,因為沒有注意一定要輸入四位,導致我一直OLE。

還有就是,在這裡邊有的語言知識就是sprintf,和printf不同之處就是printf是將內容輸出至顯示器,而sprintf是將內容輸出到字符串中,sscanf同理,我就不再贅述,詳細的可以看看語法書。

詳見代碼:


// 236K 0Ms
#include
using namespace std;
#include
#include

int a,b;

int get_next(int x) {
  	int n;
  	char s[10];
  	sprintf(s, "%d", x);
  	n = strlen(s);
  	//冒泡排序! 
  	for(int i = 0; i < n; i++)
    	for(int j = i+1; j < n; j++)
      		if(s[i] > s[j])
		    {
        		char t = s[i]; s[i] = s[j]; s[j] = t;
      		}
  	sscanf(s, "%d", &b);//將得到的結果轉化為整型後儲存在b中!
  	// 反轉! 
  	for(int i = 0; i < n/2; i++)
  	{
    	char t = s[i]; s[i] = s[n-1-i]; s[n-1-i] = t;
  	}
  	sscanf(s, "%d", &a);
  	return a - b;
}


int main() {
	int n,t;
	int count;
	while(cin>>n)
	{
		if(n == -1) break;
		count = 1;
		cout<<"N="<9999||n<1000) //!!注意這裡輸入必須是4位,否則就會 OLE!! 
		{
			cout<<"No!!"<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved