导航:首页 > 编程语言 > cminus简单程序示例

cminus简单程序示例

发布时间:2023-04-06 22:17:21

❶ 关于用C语言编写高精度加减法

好像是哪个oj上的题目,直接模拟就行了,加减法都是从字符串的最后一个字符算起,如果*a + *b > '9'就进位,同时空大衡移动指针斗做 a--, b--,c--就行了。仿销

❷ C语言 要求编写一个简单计算器的程序

#include<stdio.h>
void add(int a,int b,int c)
{
c=a+b;
printf("%d+%d = %d",a,b,c);
printf("\n");
}
void minus(int a,int b,int c)
{
c=a-b;
printf("%d-%d=%d",a,b,c);
printf("\n");
}
void multiplication(int a,int b,int c)
{
c=a*b;
printf("%d*%d=%d",a,b,c);
printf("\n");
}
void div(int a,int b,int c)
{
(float)c=(float)a/(float)b;
printf("%f/%f=%f",a,b,c);
printf("\n");
}
main()
{
int a,b,c;
char p;
printf("请输入数字 A:");
scanf("%d",&a);
printf("请输入数字 B:");
scanf("%d",&b);
printf("请输入运算的符号:");
getchar();
p=getchar();
if(p=='+') add(a,b,c);else
if(p=='-') minus(a,b,c);else
if(p=='*') multiplication(a,b,c);else
if(p=='/') div(a,b,c);else
puts("没有注册这个运算符号\n");
}

❸ 用C语言设计一个简单计算器

#include<stdio.h>
voidadd(inta,intb,intc)
{
c=a+b;
printf("%d ",c);
printf(" ");
}
voidminus(inta,intb,intc)
{
c=a-b;
printf("%d ",c);
printf(" ");
}
voidmultiplication(inta,intb,intc)
{
c=a*b;
printf("%d ",c);
printf(" ");
}
voiddiv(inta,intb,intc)
{
c=(float)a/(float)b;
printf("%f ",c);
printf(" ");
}
main()
{
inta,b,c;
charp;
puts("inputA: ");
scanf("%d",&a);
puts("inputB: ");
scanf("%d",&b);
puts("inputoperation: ");
getchar();
p=getchar();
if(p=='+')add(a,b,c);else
if(p=='-')minus(a,b,c);else
if(p=='*')multiplication(a,b,c);else
if(p=='/')div(a,b,c);else
puts("没有注册这个运算符号 ");
}

以上是设计的一个简易计算器。可以进行相应的加减乘除。

❹ 输入两个数 计算加减乘除 c语言程序 简单一点的程序我现在才大一

#include<stdio.h>

floatadd(floata,floatb)
{
return(a+b);
}
floatminus(floata,floatb)
{
return(a-b);
}
floatmultiply(floata,floatb)
{
return(a*b);
}
floatdivide(floata,floatb)
{
return(a/b);
}

intmain(void)
{
printf("Pleaseinserttwonumbers: ");

floata,b;
scanf("%f,%f",&a,&b);

floatresult;
result=add(a,b);
printf("Theresultofadditionis:%f ",result);

result空凯=minus(a,b);
printf("Theresultofminusis:%f ",result);

result备仔=仿亏汪multiply(a,b);
printf("Theresultofmultiplicationis:%f ",result);

result=divide(a,b);
printf("Theresultofdivisionis:%f ",result);


return0;
}

谢谢,望采纳!加油!

❺ c语言编程,任意大的数

