两道C语言题,帮忙看一下(下)

第2题
问题描述:
请您写一个reverseAdd函数, 该函数根据输入的两个正整数a和b, 然后分别将它们的数字按照高位在右边的方式反转后求和。
例如,reverseAdd(123, 456) == 321 + 654 == 975

程序原型:
C/C++ int reverseAdd (int a, int b);

Java public class Exam{
public static int reverseAdd(int a, int b)
{ … }
}

输入:
输入的a,b参数均为有效取值范围[1, 70000]区间上的正整数。

输出:
通过函数返回值输出结果。
若输入的a或b参数超出了取值范围(小于1或者大于70000),则应输出-1;
否则应按照要求输出数字反转后的和。
注意:最终交付的函数代码中不要向控制台打印输出任何信息。

举例:
输入 输出 说明
123, 456 975 123反转为321 456反转为654结果为 321 + 654 = 975
0, 123 -1 输入错误,0超出了取值范围,返回-1
80000, 123 -1 输入错误,80000超出了取值范围,返回-1
100, 200 3 100和200反转后的值为1和2(前导0被忽略)
1, 2 3 单个数字反转后不变
回答的模板,请另存为.c文件,在里面做答

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int reverseAdd (int a, int b)
{
return -1; // remove this line please
// your code here...

}

/* NOTE! Please DO NOT change main()!!! */
// Usage Example: test12 123 456
int main(int argc, char *argv[])
{

int a, b, result;

// check argument number
if (argc != 3)
{
printf("Usage: test12 123 456\n");
return -1;
}

// first argument should be a
a = atoi(argv[1]);

// second argument should be b
b = atoi(argv[2]);

// call your function
result = reverseAdd (a, b);

// print result
printf("%d\n", result);

return 0;

}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int reverseAdd (int a, int b)
{
// your code here...
int reversedA=0;
int reversedB=0;

if(a<1||a>70000||b<1||b>70000)
return -1;

while(a)
{
reversedA*=10;
reversedA+=a%10;
a/=10;
}

while(b)
{
reversedB*=10;
reversedB+=b%10;
b/=10;
}

return reversedB+reversedA;

}

/* NOTE! Please DO NOT change main()!!! */
// Usage Example: test12 123 456
int main(int argc, char *argv[])
{

int a, b, result;

// check argument number
if (argc != 3)
{
printf("Usage: test12 123 456\n");
return -1;
}

// first argument should be a
a = atoi(argv[1]);

// second argument should be b
b = atoi(argv[2]);

// call your function
result = reverseAdd (a, b);

// print result
printf("%d\n", result);

return 0;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-03
int Inversion (long int a)
{long int b,c;
c=b/1000+10*((b%1000)/100)+100*(((b%1000)%100)/10)+1000(((b%1000)%100)%10);
return c;
}
reverseAdd (int a, int b)
{int c,
c=Inversion(a)+ Inversion(b)}
第2个回答  2010-07-03
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int reverseAdd (int a, int b)
{
int veca[5],vecb[5],i,j,project,sum;
if(a < 1 || a > 70000 || b < 1 || b > 70000 )
{
return -1;
}
i=0;
project = 10;
while(a!= 0)
{
veca[i]= a % project;
a = a/10;
i++;
}
j=0;
while(b!= 0)
{
vecb[j]= b % project;
b = b/10;
j++;
}
sum = 0;
project = 1;
while(i>0 ||j >0)
{
i--;
j--;
if (i>=0&&j>=0)
{
sum+= (veca[i] + vecb[j])*project;

}
if (i>=0 && j<0)
{
sum+= (veca[i] + 0)*project;
}
if (i<0 && j>=0)
{
sum+= (0 + vecb[j])*project;
}
project*= 10;

}
return sum;
}

/* NOTE! Please DO NOT change main()!!! */
// Usage Example: test12 123 456
int main(int argc, char *argv[])
{

int a, b, result;

// check argument number
//if (argc != 3)
{
printf("Usage: test12 123 456\n");
return -1;
}

// first argument should be a
a = atoi(argv[1]);

// second argument should be b
b = atoi(argv[2]);

// call your function
result = reverseAdd (a, b);

// print result
printf("%d\n", result);

return 0;

}
相似回答