user-0 提问: 期末作业 跪求好心大神解答 要求在Visual++6.0实现

回复:
user: user-1
content: 引用 13 楼 zhou09039051698 的回复:[quote=引用 5 楼 zhao4zhong1 的回复:] 我不是好心大神，我是专门来害楼主考试不及格且学不到编程真本事的闲的蛋疼的混分族。 //如果一个数（可能包含前导0）乘以2，如142857*2=285714，依然由原来的数字组成的话，这样的数(142857)就叫Magic Number。 //输入 //一个不大于1e10000整数。 //输出 //判断这个数是不是Magic Number，是的话输出“Magic Number”，否则输出“Not Magic Number”。 //输入样例 //142857 //或者 //857142 //输出样例 //Magic Number //或者 //Not Magic Number #include <stdio.h> #include <string.h> #define MAXLEN 10001 char a1[MAXLEN]; char a2[MAXLEN]; char a3[MAXLEN]; static int v1[MAXLEN]; static int v2[MAXLEN]; static int v3[MAXLEN]; int i,j,n,L,z; int main(void) {     fgets(a1,MAXLEN,stdin);     if ('\n'==a1[strlen(a1)-1]) a1[strlen(a1)-1]=0;     strcpy(a2,a1);      L=strlen(a1);     for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';      L=strlen(a2);     for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';      for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];      for (i=0;i<MAXLEN;i++) {         if (v3[i]>=10) {             v3[i+1]+=v3[i]/10;             v3[i]=v3[i]%10;         }     }      j=0;     z=0;     for (i=MAXLEN-1;i>=0;i--) {         if (z==0) {             if (v3[i]!=0) {                 sprintf(a3+j,"%d",v3[i]);j++;                 z=1;             }         } else {             sprintf(a3+j,"%d",v3[i]);j++;         }     }     if (z==0) sprintf(a3,"0");      L=strlen(a3);     for (i=0;i<L;i++) if (NULL==strchr(a1,a3[i])) break;     if (i<L) {         printf("Not Magic Number\n");     } else {         printf("Magic Number\n");     }     return 0; }  //给你n个整数，用这n个数拼成一个超长的整数，要令这个新的整数最小 //例如： 11 110 123 拼出的最小数为：11011123 //例如： 123 11 11 拼出的最小数为：1111123 // //输入 //第一行为n(1<=n<=1000)，接下来是n个正整数，使用空格或者换行分开， //每个数字的长度不会超过1000，不存在前导0； //当n为0时结束程序 // //输出 //对于每组输入，输出拼成的新的整数的结果。 // //输入样例 //3 //987 123 190 //0 //输出样例 //123190987 #include <stdio.h> #include <string.h> int n; char d[1000][1001]; char t[1001]; int i,j; int main() {     while (1) {         scanf("%d",&n);         if (0==n) break;         for (i=0;i<n;i++) scanf("%1000s",d[i]);         for (i=0;i<n-1;i++) {             for (j=i+1;j<n;j++) {                 if (strcmp(d[i],d[j])>0) {                     strcpy(t,d[i]);                     strcpy(d[i],d[j]);                     strcpy(d[j],t);                 }             }         }         for (i=0;i<n;i++) printf("%s",d[i]);         printf("\n");     }     return 0; }  这个数据试一试，连给的例子都过不去的程序。。。。。 11 110 123[/quote] 改一下第32行，让"110"比"11"小。

user: user-2
content: 引用 8 楼 zhao4zhong1 的回复:行不行不会自己编译链接运行一下吗？ 是骡子是马拉出来溜溜。 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！  你的口头禅好长啊，看到了好几年，我已经快能背下来了

user: user-3
content: 随便一个帐号，上来第一个帖子就是伸手，how much？

