求助两道C++题~!~!~!

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:33:07
1.编写一个程序,实现很长(非常长)整数的相加。(要求用字符数组的有关知识去写)
2.编写一个程序,比较两个字符串的大小。(不可用strcmp等函数直接比较)

#include <string.h>
// 声明
void add(const char *var1, const char *var2, char *result);
int cmp(const char *str1, const char *str2);

main()
{
// 测试用例
char var1[] = "12823456789";
char var2[] = "432651346";
char result[128];
add(var1, var2, result);
printf(result);
printf("\n");
int ret = cmp(var1, var2);
printf("%d", ret);
}

// 实现字符大数相加,用result返回结果
// var1第一个被加数的字符串
// var2第二个被加数的字符串
// result用于返回结果的字符缓冲区
void add(const char *var1, const char *var2, char *result) {
int len1 = strlen(var1);
int len2 = strlen(var2);
int maxLen = len1 > len2 ? len1 : len2; // 两个数中最大的长度
int carry = 0; // 进位数
// 从后向前计算
for (int i = 0; i < maxLen; ++i) {
int v1 = 0;
int v2 = 0;
if (len1 - i - 1 >= 0) {
v1 = var1[len1 - i - 1] - 0x30;