作者:小代码


时间:2013年7月24日21:35:22


IDE:CodeBlocks


题目描述:

输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。

输入:
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。
输出:
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
样例输入:
8 1300 48
2 1 7
0
样例输出:
2504
1000

C语言通过版(那个函数不用的话,也是可以的,把函数删掉,把原来注释的地方改回来,也是可以通过的):


//表示对于博客不能带附件,很有意见!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


流程图:


Main:






tenTom( long sum , int m ):



                 

                   



int fan( char *str ):









#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main( void )
{
	char * tenTom( long sum, int m );
	int fan( char *str );//反转字符串
	long a;
	long b;
	int m;
	
	scanf("%d",&m);
	
	while( 0 != m )
	{
		scanf("%ld%ld",&a,&b);

		printf("%s\n",tenTom( a + b , m ));		
		
		scanf("%d",&m);
	}

    	return 0;
}

char * tenTom( long sum, int m )
{
	long len = 0;
	long j = 0;
	long i = 0;
	long temp = sum;
	char t;
	char *str = NULL;
	
	if( 0 == sum )//如果结果为0,则返回 0 
	{
		str = (char*)malloc(sizeof(char)*2);
		*( str ) = '0';
		*( str + 1 ) = '\0';
		return str;
	}
	
	while( 0 != temp )//求转换后的长度
	{
		temp = temp / m;
		len++;
	}
	
	str = (char*)malloc(sizeof(char)*( len + 1 ));//分配保存 M 进制的字符串
	
	for( j = 0; j < len; j++ )//反序保存
	{
		
		*( str + j ) = sum % m + 48;
		sum = sum / m;
		
	}
	
	*( str + len ) = '\0';
	
//	for( i = 0, j = len - 1; i < len / 2; i++, j-- )//正序
//	{
//		t = *(str + i );
//		*(str + i ) = *(str + j );
//		*(str + j ) = t;
//	}
	
	fan( str );
	
	return str;	
}

//反转字符串
int fan( char *str )
{
	
	int i = 0;
	int j = 0;
	int blog = 1;
	char temp;
	int len = strlen( str );
	
	if ( 0 == len )
	{
		blog = -1;
	}
	
	for ( i =0, j = len - 1; i < len / 2; i++, j-- )
	{
		temp = *( str + i );
		*( str + i ) = *( str + j );
		*( str + j ) = temp;
		
	}
	
	return blog;	
}


Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