六小珏o

导航

C语言寒假大作战04

问题 回答
这个作业属于哪个课程 班级链接
这个作业要求在哪里 作业要求链接
这个作业的目标 编写各年级题目操作函数并有答案,了解%g的含义
作业正文 正文链接
其他参考文献 《%g资料》

1. 设计思路和遇到的问题

1.1 设计思路

  • 菜单程序函数调用图:

  • 思路:自定义函数年级的题目的程序,用rand随机数来表示题目要求的数和标点符号,标点符号定义字符型变量,把结果也用程序表示出来,有些结果是%g型的,比前几次作业多了几步运算结果的代码。

1.2 遇到的问题

  • 写完代码后编译出错,它提示我的一步else找不到if前提,我觉得应该是我用分号就表明那句程序结束了,所以加了大括号把if的实行句和else的分别括了起来,然后就可以识别了。

2. 程序结果截图

3. 程序代码

#include<stdio.h>
#include<stdlib.h>
void operation1(){
	int a,b,i,c;
	printf("现在是一年级题目:\n请输入生成个数>");
	scanf("%d",&a);
	for(i=0;i<a;i++){
		int shu1=rand()%11;
		int shu2=rand()%11;
		char fh[2]={'+','-'};
		b=rand()%2;
		if(fh[b]=='+') c=shu1+shu2;
		else c=shu1-shu2;
		printf("%2d %c %2d = %2d\n",shu1,fh[b],shu2,c);
	}
	printf("\n\n");
} 
void operation2(){
	int a,b,i;
	double c;
	printf("现在是二年级题目:\n请输入生成个数>");
	scanf("%d",&a);
	for(i=0;i<a;i++){
		int shu1=rand()%101;
		int shu2=rand()%101;
		int shu3=rand()%100+1;
		char fh[2]={'*','/'};
		b=rand()%2;
		if(fh[b]=='/'){
		 c=shu1*0.1/shu3;
		printf("%2d %c %2d = %2g\n",shu1,fh[b],shu3,c);} 
		else{ c=shu1*shu2;
		printf("%2d %c %2d = %2g\n",shu1,fh[b],shu2,c);} 
	}
	printf("\n\n");
}
void operation3(){
	int a,b,c,d,i,b1;
	double answer;
	printf("现在是三年级题目:\n请输入生成个数>");
	scanf("%d",&a);
	for(i=0;i<a;i++){
		int shu1=rand()%101;
		int shu2=rand()%101;
		int shu3=rand()%101;
		int shu4=rand()%100+1;
		char fh[4]={'+','-','*','/'};
		b=rand()%4;
		b1=rand()%4;
		if(fh[b]=='/'&&shu2==0) shu2=shu4;
		if(fh[b1]=='/'&&shu3==0) shu3=shu4;
		switch(fh[b])
		{
			case '+':c=1;break;
			case '-':c=2;break;
			case '*':c=3;break;
			case '/':c=4;break;
		}
		switch(fh[b1])
		{
			case '+':d=1;break;
			case '-':d=2;break;
			case '*':d=3;break;
			case '/':d=4;break;
		}
		switch(c)
		{
			case 1:
				if(d==1) answer=shu1+shu2+shu3;
				else if(d==2) answer=shu1+shu2-shu3;
				else if(d==3) answer=shu1+shu2*shu3;
			    else answer=shu1+shu2*0.1/shu3;
			case 2:
				if(d==1) answer=shu1-shu2+shu3;
				else if(d==2) answer=shu1-shu2-shu3;
				else if(d==3) answer=shu1-shu2*shu3;
			    else answer=shu1-shu2*0.1/shu3;
			case 3:
				if(d==1) answer=shu1*shu2+shu3;
				else if(d==2) answer=shu1*shu2-shu3;
				else if(d==3) answer=shu1*shu2*shu3;
			    else answer=shu1*shu2*0.1/shu3;
			case 4:
				if(d==1) answer=shu1*0.1/shu2+shu3;
				else if(d==2) answer=shu1*0.1/shu2-shu3;
				else if(d==3) answer=shu1*0.1/shu2*shu3;
			    else answer=shu1*0.1/shu2*0.1/shu3;
		}
		printf("%2d %c %2d %c %2d = %2g\n",shu1,fh[b],shu2,fh[b1],shu3,answer);
		
	}
	printf("\n\n");
}
void menu(){
	printf("操作列表:\n1)一年级    2)二年级    3)三年级\n4)帮助     5)退出程序\n请输入操作>");
} 
void help(){
	printf("帮助信息:\n您需要输入命令代号来进行操作,且\n一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n");
} 
void error(){
	printf("Error!!!\n错误操作指令,请重新输入\n\n"); 
}
int main(){
	int Grade=1;
	printf("========口算生成器========\n欢迎使用口算生成器:)\n\n");
	help();
	menu();
	while(Grade!=5){
		scanf("%d",&Grade);
		printf("<执行操作:)\n\n");
		switch(Grade){
			case 1:operation1();break;
			case 2:operation2();break;
			case 3:operation3();break;
			case 4:help();break;
			case 5:printf("程序结束,欢迎下次使用  任意键结束......\n");break;
			default:error();break;
		}if(Grade!=5) menu();
	}
	return 0;
}

4. Gitee上传截图与链接

4.1 截图

4.2 gitee链接

20199250

posted on 2020-02-16 15:27  六小珏o  阅读(150)  评论(0编辑  收藏  举报