1. 程式人生 > 程式設計 >C語言實現數字遊戲

C語言實現數字遊戲

本文例項為大家分享了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;
 }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。