本文实例为大家分享了C语言数字游戏的具体代码,供大家参考,具体内容如下
问题描述 :
现在,有许多给小孩子玩的数字游戏,这些游戏玩起来简单,但要创造一个就不是那么容易的了。 在这,我们将介绍一种有趣的游戏。
你将会得到N个正整数,你可以将一个整数接在另一个整数之后以制造一个更大的整数。 例如,这有4个数字123, 124, 56, 90,他们可以制造下列整数─ 1231245690, 1241235690, 5612312490, 9012312456, 9056124123…等,总共可以组合出24(4!)种数字。 但是,9056124123是最大的那一个。
你可能会想这是个简单的事情,但对刚有数字概念小孩来说,这会是个简单的任务吗?
输入说明 :
输入含有多组测试数据。
每组测试资料两行,第一行为一个正整数N(N<= 50),第二行将有N 个正整数。
当N=0代表输入结束。
输出说明 :
对每一组测试数据,输出一行,输出利用这N个整数可结合成的最大整数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#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; } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_44252790/article/details/104093288