C語言實現數字遊戲
阿新 • • 發佈:2020-02-01
本文例項為大家分享了C語言數字遊戲的具體程式碼,供大家參考,具體內容如下
問題描述 :
現在,有許多給小孩子玩的數字遊戲,這些遊戲玩起來簡單,但要創造一個就不是那麼容易的了。 在這,我們將介紹一種有趣的遊戲。
你將會得到N個正整數,你可以將一個整數接在另一個整數之後以製造一個更大的整數。 例如,這有4個數字123,124,56,90,他們可以製造下列整數─ 1231245690,1241235690,5612312490,9012312456,9056124123…等,總共可以組合出24(4!)種數字。 但是,9056124123是最大的那一個。
你可能會想這是個簡單的事情,但對剛有數字概念小孩來說,這會是個簡單的任務嗎?
輸入說明 :
輸入含有多組測試資料。
每組測試資料兩行,第一行為一個正整數N(N<= 50),第二行將有N 個正整數。
當N=0代表輸入結束。
輸出說明 :
對每一組測試資料,輸出一行,輸出利用這N個整數可結合成的最大整數。
#include<stdio.h> #include<string.h> #include<stdlib.h> char a[51][1000];//輸入的數用全域性變數來操作,和他之後的數一個一個去比較,交換位置 int cmp(int x,int y){ char b[1000],c[1000],str[1000]; int i,num1,num2; strcpy(b,a[x]); strcpy(c,a[y]); num1=strlen(a[x]);//數的長度 num2=strlen(a[y]); //字串拼接 for(i=num1;i<=num1+num2;i++) b[i]=c[i-num1]; for(i=num2;i<num1+num2;i++) c[i]=b[i-num2]; c[i]='\0'; return strcmp(b,c);//看a[i]a[j]大還是a[j]a[i]的數比較大 } int main(){ int n,i,j; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;i++) scanf("%s",a[i]); char temp[1000]; for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(cmp(i,j)<0){//交換位置 strcpy(temp,a[i]); strcpy(a[i],a[j]); strcpy(a[j],temp); } } } for(i=0;i<n;i++) printf("%s",a[i]); printf("\n"); } return 0; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。