异域寒人 2021-06-30 19:23 采纳率: 55.6%
浏览 15
已采纳

设计计算器这个,谁能帮我写下代码

img

  • 写回答

1条回答 默认 最新

  • 黑马星云 2021-06-30 21:29
    关注

    第一种是最基本的一种,(C++): #include using namespace std; int main(){ int a,b;//定义两个整数 char c;//操作符 cin>>a>>b>>c; if(c=='+'){//加 cout<<a+b; }

    else if(c=='-'){//减 cout<<a-b; } else if(c==''){//乘 cout<<ab; } else if(c=='/'){//除 if(b==0){ //除数为0的情况 cout<<"Divided by zero!"; } else{ cout<<a/b;//判断为无效操作符 } } else{ cout<<"Invalid operator!";//输出 } return 0; }

    第二种是高级的一种,功能也很全,代码如下:

    #include <stdio.h> #include <math.h> #include<malloc.h> void jingtailianbiao(); void dongtailianbiao(); int stu_num; #define LEN sizeof(struct student) struct student { long num; float score; struct student *next; }; struct student_score { long num; char name[10]; float score;
    }; int main() { int select; printf("************************************************\n"); printf(" 小小计算器 Design By 海与炜 \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 计算从1到输入数之间的奇数和(for) \n"); printf(" 10 计算从1到输入数之间的偶数和(while) \n"); printf(" 11 输出从1到输入数之间所有3的倍数 \n"); printf(" 12 求即被3整除又被5整除的数 \n"); printf(" 13 判断数字位数 \n"); printf(" 14 求水仙花数 \n"); printf(" 15 求最大值 \n"); printf(" 16 求最大最小值 \n"); printf(" 17 冒泡排序 \n"); printf(" 18 矩阵转置 \n"); printf(" 19 求对角线和 \n"); printf(" 20 统计单词个数 \n"); printf(" 21 静态创建链表 \n"); printf(" 22 动态创建链表 \n"); printf(" 23 学生成绩排序 \n"); printf(" 24 学生成绩普涨10分 \n"); printf(" 输入任意非功能选项序号退出小小计算器 *\n"); printf("**********************************************\n"); printf("输入菜单项:\n"); scanf("%d",&select); switch (select) { case 1: { float num1,num2; printf("做加法。\n"); printf("输入两个数,逗号分隔。\n"); scanf("%f,%f",&num1,&num2); printf("%f+%f=%f\n",num1,num2,num1+num2); break; } case 2: { float num1,num2; printf("做减法。\n"); printf("输入两个数,逗号分隔。\n"); scanf("%f,%f",&num1,&num2); printf("%f-%f=%f\n",num1,num2,num1-num2); break; } case 3: { float num1,num2; printf("做乘法。\n"); printf("输入两个数,逗号分隔。\n"); scanf("%f,%f",&num1,&num2); printf("%f%f=%f\n",num1,num2,num1*num2); break; } case 4: { float num1,num2; printf("做除法。\n"); printf("输入两个数,逗号分隔。\n"); scanf("%f,%f",&num1,&num2); printf("%f/%f=%f\n",num1,num2,num1/num2); break; } case 5: { float num1,num2; printf("取模运算。\n"); printf("输入两个数,逗号分隔。\n"); scanf("%f,%f",&num1,&num2); printf("%f%%%f=%f\n",num1,num2,fmod(num1,num2)); break; } case 6: { float r; double s; printf("计算圆面积。\n"); printf("请输入半径:\n"); scanf("%f",&r); if (r >= 0) { s=3.14rr; printf("圆面积是:%lf\n",s); } else printf ("半径输入错误!\n"); break; } case 7: { int year,leap; printf("判断闰年。\n"); printf("enter year"); scanf("%d",&year); if((year%4==0&&year%100!=0)||(year%400==0)) leap=1; else leap=0; if(leap) printf("%d is",year); else printf("%d is not",year); printf("a leap year\n"); break; } case 8: { int a; printf("成绩转化。\n"); scanf("%d",&a); if(a>=90) printf("优"); else if(a>=80) printf("良"); else if(a>=70) printf("中"); else if(a>=60) printf("差"); else printf("不及格"); break; } case 13: { long int num,num_t; int digits=0,i=1; printf("判断数字位数。\n"); printf("输入待判断数字:"); scanf("%ld",&num); num_t=num; do digits++; while((num_t/=10)>0); printf("%ld是%d位数。\n",num,digits); while(digits>=i); { printf("%ld的第%d位数是:%d\n",num,i,(num/(long)pow(10,(digits-i)))%10); i++; } break; } case 9: { int n,sum=0,i; printf("输入一个数:\n"); scanf("%d",&n); for(i=1;i<=n;i++) if(i%2!=0) sum+=i; printf("从1到输入数之间的奇数和是:%d\n",sum); break; } case 10: { int sum,i,n; i=1; sum=0; printf("输入一个数:\n"); scanf("%d",&n); while(i<=n) { if(i%2==0) sum+=i; i++; } printf("从1到输入数之间的偶数和是:%d\n",sum); break; } case 12: { int n,i,m; printf("输入两个数:\n"); scanf("%d,%d",&n,&m); for(i=n;i<=m;i++) if(i%3==0&&i%5==0) { printf("既能被3整除又能被5整除的数:%d\n",i); } break; } case 11: { int sum,i,m; i=1; sum=0; printf("输入一个数:\n"); scanf("%d",&m);
    do { if(i%3==0) sum+=i; i++; } while(i<=m); printf("从1到输入数之间所有3的倍数:%d\n",sum); break; } case 14: { int i=100; int a,b,c; for(i=100;i<1000;i++) { a=i/100; b=(i-a*100)/10; c=(i-a*100-b*10); if(a*a*a+b*b*b+c*c*c==i) { printf("水仙花数:%d\n",i); } } break; } case 15: { int a,b,c; printf("请输入两个数\n"); scanf("%d,%d",&a,&b); if(a>=b) c=a; else c=b; printf("最大值为:%d\n",c); break; } case 16: { int a,b,c,d; printf("请输入两个数\n"); scanf("%d,%d",&a,&b); if(a>=b) { c=a; d=b; } else { c=b; d=a; } printf("最大值为:%d\n",c); printf("最小值为:%d\n",d); break; } case 17: { int i,j,k; int a[10]; printf("输入十个数: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++)
    for(i=0;i<9-j;i++)
    if(a[i]>a[i+1])
    { k=a[i]; a[i]=a[i+1]; a[i+1]=k; } printf("排序后: \n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); break; } case 18: { int i,j; int array[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int temp; printf("原矩阵:\n"); for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf("%d\t",array[i][j]); } printf("\n"); } for(i=0;i<4;i++) { for(j=i;j<4;j++) { temp=array[i][j]; array[i][j]=array[j][i]; array[j][i]=temp; } } printf("转置矩阵:\n"); for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf("%d\t",array[i][j]); } printf("\n"); } break; } case 19: { int i,j; int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int sum=0; printf("原矩阵:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d\t",a[i][j]); } sum+=a[i][i]; printf("\n"); } printf("对角线的和等于:%d\n",sum); break; } case 20: { char string[81],c; int i,num=0,word=0; printf("请输入一句话:\n"); c=getchar(); gets(string); for(i=0;(c=string[i])!='\0';i++) { if(c==' ')

                {
                    word=0;
                }
                else if(word==0)
                {
                    word=1;
                    num++;
                }
            }
            printf("%d words\n",num);
            break;
        }
    case 21:
        {
            jingtailianbiao();
            break;
        }
    case 22:
        {
            printf("请输入两个数,逗号隔开。输入负数结束。\n");
            dongtailianbiao();
            break;
        }
                case 23:
                    {
                        float sum=0;
                        struct student_score stu_temp,stu[10];
                        printf("分别输入10位学生的学号姓名和成绩 ,用空格隔开。\n");
                        
                        for (int i=0;i<10;i++)
                        {
                            scanf("%d %s %f",&stu[i].num,&stu[i].name,&stu[i].score);
                            sum+=stu[i].score;
                        }            
                        for (i=0;i<9;i++)
                            for (int j=0;j<9-i;j++)
                                if (stu[j].score>stu[j+1].score)
                                {
                                    stu_temp = stu[j];
                                    stu[j] = stu[j+1];
                                    stu[j+1] = stu_temp;
                                }
                                printf("按成绩从低到高排序为:\n");
                                for (i=0;i<10;i++)
                                {        
                                    printf("学号:%d\t姓名:%s\t成绩:%.1f\n",stu[i].num,stu[i].name,stu[i].score);
                                }            
                                printf("成绩总和为:%.1f\n",sum);
                                break;
                    }
                case 24:{
                    printf("将为d盘根目录下的文本文件my.txt内的10位学生的学生成绩分别加10分,请确保此文件存在!\n");
                    int i,a[10];
                    FILE *fp;
                    fp=fopen("d:\\my.txt","r+");
                    for(i=0;i<10;i++)
                        fscanf(fp,"%d",&a[i]);
                    rewind(fp);
                    for(i=0;i<10;i++)
                        fprintf(fp,"%d\n",a[i]+10);
                    fclose(fp);
                    printf("保存完毕!\n");
                    break;
                        }
    }
    return 0 ;
    

    } void jingtailianbiao() { struct student a,b,c,d,*head,*p; a.num=1; a.score=96; b.num=2; b.score=99.5; c.num=3; c.score=96; d.num=4; d.score=98; head=&a; a.next=&b; b.next=&c; c.next=&d; d.next=0; p=head; do { printf("%ld %5.1f\n",p->num,p->score); p=p->next; } while(p!=0); }

    struct student * creat() { struct student *head; struct student p1,p2; stu_num=0; p1=p2=(struct student)malloc(LEN); scanf("%ld,%f",&p1->num,&p1->score); head=0; while(p1->num>=0) { stu_num=stu_num+1; if(stu_num==1) head=p1; else p2->next=p1; p2=p1; p1=(struct student)malloc(LEN); scanf("%ld,%f",&p1->num,&p1->score); } p2->next=0; return (head); }

    void print(struct student *head) { struct student *p;
    p=head; printf("你输入的动态链表为:\n",stu_num); if(head!=0) do { printf("%ld %5.1f\n",p->num,p->score); p=p->next;
    } while(p!=0); } void dongtailianbiao() { struct student *link; link=creat(); print(link); }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab