异域寒人 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 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error