user: user-4
content: 第一题大数乘法，第二题j就是合并以下再strcmp比一下。 代码如下多找点数据测一测看谁的对  #include<iostream> #include<Cstdio> #include<Cstring> using namespace std;   char A2[5000], A1[5000], Sum1[5000], Sum[5000]; int hash1[10], hash2[10]; void Mul(char* A, char* B, char* result) { 	 	int i = 0, j = 0, sum, takeOver = 0, length; 	 	for(j = 0; j < 5000; j++) 		result[j] = '0'; 	 	 	while(A[i] != '\0') 	{ 		j = 0; 		while (B[j] != '\0') 		{ 			sum = (A[i] - '0') * (B[j] - '0')  			+ (result[i + j] - '0') + takeOver; 			 			result[i + j] = (sum%10) + '0'; 			takeOver = sum/10; 			j++; 		} 		if(takeOver == 0) 			length = i + j; 		else 		{ 			length = i + j + 1; 			result[i + j] += takeOver; 			takeOver = 0; 		} 		         i++; 	} 	 	result[length] = '\0'; }  void Reverse(char* n) { 	char temp; 	int i = 0, j = 0; 	while (n[j] != '\0') 	    j++; 	j--; 	while(i < j) 	{ 		temp = n[i]; 		n[i] = n[j]; 		n[j] = temp; 		 		i++;j--; 	} }   int main() { 	int i; 	bool flag = true; 	cin >> A1; 	Reverse(A1); 	A2[0] = '2'; A2[1] = '\0'; 	Mul(A1, A2, Sum); 	 	for(i = 0; i < 10; i++) 	{ 		hash1[i] = 0; hash2[i] = 0; 	} 	i = 0; 	while(A1[i] != '\0') 	{ 		hash1[A1[i] - '0']++; 		i++; 	} 	i = 0; 	while(Sum[i] != '\0') 	{ 	    hash2[Sum[i] - '0']++; 		i++; 	} 	 	for(i = 0; i < 10; i++) 	{ 		if(hash1[i] != hash2[i]) 		{ 			flag = false; 			break; 		} 	} 	if(flag) 		cout << "Magic Number" << endl; 	else 		cout << "Not Magic Number"<< endl; 	return 0; }    #include<iostream> #include<cstdio>  #include<cstring>   using namespace std;   char array[1001][1001]; char temp[1001];   char temp1[2001], temp2[2001];         bool compare(char* a1, char* a2) {     char *p1 = a1, *p2 = a2, *p3 = temp1;     while(*p1 != '\0')     {         *p3 = *p1;         p1++; p3++;     }           while(*p2 != '\0')     {         *p3 = *p2;         p2++; p3++;     }     *p3 = '\0';            p1 = a1, p2 = a2, p3 = temp2;     while(*p2 != '\0')     {         *p3 = *p2;         p2++; p3++;     }           while(*p1 != '\0')     {         *p3 = *p1;         p1++; p3++;     }     *p3 = '\0';            if(strcmp(temp1, temp2) > 0)         return true;     return false; }         void ShellSort(int length) {           int d = length/2;       int i, j;     char *p1, *p2;     while(d>=1)         {         for(i=d;i<length;i++)             {                 p1 = temp, p2 = array[i];             while(*p2 != '\0')             {                 *p1 = *p2;                 p1++; p2++;             }             *p1 = '\0';                           j=i-d;             while(j>=0 && compare(array[j], temp) > 0)               {                     p1 = array[j+d], p2 = array[j];                 while(*p2 != '\0')                 {                     *p1 = *p2;                     p1++; p2++;                 }                 *p1 = '\0';                 j=j-d;                 }                 p1 = array[j+d], p2 = temp;             while(*p2 != '\0')             {                 *p1 = *p2;                 p1++; p2++;             }             *p1 = '\0';         }                   d= d/2;        } }     int main() {     int size, i;     while(1)     {         cin >> size;         if(size == 0)             break;         for(i = 0; i < size; i++)            cin >> array[i];         ShellSort(size);         for(i = 0; i < size; i++)             cout << array[i];         cout << endl;     }    return 0; }

