| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 365 人关注过本帖
标题:长整数运算
只看楼主 加入收藏
轩志
Rank: 1
等 级:新手上路
帖 子:13
专家分:1
注 册:2012-12-16
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:3 
长整数运算
输入用三行,第一行和第三行为数值,第二行为运算符,能进行加法、减法运算,减法运算包括差为负数的情况。

具备乘法运算功能
具备除法功能
具备小数点功能
输入用一行完成,
具备输入检查功能
长整数不要用double实现,我用了,可是老师说限制了长整数的长度,20个长度就已经出现错误,请各位帮帮忙,明天就要交了,老师说用数组实现长整数的数的长度
#include<stdio.h>
double EPS=10E-6;

double sum(double a,double b)
{
    return a+b;
}
double sub(double a,double b)
{
    return a-b;
}
double mul(double a,double b)
{
    return a*b;
}
double divv(double a,double b)
{
    return a/b;
}

int displaymenu()
{

    printf("*            (1)加法运算            * \n");
    printf("*            (2)减法运算            * \n");
    printf("*            (3)乘法运算            * \n");
    printf("*            (4)除法运算            * \n");
}
int main()
{
    int c,d;                  
    double  a,b;              
    int intresult;
    double result;
    int choice;   
    displaymenu();
    while(1)
    {  
        printf("请选择你所进行运算项目的符号:");     
        scanf("%d",&choice);
        switch(choice)  
        {  
                                
            case 1:     
            {   
                    printf("请输入两个数字:");   
                    scanf("%lf%lf",&a,&b);   
                    result=sum(a,b);   
                    printf("%lf+%lf的计算结果是:%lf\n",a,b,result);
                    break;
            }
           
            case 2:     
            {   
                    printf("请输入两个数字:");   
                    scanf("%lf%lf",&a,&b);   
                    result=sub(a,b);   
                    printf("%lf-%lf的计算结果是:%lf\n",a,b,result);
                    break;
            }
         
            case 3:  
            {        
                    printf("请输入两个数字:");   
                    scanf("%lf%lf",&a,&b);   
                    result=mul(a,b);   
                    printf("%lf*%lf的计算结果是:%lf\n",a,b,result);
                    break;
            }

            case 4:   
            {     
                    scanf("%lf%lf",&a,&b);     
                    if(b-0.0<EPS) printf("数字错误\n");     
                    else     
                    {      
                            printf("请输入两个数字:");      
                            result=divv(a,b);      
                            printf("%lf/%lf的计算结果是:%lf\n",a,b,result);     
                    }         break;   
            }
        
            case 0:   printf("谢谢使用。欢迎下次再用。\n");   
            return 0;   
            default:   printf("选择错误,程序结束\n"); break;  
        }
    }
}
搜索更多相关主题的帖子: include double return 
2013-01-05 11:15
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
我只写一个减。。。自己思考下
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
int compare(char *a, char *b)
{    //判断a > b ?
    int a_len = strlen(a);
    int b_len = strlen(b);
    if (a_len == b_len)
        return a[0] > b[0];
    return a_len > b_len;
}
void Ni(char *a)
{    //将字符串逆序
    char temp;
    char *a_temp = a;
    int len = strlen(a_temp);
    for (int i = 0, j = len - 1;i < j;++i, --j)
        temp = a[i], a[i] = a[j], a[j] = temp;
}
void Sub(char *a, char *b, char *result)
{
    int i;
    char a_temp[MAX], b_temp[MAX] = {0};
    strcpy(a_temp, a);strcpy(b_temp, b);
    Ni(a_temp);Ni(b_temp);
    for (i = 0;a_temp[i];++i)
    {
        if (a_temp[i] < '0')
            {--a_temp[i+1];a_temp[i] += 10;}
        if (!b_temp[i])b_temp[i] = '0';
        if(a_temp[i] >= b_temp[i])
            result[i] = a_temp[i] - b_temp[i] + '0';
        else
        {
            result[i] = a_temp[i] - b_temp[i] + '0' + 10;
            --a_temp[i+1];
        }
    }
    while (--i && result[i] == '0')
        result[i] = '\0';
    Ni(result);
}
int main()
{
    char a[MAX], b[MAX];//操作数
    char result[MAX] = {0};//结果
    gets(a);gets(b);
    if (compare(a, b))
        Sub(a, b, result);
    else
    {
        putchar('-');
        Sub(b, a, result);
    }
    puts(result);

    return 0;
}


[ 本帖最后由 azzbcc 于 2013-1-5 15:07 编辑 ]


[fly]存在即是合理[/fly]
2013-01-05 15:02
轩志
Rank: 1
等 级:新手上路
帖 子:13
专家分:1
注 册:2012-12-16
收藏
得分:0 
DEV C++运行不了

好好学习,一定会学好的
2013-01-05 15:17
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
void Ni(char *a)
 {    //将字符串逆序
     char temp;
     int i, j;
     int len = strlen(a);
     for (i = 0, j = len - 1;i < j;++i, --j)
         temp = a[i], a[i] = a[j], a[j] = temp;
 }
 还不行我也没办法了


[fly]存在即是合理[/fly]
2013-01-05 15:20
快速回复:长整数运算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029564 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved