九度OJ_1026
作者:小代码时间:2013年7月24日21:35:22IDE:CodeBlocks题目描述:输入两个不超过整型定义的非负10进制整数A和B(31-1),输出A+B的m (1输入:输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。当m为0时输入结束。输出:输出格式:每个测试用例的输出占
·
作者:小代码
时间: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;
}
更多推荐



所有评论(0)