zoukankan      html  css  js  c++  java
  • C语言寒假大作战03

    2.1.1C语言寒假大作战03

    这个作业属于哪个课程 2019级软件工程4班 (中南林业科技大学涉外学院)
    这个作业要求在哪里 C语言寒假大作战03
    这个作业的目标 学会函数的基本操作 形参实参的使用 尝试编写一个功能性强的程序
    参考资料 C 库函数 - rand()

    2.1.2 程序截图:


    2.2.2 设计思路和遇到的问题

    我最初提交的代码是缺少一步检验过程,就是程序输出的式子不能“a/b 而b=0”这样的情况出现。而我则偷懒,干脆将b的随机数范围改为1到99,则

    b=rand()%99+1;
    

    但会这样会缺少"a*b 且 b=0 "的情况,这样的程序对题目的要求来说是不完善的。
    我所以就重新更改代码。将void zifu改为char zifu 。这样就可以返回符号。
    我利用if语句,判断这个式子对题目要求来说应不应该成立。

    if(symbol!='/'||b!=0)
    		{
    			i++;
    			printf("%2d %c%2d",a,symbol,b);
    			printf(" =  ___
    ");
    		}
    
    

    2.2.3 程序结果截图

    2.2.4 程序代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>	
    void menu();
    void help();
    void error();
    void operation1(); 
    void rand1();
    void operation2();
    void rand2();
    void operation3(); 
    void rand3();
    char zifu1();
    char zifu2();
    char zifu3();
    int main(void)
    {
    	
    	printf("========== 口算生成器 ==========
    ");
    	printf("欢迎使用口算生成器 :
    
    ");
    	help();
    	int i=1;
    	while (i)
    	{
    		menu();
    		int grade;
    		scanf("%d", &grade);
    		printf("<执行操作 :)");
    		printf("
    
    ");
    		switch (grade)
    		{
    		case 1:
    		    operation1(); 
    			break;
    		case 2:
    		    operation2(); 
    			break;
    		case 3:
    			operation3(); 
    			break;
    		case 4:
    			help();
    			break;
    		case 5:
    			printf("程序结束, 欢迎下次使用
    ");
    			printf("任意键结束……
    
    ");
    			i = 0;
    			break;
    		default:
    			error();
    			break;
    		}
    	}
    return 0;
    
    }
    
    void help()
    {
    	printf("帮助信息
    ");
    	printf("您需要输入命令代号来进行操作, 且
    ");
    	printf("一年级题目为不超过十位的加减法;
    ");
    	printf("二年级题目为不超过百位的乘除法;
    ");
    	printf("三年级题目为不超过百位的加减乘除混合题目.
    
    
    ");
    }
    
    void menu()
    {
    
    		printf("操作列表:
    ");
    		printf("1)一年级    2)二年级    3)三年级
    ");
    		printf("4)帮助      5)退出程序
    ");
    		printf("请输入操作 >");
    	
    		
    }
    void error()
    {
    	printf("Error!!!
    ");
    	printf("错误操作指令, 请重新输入
    
    ");
    
    }
    
    void operation1()
    {
    	printf("现在是一年级题目:
    ");
    	printf("请输入生成个数 ");
    	rand1();
    
    }
    
    void operation2()
    {	
    	printf("现在是二年级题目:
    ");
    	printf("请输入生成个数 ");
    	rand2();
    
    }
    
    void operation3()
    {
    	int i,w;
    	printf("现在是三年级题目:
    ");
    	printf("请输入生成个数 ");
    	rand3();
    }
    
    	void rand1()
    {	
    	int w,i;
    	scanf("%d",&w);
    	printf("
    ");
    	printf("<执行操作 :)
    
    ");
    	for(i=0;i<w;i++)
    	{
    			char symbol;
    			time_t t,a,b;
    			a=rand()%10;
    			symbol = zifu1(); 
    			b=rand()%10;	
    			printf("%2d %c%2d",a,symbol,b);
    			printf(" =  ___
    ");
    	}
    	printf("
    
    ");	
    } 
    
    void rand2()
    {	
    	int w,i;
    	scanf("%d",&w);
    	printf("
    ");
    	printf("<执行操作 :)
    
    ");
    	for(i=0;i<w;)
    	{
    			char symbol;
    			time_t t,a,b;
    			a=rand()%10;
    			symbol = zifu2(); 
    			b=rand()%10;	
    		if(symbol!='/'||b!=0)
    		{
    			i++;
    			printf("%2d %c%2d",a,symbol,b);
    			printf(" =  ___
    ");
    		}
    	}
    	printf("
    
    ");	
    } 
    
    void rand3()
    {	
    	int w,i;
    	scanf("%d",&w);
    	printf("
    ");
    	printf("<执行操作 :)
    
    ");
    	for(i=0;i<w;)
    	{
    			char symbol_1,symbol_2;
    			time_t t,a,b,c;
    			a=rand()%10;
    			symbol_1 = zifu3(); 
    			symbol_2 = zifu3();
    			b=rand()%10;
    			c=rand()%10;	
    		if(symbol_1!='/'&&b!=0&&symbol_2!='/'&&c!=0)
    		{
    			i++;
    			printf("%2d %c%2d %c%2d",a,symbol_1,b,symbol_2,c);
    			printf(" =  ___
    ");
    		}
    	}
    	printf("
    
    ");	
    } 
    
    
    
    char zifu3()
    {	
    	time_t t;
    	char symbol;
    	int s; 
    	
    	
    	s=rand()%4+1;
    	switch(s)
    	{
    		case 1:
    			symbol='+';
    			break;
    		case 2:
    			symbol='-';
    			break;
    		case 3:
    			symbol='x';
    			break;
    		case 4:
    			symbol='/';
    			break;
    	}	
    	return symbol;
    }
    
    char zifu2()
    {	
    	time_t t;
    	char symbol;
    	int s; 
    	
    	s=rand()%2+1;
    	switch(s)
    	{
    		case 1:
    			symbol='x';
    			break;
    		case 2:
    			symbol='/';
    			break;
    	}	
    		return symbol;
    
    }
    
    char zifu1()
    {	
    	char symbol;
    	time_t t;
    	int s; 
    	s=rand()%2+1;
    	switch(s)
    	{
    		case 1:
    			symbol='+';
    			break;
    		case 2:
    			symbol='-';
    			break;
    	}
    	return symbol;
    }
    

    2.2.5 Gitee上传截图


    D.va

    2.2.6小结

    因为我没有好好学习函数的知识,导致我第一次写这道题绕了很大的弯,换了两次结构,只是因为我不会熟练使用实参形参,然后返回值。
    从而导致我的每个计算部分的函数都功能性很差。相互之间的沟通很少,重复量大,没能很好的整合,比其他同学的函数差距甚远。
    这让我意识到了差距,也会更加激励我学习。毕竟我也希望自己能有个好的作品。
    

    作业有不好的地方麻烦大家多多提点,我一定会认真修改的。

  • 相关阅读:
    [ZJOI2006]物流运输
    [SCOI2009]生日快乐
    [FJOI2007]轮状病毒
    [转载]centos 7(1611)安装笔记
    发行版Linux和麒麟操作系统下netperf 网络性能测试
    ARM64平台编译stream、netperf出错解决办法 解决办法:指定编译平台为alpha [root@localhost netperf-2.6.0]# ./configure –build=alpha
    查看linux系统是多少位,使用 getconf LONG_BIT
    https://www.jqhtml.com/30047.html strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题
    Centos7 利用crontab定时执行任务及配置方法
    清楚自己的短板是什么 搞清楚自己的职业规划是什么
  • 原文地址:https://www.cnblogs.com/liangchaowei/p/12258093.html
Copyright © 2011-2022 走看看