Be in hell
2019-11-25 21:16
采纳率: 43.8%
浏览 251

修改代码,按图示要求

#include "stdio.h"
#include "string.h"//字符串函数
#include "stdlib.h"
long Fact(int n);
long FactSum(int v);
//函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数
void displaymain()//显示主菜单
{
printf("*******************\n");
printf("简易计算器\n");
printf("*******************\n");
printf("请选择\n");
printf("1:加法\n");
printf("2:减法\n");
printf("3:乘法\n");
printf("4:除法\n");
printf("5:求余\n");
printf("6:累加\n");
printf("7:阶乘\n");
printf("8:阶乘累加\n");
printf("9:退出系统\n");
}
void password()
{
int i=0,temp;
char password[10]={0}; //声明一个最多有十个元素的数组,并且初始化值为0;
printf("请输入密码:");
scanf("%s",password);//输入密码(字符串)
if(strcmp("19491001",password)==0)//strcmp:比较两个字符串是否一样
{
printf("登陆成功\n");
int choice,flag=0;
void displaymain();
void plus();
void minus();
void multiply();
void divide();
void complementation();
void accumulation();
int factorial();
int factorialSum();
void tuichu();
while(flag==0)
{
putchar('\n');
displaymain();
printf("please input a digital(1-7)\n");
scanf("%d",&choice);
if(choice>=1&&choice<=7)
switch(choice)
{
case 1:plus();break;
case 2:minus();break;
case 3:multiply();break;
case 4:divide();break;
case 5:complementation();break;
case 6:accumulation();break;
case 7:factorial();break;
case 8:factorialSum();break;
case 9:tuichu();break;
default:printf("选项输入错误!\n");
}

}
getch();
//菜单

}
else
{
    printf("密码错误\n");
}

}

void plus()
{
double a,b,temp;
printf("请输入以空格分隔的两个运算数:\n");
scanf("%lf %lf",&a,&b);
temp=a+b;
printf("结果是:%lf",temp);
}
void minus()
{
double a,b,temp;
printf("请输入被减数与减数(并用空格隔开):\n");
scanf("%lf %lf",&a,&b);
temp=a-b;
printf("结果是:%f",temp);
}
void multiply()
{
double a,b,temp;
printf("请输入以空格分隔的两个运算数:\n");
scanf("%lf %lf",&a,&b);
temp=a*b;
printf("结果是:%f",temp);
}
void divide()
{
double a,b,temp;
printf("请输入被除数与除数(并用空格隔开):\n");
scanf("%lf %lf",&a,&b);
if(b!=0)
{
temp=a/b;
printf("结果是:%f",temp);
}

else
printf("错误!\n");
}