user: user-4
content: 引用 5 楼 zhao4zhong1 的回复:我不是好心大神，我是专门来害楼主考试不及格且学不到编程真本事的闲的蛋疼的混分族。 //如果一个数（可能包含前导0）乘以2，如142857*2=285714，依然由原来的数字组成的话，这样的数(142857)就叫Magic Number。 //输入 //一个不大于1e10000整数。 //输出 //判断这个数是不是Magic Number，是的话输出“Magic Number”，否则输出“Not Magic Number”。 //输入样例 //142857 //或者 //857142 //输出样例 //Magic Number //或者 //Not Magic Number #include <stdio.h> #include <string.h> #define MAXLEN 10001 char a1[MAXLEN]; char a2[MAXLEN]; char a3[MAXLEN]; static int v1[MAXLEN]; static int v2[MAXLEN]; static int v3[MAXLEN]; int i,j,n,L,z; int main(void) {     fgets(a1,MAXLEN,stdin);     if ('\n'==a1[strlen(a1)-1]) a1[strlen(a1)-1]=0;     strcpy(a2,a1);      L=strlen(a1);     for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';      L=strlen(a2);     for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';      for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];      for (i=0;i<MAXLEN;i++) {         if (v3[i]>=10) {             v3[i+1]+=v3[i]/10;             v3[i]=v3[i]%10;         }     }      j=0;     z=0;     for (i=MAXLEN-1;i>=0;i--) {         if (z==0) {             if (v3[i]!=0) {                 sprintf(a3+j,"%d",v3[i]);j++;                 z=1;             }         } else {             sprintf(a3+j,"%d",v3[i]);j++;         }     }     if (z==0) sprintf(a3,"0");      L=strlen(a3);     for (i=0;i<L;i++) if (NULL==strchr(a1,a3[i])) break;     if (i<L) {         printf("Not Magic Number\n");     } else {         printf("Magic Number\n");     }     return 0; }  //给你n个整数，用这n个数拼成一个超长的整数，要令这个新的整数最小 //例如： 11 110 123 拼出的最小数为：11011123 //例如： 123 11 11 拼出的最小数为：1111123 // //输入 //第一行为n(1<=n<=1000)，接下来是n个正整数，使用空格或者换行分开， //每个数字的长度不会超过1000，不存在前导0； //当n为0时结束程序 // //输出 //对于每组输入，输出拼成的新的整数的结果。 // //输入样例 //3 //987 123 190 //0 //输出样例 //123190987 #include <stdio.h> #include <string.h> int n; char d[1000][1001]; char t[1001]; int i,j; int main() {     while (1) {         scanf("%d",&n);         if (0==n) break;         for (i=0;i<n;i++) scanf("%1000s",d[i]);         for (i=0;i<n-1;i++) {             for (j=i+1;j<n;j++) {                 if (strcmp(d[i],d[j])>0) {                     strcpy(t,d[i]);                     strcpy(d[i],d[j]);                     strcpy(d[j],t);                 }             }         }         for (i=0;i<n;i++) printf("%s",d[i]);         printf("\n");     }     return 0; }  这个数据试一试，连给的例子都过不去的程序。。。。。 11 110 123

user: user-5
content: 第一道题可以转化为比较两个数字字符串，即将原数和乘积之后的数都转换成字符串，然后再使用字符串的相关函数解析。

user: user-0
content: OMG - - 好吧。谢谢了

user: user-1
content: 第一题的要求就是只输入一次。中学语文阅读理解成绩不咋地吧。

