C语言求两个数中的大数,如输入3 5,输出3,5,5
时间: 2023-05-24 17:03:00 浏览: 89
A:请看以下代码:
```
#include <stdio.h>
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
if (a > b) {
printf("%d\n", a);
} else {
printf("%d\n", b);
}
return 0;
}
```
该程序通过比较输入的两个整数的大小,输出其中的大数。
相关问题
C语言实现输入两个大数加减乘除四个输出的代码
### 回答1:
可以使用以下代码:#include <stdio.h>int main()
{
int a, b;
int result;
char op; printf("输入第一个数字:");
scanf("%d", &a); printf("输入第二个数字:");
scanf("%d", &b); printf("输入运算符:");
scanf(" %c", &op); switch (op)
{
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
printf("无效的运算符!\n");
break;
} printf("运算结果:%d\n", result); return 0;
}
### 回答2:
下面是用C语言实现输入两个大数进行加减乘除运算并输出结果的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100 // 假设大数的最大长度为100
// 大数相加
char* add(char* num1, char* num2)
{
static char result[MAX_LENGTH + 1];
memset(result, '0', MAX_LENGTH + 1);
int len1 = strlen(num1);
int len2 = strlen(num2);
int len = len1 > len2 ? len1 : len2;
int carry = 0;
for (int i = 0; i < len; i++) {
int sum = (i < len1 ? num1[len1 - 1 - i] - '0' : 0) + (i < len2 ? num2[len2 - 1 - i] - '0' : 0) + carry;
carry = sum / 10;
result[MAX_LENGTH - i] = sum % 10 + '0';
}
if (carry > 0) {
result[MAX_LENGTH - len - 1] = carry + '0';
}
return result + (result[0] == '0' ? 1 : 0);
}
// 大数相减
char* subtract(char* num1, char* num2)
{
static char result[MAX_LENGTH + 1];
memset(result, '0', MAX_LENGTH + 1);
int len1 = strlen(num1);
int len2 = strlen(num2);
int len = len1 > len2 ? len1 : len2;
int borrow = 0;
for (int i = 0; i < len; i++) {
int diff = (i < len1 ? num1[len1 - 1 - i] - '0' : 0) - (i < len2 ? num2[len2 - 1 - i] - '0' : 0) - borrow;
borrow = diff < 0 ? 1 : 0;
result[MAX_LENGTH - i] = diff < 0 ? diff + 10 + '0' : diff + '0';
}
return result + (result[0] == '0' ? 1 : 0);
}
// 大数相乘
char* multiply(char* num1, char* num2)
{
static char result[MAX_LENGTH + MAX_LENGTH];
memset(result, '0', MAX_LENGTH + MAX_LENGTH);
int len1 = strlen(num1);
int len2 = strlen(num2);
for (int i = 0; i < len1; i++) {
int carry = 0;
for (int j = 0; j < len2; j++) {
int product = (num1[len1 - 1 - i] - '0') * (num2[len2 - 1 - j] - '0') + carry + (result[MAX_LENGTH + MAX_LENGTH - 1 - i - j] - '0');
carry = product / 10;
result[MAX_LENGTH + MAX_LENGTH - 1 - i - j] = product % 10 + '0';
}
if (carry > 0) {
result[MAX_LENGTH + MAX_LENGTH - 1 - i - len2] = carry + '0';
}
}
return result + (result[0] == '0' ? 1 : 0);
}
// 大数相除
char* divide(char* num1, char* num2)
{
static char result[MAX_LENGTH + 1];
memset(result, '0', MAX_LENGTH + 1);
int len1 = strlen(num1);
int len2 = strlen(num2);
if (len2 == 1 && num2[0] == '0') {
return "NaN"; // 除数为0,结果为无穷大
}
if (len1 < len2 || (len1 == len2 && strcmp(num1, num2) < 0)) {
return "0"; // 被除数小于除数,结果为0
}
char temp[MAX_LENGTH + 1];
strcpy(temp, num1);
for (int i = len1 - len2; i >= 0; i--) {
while (strcmp(temp, num2) >= 0) {
strcpy(temp, subtract(temp, num2));
result[i]++;
}
}
return result + (result[0] == '0' ? 1 : 0);
}
int main()
{
char num1[MAX_LENGTH];
char num2[MAX_LENGTH];
printf("请输入第一个大数:");
scanf("%s", num1);
printf("请输入第二个大数:");
scanf("%s", num2);
printf("加法结果:%s\n", add(num1, num2));
printf("减法结果:%s\n", subtract(num1, num2));
printf("乘法结果:%s\n", multiply(num1, num2));
printf("除法结果:%s\n", divide(num1, num2));
return 0;
}
```
这段代码实现了大数的加法(add)、减法(subtract)、乘法(multiply)和除法(divide)运算。用户可以输入两个大数,然后计算并输出它们的加、减、乘、除运算结果。代码使用静态字符数组来保存结果,并返回一个指向结果数组的指针,同时处理结果数组前多余的0。
c语言自行输入两个大数求和
可以使用数组来存储大数,然后模拟手算的方式进行相加。以下是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main()
{
char num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN + 1];
int len1, len2, carry = 0, sum, i;
printf("请输入第一个大数: ");
scanf("%s", num1);
printf("请输入第二个大数: ");
scanf("%s", num2);
len1 = strlen(num1);
len2 = strlen(num2);
// 从低位到高位依次相加
for (i = 0; i < len1 || i < len2; i++) {
sum = carry;
if (i < len1)
sum += num1[len1 - i - 1] - '0';
if (i < len2)
sum += num2[len2 - i - 1] - '0';
result[i] = sum % 10 + '0';
carry = sum / 10;
}
// 如果还有进位,把进位加上
if (carry > 0)
result[i++] = carry + '0';
result[i] = '\0';
// 翻转字符串,输出结果
len1 = strlen(result);
for (i = 0; i < len1 / 2; i++) {
char temp = result[i];
result[i] = result[len1 - i - 1];
result[len1 - i - 1] = temp;
}
printf("两数之和为:%s\n", result);
return 0;
}
```
需要注意的是,这里只考虑了两个整数相加的情况,如果需要支持更多的运算,需要对代码进行相应的修改。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)