void complementation()
{
int a,b,temp;
printf("请输入两个用空格隔开的运算数:\n");
scanf("%d %d",&a,&b);
if(b!=0)
{
temp=a%b;
printf("结果是:%d",temp);
}
else
printf("错误!\n");
}
void accumulation()
{
int n,temp;
int a,sum=1;
printf("请输入要求累加的数值:\n");
scanf("%d",&n);
for(a=2;a<=n;a++)
{
sum+=a;
}
temp=sum;
printf("累加和为:%d\n",temp);
}
int factorial()
{
int m;
long ret,temp;
printf("请输入想求的阶乘数:");
scanf("%d",&m);
ret = Fact(m);//调用函数Fact(),并将函数的返回值存入ret
if(ret==-1)
printf("输入错误!\n");
else
{
temp=ret;
printf("结果是:%d",temp);
}

return 0;
}
long Fact(int n)//函数的定义(作用:计算输入阶乘数的阶乘,并将结果返回主函数,且当n<0时,返回-1)
{
int i;
long result = 1;
if(n<0)
{
return -1;
}
else
{
for(i = 2;i<=n;i++)
{
result*=i;
}
return result;
}
}
int factorialSum()
{
int m;
long ret,temp;
printf("请输入想求的阶乘和数:");
scanf("%d",&m);
ret = FactSum(m);//调用函数Fact(),并将函数的返回值存入ret
if(ret==-1)
printf("输入错误!\n");
else
temp=ret;
return 0;
}
long FactSum(int v)//函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数,且当n<0时,返回-1)
{
int i;
long W=1,j = 1;
if(v<0)
{
return -1;
}
else
{
for(i = 2;i<=v;i++)
{
j*=i;
W+=j;
}
return W;
}
}
void tuichu()
{
printf("已退出");
}
void main()
{
int temp;
password();
printf("结果是:%lf",temp);
}
图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • QiQaWgYu 2019-11-26 00:27
    已采纳
    #include "stdio.h"
    #include "string.h"//字符串函数
    #include "stdlib.h"
    long Fact(int n);
    long FactSum(int v);
    void displaymain();
    void plus();
    void minus();
    void multiply();
    void divide();
    void complementation();
    void accumulation();
    int factorial();
    int factorialSum();
    void tuichu();
    //函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数
    void displaymain()//显示主菜单
    {
        printf("*******************\n");
        printf("简易计算器\n");
        printf("*******************\n");
        printf("请选择\n");
        printf("1:加法\n");
        printf("2:减法\n");
        printf("3:乘法\n");
        printf("4:除法\n");
        printf("5:求余\n");
        printf("6:累加\n");
        printf("7:阶乘\n");
        printf("8:阶乘累加\n");
        printf("9:退出系统\n");
    }
    void password()
    {
        int i = 0, count = 0;
        char password[10] = { 0 }; //声明一个最多有十个元素的数组,并且初始化值为0;
        do {
            printf("请输入密码:");
            scanf("%s", password);//输入密码(字符串)
            if (strcmp("19491001", password) == 0)
                break;
            else
            {
                count++;
                printf("密码错误\n");
            }
        } while (count < 3);
        //strcmp:比较两个字符串是否一样
        if (strcmp("19491001", password) == 0) {
            printf("登陆成功\n");
            int choice, flag = 0;
            while (flag == 0)
            {
                putchar('\n');
                displaymain();
                printf("please input a digital(1-9)\n");
                scanf("%d", &choice);
                if (choice >= 1 && choice <= 9)
                    switch (choice)
                    {
                    case 1:plus(); break;
                    case 2:minus(); break;
                    case 3:multiply(); break;
                    case 4:divide(); break;
                    case 5:complementation(); break;
                    case 6:accumulation(); break;
                    case 7:factorial(); break;
                    case 8:factorialSum(); break;
                    case 9:tuichu(); flag = 1; break;
                    default:printf("选项输入错误!\n");
                    }
            }
            getchar();
            //菜单
        }
    }
    
    void plus()
    {
        double a, b, temp;
        printf("请输入以空格分隔的两个运算数:\n");
        scanf("%lf %lf", &a, &b);
        temp = a + b;
        printf("结果是:%lf", temp);
    }
    void minus()
    {
        double a, b, temp;
        printf("请输入被减数与减数(并用空格隔开):\n");
        scanf("%lf %lf", &a, &b);
        temp = a - b;
        printf("结果是:%f", temp);
    }
    void multiply()
    {
        double a, b, temp;
        printf("请输入以空格分隔的两个运算数:\n");
        scanf("%lf %lf", &a, &b);
        temp = a * b;
        printf("结果是:%f", temp);
    }
    void divide()
    {
        double a, b, temp;
        printf("请输入被除数与除数(并用空格隔开):\n");
        scanf("%lf %lf", &a, &b);
        if (b != 0)
        {
            temp = a / b;
            printf("结果是:%f", temp);
        }
    
        else
            printf("错误!\n");
    }
    
    void complementation()
    {
        int a, b, temp;
        printf("请输入两个用空格隔开的运算数:\n");
        scanf("%d %d", &a, &b);
        if (b != 0)
        {
            temp = a % b;
            printf("结果是:%d", temp);
        }
        else
            printf("错误!\n");
    }
    void accumulation()
    {
        int n, temp;
        int a, sum = 1;
        printf("请输入要求累加的数值:\n");
        scanf("%d", &n);
        for (a = 2; a <= n; a++)
        {
            sum += a;
        }
        temp = sum;
        printf("累加和为:%d\n", temp);
    }
    int factorial()
    {
        int m;
        long ret, temp;
        printf("请输入想求的阶乘数:");
        scanf("%d", &m);
        ret = Fact(m);//调用函数Fact(),并将函数的返回值存入ret
        if (ret == -1)
            printf("输入错误!\n");
        else
        {
            temp = ret;
            printf("结果是:%d", temp);
        }
    
        return 0;
    }
    long Fact(int n)//函数的定义(作用:计算输入阶乘数的阶乘,并将结果返回主函数,且当n<0时,返回-1)
    {
        int i;
        long result = 1;
        if (n < 0)
        {
            return -1;
        }
        else
        {
            for (i = 2; i <= n; i++)
            {
                result *= i;
            }
            return result;
        }
    }
    int factorialSum()
    {
        int m;
        long ret, temp;
        printf("请输入想求的阶乘和数:");
        scanf("%d", &m);
        ret = FactSum(m);//调用函数Fact(),并将函数的返回值存入ret
        if (ret == -1)
            printf("输入错误!\n");
        else {
            temp = ret;
            printf("结果是:%d", temp);
        }
        return 0;
    }
    long FactSum(int v)//函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数,且当n<0时,返回-1)
    {
        int i;
        long W = 1, j = 1;
        if (v < 0)
        {
            return -1;
        }
        else
        {
            for (i = 2; i <= v; i++)
            {
                j *= i;
                W += j;
            }
            return W;
        }
    }
    void tuichu()
    {
        printf("已退出");
    }
    int main()
    {
        password();
        return 0;
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2019-11-25 23:54
    评论
    解决 无用
    打赏 举报
  • 喜欢喝茶的猫 2019-11-26 09:38
    #include "stdio.h"
    #include "string.h"//字符串函数
    #include "stdlib.h"
    #include<stdbool.h>
    long Fact(int n);
    long FactSum(int v);
    //函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数
    void displaymain()//显示主菜单
    {
    printf("*******************\n");
    printf("简易计算器\n");
    printf("*******************\n");
    printf("请选择\n");
    printf("1:加法\n");
    printf("2:减法\n");
    printf("3:乘法\n");
    printf("4:除法\n");
    printf("5:求余\n");
    printf("6:累加\n");
    printf("7:阶乘\n");
    printf("8:阶乘累加\n");
    printf("9:退出系统\n");
    }
    void password()
    {
    int i=0,temp;
    bool login_status=false;
    char password[10]={0}; //声明一个最多有十个元素的数组,并且初始化值为0;
    //for(i=0;i {
    for(i=0;i<3;i++)
    {
     printf("请输入密码:");
     scanf("%s",password);//输入密码(字符串)
     if(strcmp("19491001",password)==0)
     {
         login_status=true;
         break;
     }else printf("密码错误,重新输入");
     }
    
    
    if(true==login_status)//strcmp:比较两个字符串是否一样
    {
    printf("登陆成功\n");
    int choice,flag=0;
    void displaymain();
    void plus();
    void minus();
    void multiply();
    void divide();
    void complementation();
    void accumulation();
    int factorial();
    int factorialSum();
    while(flag==0)
    {
    putchar('\n');
    displaymain();
    printf("please input a digital(1-9)\n");
    scanf("%d",&choice);
    if(choice>=1&&choice<=9)
    switch(choice)
    {
    case 1:plus();break;
    case 2:minus();break;
    case 3:multiply();break;
    case 4:divide();break;
    case 5:complementation();break;
    case 6:accumulation();break;
    case 7:factorial();break;
    case 8:factorialSum();break;
    case 9:flag=1;break;
    default:printf("选项输入错误!\n");
    }
    else
    {
    printf("your inputs is error!\n");flag=1;
    }
    }
    
    //菜单
    
        }
        else
        {
            printf("密码错误超过三次\n");
        }
    }
    
    void plus()
    {
    double a,b,temp;
    printf("请输入以空格分隔的两个运算数:\n");
    scanf("%lf %lf",&a,&b);
    temp=a+b;
    printf("结果是:%lf",temp);
    }
    void minus()
    {
    double a,b,temp;
    printf("请输入被减数与减数(并用空格隔开):\n");
    scanf("%lf %lf",&a,&b);
    temp=a-b;
    printf("结果是:%f",temp);
    }
    void multiply()
    {
    double a,b,temp;
    printf("请输入以空格分隔的两个运算数:\n");
    scanf("%lf %lf",&a,&b);
    temp=a*b;
    printf("结果是:%f",temp);
    }
    void divide()
    {
    double a,b,temp;
    printf("请输入被除数与除数(并用空格隔开):\n");
    scanf("%lf %lf",&a,&b);
    if(b!=0)
    {
        temp=a/b;
        printf("结果是:%f",temp);
    }
    
    
    else
    printf("错误!\n");
    }
    
    void complementation()
    {
    int a,b,temp;
    printf("请输入两个用空格隔开的运算数:\n");
    scanf("%d %d",&a,&b);
    if(b!=0)
    {
    temp=a%b;
    printf("结果是:%d",temp);
    }
    else
    printf("错误!\n");
    }
    void accumulation()
    {
    int n,temp;
    int a,sum=1;
    printf("请输入要求累加的数值:\n");
    scanf("%d",&n);
    for(a=2;a<=n;a++)
    {
    sum+=a;
    }
    temp=sum;
    printf("累加和为:%d\n",temp);
    }
    int factorial()
    {
    int m;
    long ret,temp;
    printf("请输入想求的阶乘数:");
    scanf("%d",&m);
    ret = Fact(m);//调用函数Fact(),并将函数的返回值存入ret
    if(ret==-1)
    printf("输入错误!\n");
    else
    {
    temp=ret;
    printf("结果是:%d",temp);
    }
    
    return 0;
    }
    long Fact(int n)//函数的定义(作用:计算输入阶乘数的阶乘,并将结果返回主函数,且当n<0时,返回-1)
    {
    int i;
    long result = 1;
    if(n<0)
    {
    return -1;
    }
    else
    {
    for(i = 2;i<=n;i++)
    {
    result*=i;
    }
    return result;
    }
    }
    int factorialSum()
    {
    int m,i;
    long ret=0;
    printf("请输入想求的阶乘和数:");
    scanf("%d",&m);
    //ret = FactSum(m);
    if(m<=0)
    printf("输入错误!\n");
    else
    {
        for(i=1;i<=m;i++)
        {
          ret += FactSum(i);
        }
    }
    printf("结果是:");
    for(i=1;i<=m;i++)
        printf("%d!+",i);
    printf("\b=%d",ret);
    return 0;
    }
    long FactSum(int v)//函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数,且当n<0时,返回-1)
    {
    int i;
    long result=1,j = 1;
    if(v<=0)
    {
    return -1;
    }
    else
    {
    for(i = 1;i<=v;i++)
        {
        result*=i;
        //result+=j;
        }
    return result;
    }
    }
    void main()
    {
    
    password();
    printf("运行结束");
    }
    
    
    评论
    解决 无用
    打赏 举报
  • Be in hell 2019-11-26 10:00

    大神,就是不用那个bool那个函数,加一个while循环,实现功能

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题