用c语言编程完成两个1000位以内的正整数的加法运算
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/22 10:27:18
用c语言编程完成两个1000位以内的正整数的加法运算
是c语言!
我找到了一段代码 能正确执行出来 但不是很能看懂
#include
#include
#include
#include
void main()
{
char longnumber[1000];
void lturntoa(char*,int*);
int numa[125]={0},numb[125]={0},result[125]={0},i;
printf("input the first long number:\n");
gets(longnumber);
lturntoa(longnumber,numa);
printf("input the second long number:\n");
gets(longnumber);
lturntoa(longnumber,numb);
for(i=0;(*(numa+i)!=0)&&(*(numb+i)!=0);i++);
for(;i=100000000)
{
*(result+i)-=100000000;
*(result+i-1)=1;
}
}
printf("result is:\n");
for(i=0;*(result+i)==0;i++);
for(;i
是c语言!
我找到了一段代码 能正确执行出来 但不是很能看懂
#include
#include
#include
#include
void main()
{
char longnumber[1000];
void lturntoa(char*,int*);
int numa[125]={0},numb[125]={0},result[125]={0},i;
printf("input the first long number:\n");
gets(longnumber);
lturntoa(longnumber,numa);
printf("input the second long number:\n");
gets(longnumber);
lturntoa(longnumber,numb);
for(i=0;(*(numa+i)!=0)&&(*(numb+i)!=0);i++);
for(;i=100000000)
{
*(result+i)-=100000000;
*(result+i-1)=1;
}
}
printf("result is:\n");
for(i=0;*(result+i)==0;i++);
for(;i
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main() {
int i,j,k,T,carry;
int lena,lenb,num;
char ch,c[1000] = {0};
char a[1000],b[1000];
scanf("%d",&T);
while(T > 0) {
i = 0;
printf("\na[] = ");
while(1) { // 读取a[],'\n'结束读入过程
fflush(stdin);
ch = _getch();
if(ch == '\r') break;
if(ch >= '0' && ch <= '9') {
a[i++] = ch;
printf("%c",ch);
}
}
a[i] = '\0';
printf("\nb[] = ");
i = 0;
while(1) { // 读取b[],'\n'结束读入过程
fflush(stdin);
ch = _getch();
if(ch == '\r') break;
if(ch >= '0' && ch <= '9') {
b[i++] = ch;
printf("%c",ch);
}
}
b[i] = '\0';
lena = strlen(a);
lenb = strlen(b);
carry = 0; // 进位
k = 0;
// 从个位开始加,逆向存储相加结果
for(i = lena - 1,j = lenb - 1; i >= 0 && j >= 0; --i,--j) {
num = a[i] + b[j] - '0' - '0' + carry; // 求得该位的和
c[k++] = num % 10 + '0'; // 获取该位数字
carry = num / 10; // 获取进位
}
while(i >= 0) { // 处理更长的数
num = a[i--] + carry - '0';
c[k++] = num % 10 + '0';
carry = num / 10;
}
while(j >= 0) { // 处理更长的数
num = a[j--] + carry - '0';
c[k++] = num % 10 + '0';
carry = num / 10;
}
if(carry) c[k++] = carry + '0';
c[k] = '\0';
for(i = 0;i < k / 2;i++) { // 把计算结果改作惯用顺序
ch = c[i];
c[i] = c[k - 1 - i];
c[k - 1 - i] = ch;
}
printf("\n%s + %s = %s\n",a,b,c);
--T;
}
return 0;
}
#include <string.h>
#include <conio.h>
int main() {
int i,j,k,T,carry;
int lena,lenb,num;
char ch,c[1000] = {0};
char a[1000],b[1000];
scanf("%d",&T);
while(T > 0) {
i = 0;
printf("\na[] = ");
while(1) { // 读取a[],'\n'结束读入过程
fflush(stdin);
ch = _getch();
if(ch == '\r') break;
if(ch >= '0' && ch <= '9') {
a[i++] = ch;
printf("%c",ch);
}
}
a[i] = '\0';
printf("\nb[] = ");
i = 0;
while(1) { // 读取b[],'\n'结束读入过程
fflush(stdin);
ch = _getch();
if(ch == '\r') break;
if(ch >= '0' && ch <= '9') {
b[i++] = ch;
printf("%c",ch);
}
}
b[i] = '\0';
lena = strlen(a);
lenb = strlen(b);
carry = 0; // 进位
k = 0;
// 从个位开始加,逆向存储相加结果
for(i = lena - 1,j = lenb - 1; i >= 0 && j >= 0; --i,--j) {
num = a[i] + b[j] - '0' - '0' + carry; // 求得该位的和
c[k++] = num % 10 + '0'; // 获取该位数字
carry = num / 10; // 获取进位
}
while(i >= 0) { // 处理更长的数
num = a[i--] + carry - '0';
c[k++] = num % 10 + '0';
carry = num / 10;
}
while(j >= 0) { // 处理更长的数
num = a[j--] + carry - '0';
c[k++] = num % 10 + '0';
carry = num / 10;
}
if(carry) c[k++] = carry + '0';
c[k] = '\0';
for(i = 0;i < k / 2;i++) { // 把计算结果改作惯用顺序
ch = c[i];
c[i] = c[k - 1 - i];
c[k - 1 - i] = ch;
}
printf("\n%s + %s = %s\n",a,b,c);
--T;
}
return 0;
}
用c语言编程完成两个1000位以内的正整数的加法运算
C语言大作业 请设计一个算法完成两个超长正整数的加法.
C语言求编程,1000以内自然数表示为五个3的正整数幂的四则混合运算式.允许括号嵌套.
c语言编程求两个正整数的最大公约数和最小公倍数!
C语言编程输出100以内能同时被3和5整除的正整数
编程C语言 连续做十道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,
用C语言编程输出20以内所有两个偶数的和以及所有两个奇数的和
C语言随机数做10以内加法运算,
C语言编程:输入两个正整数m和n,求它们的最大公约数.
编程C语言:输入两个正整数m,n,计算它们的最大公约数和最小公倍数
求一个用C语言写的大数除法模块,函数参数是两个1000位以内的整数
C语言 用加法运算,生成两个随机数,用加法求和,成功追加100分.