20分,向大佬求助
查看原帖
20分,向大佬求助
837059
shadowworrier楼主2022/11/29 20:25

p处总是输出乱码

#include <stdio.h>
#include <string.h>
char result[1000]={0};
char* mutiply(char*p,char*q)
{
	char result[1000];
	char*r;
	int num1[100]={0},num2[100]={0},num[100]={0},i=0,j=0,N=0,M=0,len=0,k;
	N=strlen(p); M=strlen(q);
	for(i=0;i<N;i++){
		num1[i]=p[N-i-1]-'0';
	}
	for(i=0;i<M;i++){
		num2[i]=q[M-i-1]-'0';
	}
	for(i=0;i<N;i++){
		for(j=0;j<M;j++){
			num[i+j]+=num1[i]*num2[j];
		}
	}
	len=N+M;
	for(i=0;i<N+M;i++){
		if(num[i]>=10){
			num[i+1]+=num[i]/10;
			num[i]%=10;
		}
	}
	while(num[len]==0){
		len--;
	}
	for(i=len;i>=0;i--){
		result[len-i]=num[i]+'0';
	}
	r=result;
//	printf("\n%s\n",r);
	return r;
}
int main()
{
	int minus,q=1,num[100]={0},i,n;
	char m1[1000]="1",m2[1000];
	char *p=0; 
	scanf("%d",&n);
	minus=n;
	while(minus>q){
		q++;
		minus-=q;
	}
	for(i=2;i<=q;i++){
		num[i]=i;
	}
	for(i=q;minus>0;minus--,i--){           
		num[i]++;
	}
	p=m1;
	for(i=2;i<=q;i++){
		printf("%d ",num[i]);
		sprintf(m2,"%d",num[i]);
		p=mutiply(p,m2);
	}
	printf("\n");
	printf("%s",p);
	return 0;
}
2022/11/29 20:25
加载中...