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