要求:
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);
}