C语言 小小工具箱

要求:

1.主菜单

编写程序能够显示以下的主菜单:

*******************************

*              主菜单                *

*       1.字母数字转换       *

*       2.奖金发放              *

*       3.当年第几天           *

*       4.打印水仙花           *

*       5.查找最大最小数    *

*       6.退出                      *

********************************

在主菜单程序中,根据输入的数字 1~6 来选择相应的选项,在执行完每一个选项之后,返回继续选择菜 单选项(选 6 结束程序运行)。每一个菜单要完成的任务由下面的 2~7 依次给出。编写的源程序提交到平台题 目答案窗口中。

2.字母数字转换

编写一个函数,能够将大写字母号码转换成数字号码(以回车结束输入): 例如:输入电话号码:CALLATT,则输出:2255288。 输入电话号码:1-800-COL-LECT,则输出:1-800-265-5328。 提示:大写字母、数字对照表如下:2=ABC,3=DEF,4=GHI,5=JKL,6=MNO,7=PQRS,8=TUV,9=WXYZ。 如果输入的字符串中出现了非大写字母字符,则这部分字符保持不变。

3.奖金发放

企业发放的奖金根据利润提成。每月利润低于或等于 10 万元时,奖金可提 10%;利润高于 10 万元,低 于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可提成 7.5%;20 万到 40 万之间时,高 于 20 万元的部分,可提成 5%;40 万到 60 万之间时,高于 40 万元的部分按 3%提成;60 万到 100 万之间时, 高于 60 万元的部分按 1.5%提成;超过 100 万的按照 1%提成。编写一个函数从键盘输入当月利润,输出应发 放奖金的总数。

4.当年第几天

编写一个函数,从键盘输入某个年月日后,能计算出该日期是当年的第几天。

5.打印水仙花数

三位水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。编写一个函数,从键盘输入一个三位整数 n,能将 100~n 之间的所有水仙花数打印输出。

6.查找最大最小数

编写函数,从键盘上输入 n 个整数,找出其中最大的和最小的数。要求输入 n 的值,以及这 n 个数。

7.退出

输入菜单项的第 6 项,退出整个程序的运行。

运行代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
    int a;
    int k=1;
    void str();
    void profit();
    void day();
    void num();
    void max_min();
    void choice();
    
    printf("*******************************\n");
    printf("*            主菜单           *\n");
    printf("*     1.字母数字转换         *\n");
    printf("*     2.奖金发放             *\n");
    printf("*     3.当年第几天           *\n");
    printf("*     4.打印水仙花           *\n");
    printf("*     5.查找最大最小数       *\n");
    printf("*     6.退出                 *\n");
    printf("*******************************\n");
    
    while(k!=0) //实现循环调用 
    {
    choice();
    scanf("%d",&a); 
    switch(a)
    {
        case 1:str();     break;
        case 2:profit();  break;
        case 3:day();     break;
        case 4:num();     break;
        case 5:max_min(); break;
        case 6:k=0;       break;    
    }

    }
    return 0;
}
 
void choice()
{
    printf("Please input your choice (1-6) :");
}

void str()
{
    int i;
    char c;
    c=getchar();
    printf("Please input a string :");
while((c=getchar())!='\n')
    {
        if(c>='A'&&c<='C')
        printf("2");
        else if(c>='D'&&c<='F')
        printf("3");
        else if(c>='G'&&c<='I')
        printf("4");
        else if(c>='J'&&c<='L')
        printf("5");
        else if(c>='M'&&c<='O')
        printf("6");
        else if(c>='P'&&c<='S')
        printf("7");
        else if(c>='T'&&c<='V')
        printf("8");
        else if(c>='W'&&c<='Z')
        printf("9");
        else printf("%c",c);
     } 
     printf("\n");
    
}
 
void profit()
{
    long int i;
    int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    
    //输入利润
    printf( "Please input the profit :" );
    scanf("%d",&i);
    
    //计算基准奖金
    bonus1  = (int)(0.1*100000);  //超过10万时前10万部分奖金
    bonus2  = bonus1+ (int)(100000*0.075);  //超过20万时前20万部分奖金
    bonus4  = bonus2+ (int)(200000*0.05);   //超过40万时前40万部分奖金
    bonus6  = bonus4+ (int)(200000*0.03);   //超过60万时前60万部分奖金
    bonus10 = bonus6+ (int)(400000*0.015);  //超过100万时前100万部分奖金
    
    //计算区间内奖金
    if(i<=100000)
        bonus = (int)(i*0.1);
    else if(i<=200000)
        bonus = bonus1+ (int)((i-100000)*0.075);
    else if(i<=400000)
        bonus = bonus2+ (int)((i-200000)*0.05);
    else if(i<=600000)
        bonus = bonus4+ (int)((i-400000)*0.03);
    else if(i<=1000000)
        bonus = bonus6+ (int)((i-600000)*0.015);
    else
        bonus = bonus10+ (int)((i-1000000)*0.01);
    
    //打印计算结果
    printf("bonus=%d\n",bonus);
    
}
 
void day()
{
    int y,m,d;
    int leap=0;
    int s=0,k; 
    printf("please input year,month,day :");
    
    scanf("%d,%d,%d",&y,&m,&d);
    //先判断该年是否是闰年
    if((y%4==0&&y%100!=0)||(y%400==0)) 
        leap=1;
    else
        leap=0;
    //若为闰年
    k=m-1;
    if(leap==1)
    {
        switch(k)
        {
            case 12:s=s+31;
            case 11:s=s+30;
            case 10:s=s+31;
            case 9:s=s+30;
            case 8:s=s+31;
            case 7:s=s+31;
            case 6:s=s+30;
            case 5:s=s+31;
            case 4:s=s+30;
            case 3:s=s+31;
            case 2:s=s+29;
            case 1:s=s+31;break;
 
        }
    }
    else if(leap==0)
    {
        switch(k)
        {
            case 12:s=s+31;
            case 11:s=s+30;
            case 10:s=s+31;
            case 9:s=s+30;
            case 8:s=s+31;
            case 7:s=s+31;
            case 6:s=s+30;
            case 5:s=s+31;
            case 4:s=s+30;
            case 3:s=s+31;
            case 2:s=s+28;
            case 1:s=s+31;break;
        }
    }
    s=s+d;
    printf("It is the %dth day\n",s);
    
}
 
void num()
{
    int n;
    int i;
    int a,b,c;
    printf("Please input n :");
    scanf("%d",&n);
    printf("water flower' number is:\n");
    for(i=100;i<n+1;i++)
    {
        a=i/100;b=(i/10)%10;c=i%10;
        if(i==pow(a,3)+pow(b,3)+pow(c,3))
        printf("%d\n",i);
    }
}
 
void max_min()
{
    int n,i;
    int a[100];
    int max,min;
    printf("Please input n :");
    scanf("%d",&n);
    printf("Please input data :");
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    } 
    max=min=a[0];
    for(i=0;i<n;i++)
    {
        if(max<a[i])
        max=a[i];
    }
        for(i=0;i<n;i++)
    {
        if(min>a[i])
        min=a[i];
    }
    
    printf("Max number is %d\n",max);
    printf("Min number is %d\n",min);
    
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值