#include <stdio.h>
#include <string.h>
typedef struct bigint
{
char *num; //指向长整数数组(序号0中保存着最低位)
char minus; //符号(1表示正数,-1表示负数)
int digit; //保存该数的位数(实际位数)
}BIGINT, *pBIGINT;
void BigIntTrans(pBIGINT num); //字符串转数字
void BigIntMul(pBIGINT num1, pBIGINT num2, pBIGINT result); //乘法函数
void BigIntAdd1(pBIGINT num1, pBIGINT num2, pBIGINT result); //同号数相加
void BigIntAdd(pBIGINT num1, pBIGINT num2, pBIGINT result); //加法函数
void BigIntSub1(pBIGINT num1, pBIGINT num2, pBIGINT result); //异号相减函数
void BigIntSub(pBIGINT num1, pBIGINT num2, pBIGINT result); //减法函数
void BigIntDiv(pBIGINT num1, pBIGINT num2, pBIGINT result, pBIGINT resie); //除法函数
void BigIntPrint(pBIGINT result); //输出大整数
int BigIntEqual(pBIGINT num1, pBIGINT num2); //两数大小比较

void BigIntTrim(pBIGINT num1) //整理大整数,去掉前面多余的0,并使调整其位数
{
int i;
for (i = num1->digit - 1; i >= 0; i--)
{
if (num1->num[i] != 0)
break;
}
if (i < 0) //若余数全部为0
{
num1->digit = 1; //设置余数位数为1
num1->num[0] = 0;
} else
num1->digit = i + 1; //余数位数
}
void BigIntTrans(pBIGINT num1) //将字符串转为数字表示
{
char *temp; //临时数组
int i, k, len;
len = strlen(num1->num); //字符串长度
if (!(temp = (char *) malloc(sizeof(char) * len))) //分配内存
{
printf("内存分配失败!\n");
exit(0);
}
i = 0;
num1->minus = 1; //保存为正数
if (num1->num[0] == '-') //判断是否为负数
{
num1->minus = -1; //保存为负数
i++;
}
k = 0; //数字位数计数器
while (num1->num[i] != '\0') //字符串未结束
{
if (num1->num[i] >= '0' && num1->num[i] <= '9') //为数字0~9
{
temp[k] = num1->num[i] - '0'; //将ASCII码转换为对应数字
k++;
}
i++;
}

for (i = 0; i < num1->digit; i++) //清空数组各元素
num1->num[i] = 0;
num1->digit = k; //转换后的数据位数
for (i = 0, k--; k >= 0; k--, i++) //将临时数组各位反置保存到数组num中
num1->num[i] = temp[k];
BigIntTrim(num1); //整理输入的大整数
}
void BigIntPrint(pBIGINT result) //输出大整数
{
int j;
if (result->minus == -1) //是负数
printf("-"); //输出负数
if (result->digit == 1 && result->num[0] == 0) //若大整数为0
printf("0");
else //不为0
{
for (j = result->digit - 1; j >= 0; j--) //从高位到低位输出
printf("%d", result->num[j]);
}
}
int BigIntEqual(pBIGINT num1, pBIGINT num2) //比较绝对值大小
{
int i;
if (num1->digit > num2->digit) //num1的位数大于num2
return 1;
else if (num1->digit < num2->digit) //num1的位数小于num2
return -1;
else //两数位数相等
{
i = num1->digit - 1; //num1的数据位数
while (i >= 0) //从高位向低位比
{
if (num1->num[i] > num2->num[i]) //num1对应位大于num2
return 1;
else if (num1->num[i] < num2->num[i]) //num1对应位小于num2
return -1;
else
i--; //比较下一位
}
}
return 0; //相等
}
void BigIntAdd(pBIGINT num1, pBIGINT num2, pBIGINT result)
{
int i;
i = BigIntEqual(num1, num2); //比较两数绝对值大小
if (i < 0) //num1绝对值小于num2
{
pBIGINT temp;
temp = num1; //交换两数
num1 = num2;
num2 = temp;
}
if (num1->minus * num2->minus < 0) //符号不同,则执减法
{
if (i == 0) //两数相等
{
result->digit = 1; //结果长度为一位数,就是数值0
result->num[0] = 0; //结果值为0
result->minus = 1; //结果设为正号
return; //返回
}
BigIntSub1(num1, num2, result); //调用相减函数完成异号相加的情况
} else
BigIntAdd1(num1, num2, result); //调用相加函数完成同号相加
}
void BigIntAdd1(pBIGINT num1, pBIGINT num2, pBIGINT result)
{
int i, carry;
carry = 0;
result->minus = num1->minus; //保存符号
for (i = 0; i < num1->digit; i++) //将被加数复制到结果数组中
result->num[i] = num1->num[i];
for (i = 0; i < num2->digit; i++) //num2中的数小,可能位数也小些
{
result->num[i] = result->num[i] + num2->num[i] + carry; //将对应位的数和进位数相加
carry = result->num[i] / 10; //计算进位数据
result->num[i] = result->num[i] % 10; //保留一位
}
if (carry) //若最后还有进位
result->num[i] = result->num[i] + carry;
BigIntTrim(result); //整理结果
}
void BigIntSub1(pBIGINT num1, pBIGINT num2, pBIGINT result) //异号相减函数
{
int i, borrow;
result->minus = num1->minus; //因num1绝对值比num2大,结果符号与num1相同
borrow = 0;
for (i = 0; i < num1->digit; i++) //将被减数的内容复制到结果中
result->num[i] = num1->num[i];
for (i = 0; i <= num2->digit; i++)
{
result->num[i] = result->num[i] - num2->num[i] - borrow; //num1减去num2,并减去低位的借位
if (result->num[i] < 0) //若为负数
{
result->num[i] = 10 + result->num[i]; //向高位借位
borrow = 1; //设置借位值
} else
borrow = 0;
}
if (borrow == 1)
result->num[i] = result->num[i] - borrow;
BigIntTrim(result);
/*i = num1->digit;
while (i > 0)
{
if (result->num[i] == 0)
i--;
else
break;
}
result->digit = i; //保存结果位数*/
}
void BigIntSub(pBIGINT num1, pBIGINT num2, pBIGINT result) //减法函数
{
num2->minus = -1 * num2->minus; //将减数的符号取反
BigIntAdd(num1, num2, result); //调用加法函数
}
void BigIntMul(pBIGINT num1, pBIGINT num2, pBIGINT result)
{
char carry, temp;
int i, j, pos;
for (i = 0; i < num1->digit + num2->digit; i++) //结果数组和中间数组清0
result->num[i] = 0;
for (i = 0; i < num2->digit; i++) //用乘数的每1位乘以被乘数
{
carry = 0; //清除进位
for (j = 0; j < num1->digit; j++) //被乘数的每1位
{
temp = num2->num[i] * num1->num[j] + carry; //相乘并加上进位
carry = temp / 10; //计算进位carry
temp = temp % 10; //计算当前位的值
pos = i + j;
result->num[pos] += temp; //计算结果累加到临时数组中
carry = carry + result->num[pos] / 10; //计算进位
result->num[pos] = result->num[pos] % 10;
}
if (carry > 0)
{
result->num[i + j] = carry; //加上最高位进位
result->digit = i + j + 1; //保存结果位数
} else
result->digit = i + j; //保存结果位数
}
result->minus = num1->minus * num2->minus; //结果的符号
}
void BigIntDiv(pBIGINT num1, pBIGINT num2, pBIGINT result, pBIGINT resie) //除法函数函数 》?跞サ臀坏慕栉?雗um1相同 数
{
BIGINT quo1, resio1, quo2;
int i, j, k, m; //k保存试商结果,m保存商的位数
char t;
result->minus = num1->minus * num2->minus; //商的符号
resie->num = (char *) malloc(sizeof(char) * num2->digit); //分配余数的内存空间
resie->digit = num2->digit+1; //设置余数的初始位数与除数相同
for (i = 0; i < resie->digit; i++) //将余数全部清0
resie->num[i] = 0;
m = 0;
for (i = num1->digit - 1; i >= 0; i--)
{
resie->digit=num2->digit+1; //重新设置余数的位数比除数多一位
for (j = resie->digit - 1; j > 0; j--) //移余数
resie->num[j] = resie->num[j - 1]; //将序号低位的数据移向高位(实际是将余数中的最高位去除)
resie->num[0] = num1->num[i]; //复制被除数中的一位到余数的最低位中
BigIntTrim(resie);//整理余数
k = 0; //试商
while (BigIntEqual(resie, num2) >= 0) //比较余数与除数的大小
{
BigIntSub1(resie, num2, resie); //用余数减去除数,差值保存在余数中
k++; //试商加1
}
result->num[m++] = k; //保存商
}
result->digit = m; //保存商的位数
for (i = 0; i < m / 2; i++) //将商各位反转(在计算过程中序号0保存的是商的高位)
{
t = result->num[i];
result->num[i] = result->num[m - 1 - i];
result->num[m - 1 - i] = t;
}
BigIntTrim(result); //整理商
BigIntTrim(resie); //整理余数
}
int main()
{
BIGINT num1, num2, result, resie; //参与运算的数、结果、余数
int i = 0, len;
char op;
printf("输入最大数的位数:");
scanf("%d", &len);
if (!(num1.num = (char *) malloc(sizeof(char) * (len + 1))))
{
printf("内存分配失败!\n");
exit(0);
}
num1.digit = len + 1;
if (!(num2.num = (char *) malloc(sizeof(char) * (len + 1))))
{
printf("内存分配失败!\n");
exit(0);
}
num2.digit = len + 1;
if (!(result.num = (char *) malloc(sizeof(char) * (2 * len + 1))))
{
printf("内存分配失败!\n");
exit(0);
}
result.digit = 2 * len + 1;
for (i = 0; i < result.digit; i++) //清空结果集
result.num[i] = 0;
printf("选择大整数的运算(+、-、*、/):");
fflush(stdin);
scanf("%c", &op);
switch (op)
{
case '+':
printf("\n输入被加数:");
scanf("%s", num1.num);
printf("\n输入加数:");
scanf("%s", num2.num);
BigIntTrans(&num1);
BigIntTrans(&num2);
BigIntAdd(&num1, &num2, &result); //加法
break;
case '-':
printf("\n输入被减数:");
scanf("%s", num1.num);
printf("\n输入减数:");
scanf("%s", num2.num);
BigIntTrans(&num1);
BigIntTrans(&num2);
BigIntSub(&num1, &num2, &result); //减法
break;
case '*':
printf("\n输入被乘数:");
scanf("%s", num1.num);
printf("\n输入乘数:");
scanf("%s", num2.num);
BigIntTrans(&num1);
BigIntTrans(&num2);
BigIntMul(&num1, &num2, &result); //乘法
break;
case '/':
printf("\n输入被除数:");
scanf("%s", num1.num);
printf("\n输入除数:");
scanf("%s", num2.num);
BigIntTrans(&num1);
BigIntTrans(&num2);
if (num2.digit == 1 && num2.num[0] == 0) //大整数为0
printf("除数不能为0!\n");
else
BigIntDiv(&num1, &num2, &result, &resie); //除法法
break;
}
if (op == '/')
{
if (!(num2.digit == 1 && num2.num[0] == 0)) //为除法且除数不为0
{
printf("商:");
BigIntPrint(&result);
printf("\t余数:");
BigIntPrint(&resie);
}
} else
{
printf("\n结果:");
BigIntPrint(&result);
}

getch();
return 0;
}

阅读全文

与cminus简单程序示例相关的资料

热点内容
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99
lua语言编程用哪个平台 浏览:272
政采云如何导出pdf投标文件 浏览:529
php获取postjson数据 浏览:551
javatimetask 浏览:16
编程的话要什么证件 浏览:94
钱脉通微信多开 浏览:878
中学生学编程哪个培训机构好 浏览:852
荣耀路由TV设置文件共享错误 浏览:525

友情链接