user: user-0
content: 第一题 运行后只能输出一次.   是不是用下while ( scanf） ？

user: user-1
content: 行不行不会自己编译链接运行一下吗？ 是骡子是马拉出来溜溜。 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！

user: user-0
content: 第一题这样也行么？  #include <stdio.h> #include <string.h> #define MAX 10001 typedef struct { int date[MAX]; int len; }BigInt; int magic(BigInt a,int m); int main() { char str[MAX]; BigInt a; int i,len; while ( scanf("%s",str) != EOF ) { len = strlen(str); for ( i = 0; i < len; i++ ) { a.date[len-i-1] = str[i] - '0'; } a.len = len; if ( magic(a,2) ) { printf("Magic Number\n"); } else { printf("Not Magic Number\n"); } } return 0; } int magic(BigInt a,int m) { int i,temp; int carry = 0; int s[10],e[10]; for( i = 0; i < 10; i++ ) { s[i] = e[i] = 0; } for ( i = 0; i < a.len; i++ ) { s[a.date[i]] ++; } for ( i = 0; i < a.len; i ++ ) { temp = a.date[i] * m + carry; e[temp%10] ++; carry = temp / 10; } if ( carry ) { e[carry] ++; } for ( i = 0; i < 10; i++ ) { if ( s[i] != e[i] ) { return 0; } } return 1; }

user: user-0
content: C++ 6.0 实现不了啊

user: user-1
content: 我不是好心大神，我是专门来害楼主考试不及格且学不到编程真本事的闲的蛋疼的混分族。 //如果一个数（可能包含前导0）乘以2，如142857*2=285714，依然由原来的数字组成的话，这样的数(142857)就叫Magic Number。 //输入 //一个不大于1e10000整数。 //输出 //判断这个数是不是Magic Number，是的话输出“Magic Number”，否则输出“Not Magic Number”。 //输入样例 //142857 //或者 //857142 //输出样例 //Magic Number //或者 //Not Magic Number #include <stdio.h> #include <string.h> #define MAXLEN 10001 char a1[MAXLEN]; char a2[MAXLEN]; char a3[MAXLEN]; static int v1[MAXLEN]; static int v2[MAXLEN]; static int v3[MAXLEN]; int i,j,n,L,z; int main(void) {     fgets(a1,MAXLEN,stdin);     if ('\n'==a1[strlen(a1)-1]) a1[strlen(a1)-1]=0;     strcpy(a2,a1);      L=strlen(a1);     for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';      L=strlen(a2);     for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';      for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];      for (i=0;i<MAXLEN;i++) {         if (v3[i]>=10) {             v3[i+1]+=v3[i]/10;             v3[i]=v3[i]%10;         }     }      j=0;     z=0;     for (i=MAXLEN-1;i>=0;i--) {         if (z==0) {             if (v3[i]!=0) {                 sprintf(a3+j,"%d",v3[i]);j++;                 z=1;             }         } else {             sprintf(a3+j,"%d",v3[i]);j++;         }     }     if (z==0) sprintf(a3,"0");      L=strlen(a3);     for (i=0;i<L;i++) if (NULL==strchr(a1,a3[i])) break;     if (i<L) {         printf("Not Magic Number\n");     } else {         printf("Magic Number\n");     }     return 0; }  //给你n个整数，用这n个数拼成一个超长的整数，要令这个新的整数最小 //例如： 11 110 123 拼出的最小数为：11011123 //例如： 123 11 11 拼出的最小数为：1111123 // //输入 //第一行为n(1<=n<=1000)，接下来是n个正整数，使用空格或者换行分开， //每个数字的长度不会超过1000，不存在前导0； //当n为0时结束程序 // //输出 //对于每组输入，输出拼成的新的整数的结果。 // //输入样例 //3 //987 123 190 //0 //输出样例 //123190987 #include <stdio.h> #include <string.h> int n; char d[1000][1001]; char t[1001]; int i,j; int main() {     while (1) {         scanf("%d",&n);         if (0==n) break;         for (i=0;i<n;i++) scanf("%1000s",d[i]);         for (i=0;i<n-1;i++) {             for (j=i+1;j<n;j++) {                 if (strcmp(d[i],d[j])>0) {                     strcpy(t,d[i]);                     strcpy(d[i],d[j]);                     strcpy(d[j],t);                 }             }         }         for (i=0;i<n;i++) printf("%s",d[i]);         printf("\n");     }     return 0; }

user: user-6
content: 做什么做，楼主你室友在等你玩游戏呢...

user: user-0
content: 好多都不会。求完全帮助

user: user-7
content: 作业还是自己做吧 给你个思路，可能不是最好的，应该是比较好完成的 1   定义一个arr[10]   下标可以对应你的每位数数字的个数 2   用vector<string>   进行排序，在输出就OK了

user: user-0
content: 期末作业 跪求好心大神解答 要求在Visual++6.0实现....好心大神 看一看帮一把  好伤心啊