zoukankan      html  css  js  c++  java
  • 芜湖

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业03--函数
    这个作业的目标 学习循环结构内容,包括for循环、while循环、循环嵌套
    姓名 杨振鹏

    1.本章学习总结

    1.1 函数定义,调用,声明

    函数类型 函数名(参数)
    e.g.int giao(int emmm);

    1.2 全局,局部变量,静态局部变量

    • 全局变量:在所有函数外定义的变量,它的作用域默认是整个程序。
    • 局部变量:在函数内定义的变量,它的作用域只在该函数中。
    • 静态局部变量:该变量会在一次调用函数时,继承上一次调用函数后的值
      e.g. static int giao;

    1.3 c数据类型及注意点

    • 整型:short<int<long<long long
    • 浮点型:float<double
    • 字符型:char
    • 浮点误差处理:后+0.00001

    1.4 c运算符

    1.综合作业

    2.1 模块流程图

    • 一年级

    • 二年级

    • 三年级

    2.2 函数功能及全局变量

    2.2.1 全局变量

    2.2.2 菜单相关函数

    void OperateMenu();//游戏操作界面
    void GradeOneMenu();//一年级菜单
    void GradeTwoMenu();//二年级菜单
    void GradeThreeMenu();//三年级菜单
    
    void GradeOneMenu()//一年级
    {
    
    	while (1)
    	{
    		system("cls");
    		printf("*********************一年级小朋友好!********************************
    ");
    		printf("小兔崽子,你想做多少题呀?输入你要做的题数啊!
    ");
    		printf("你要是怕了就输入n退回主菜单。
    ");
    		printf("***************************************************************
    ");
    
    		printf("输入题数(怕了输n):
    ");
    		char ch;
    		int TitleNumber, i, temp;
    		int Right = 0;
    		int Number1, Number2, symbol, RightAnswer, YourAnswer;
    		double accuracy;
    		srand(time(0));
    		scanf("
    %c", &ch);
    		if (ch == 'n')
    		{
    			Sleep(500);
    			OperateMenu();
    			return;
    		}
    		else//选择答题
    		{
    
    			TitleNumber = ch - '0';
    			for (i = 0; i < TitleNumber; i++)
    			{
    				Number1 = RandNumber(10);
    				Number2 = RandNumber(10);
    				symbol = RandSymbol(1);
    				if (symbol == '-')
    				{
    					if (Number1 < Number2)
    					{
    						temp = Number1; Number1 = Number2; Number2 = temp;
    					}
    				}
    				printf("%d %c %d = ?
    ", Number1, symbol, Number2);
    				printf("来吧宝贝输入你的答案:
    ");
    				scanf("%d", &YourAnswer);
    				switch (symbol)
    				{
    				case '+':RightAnswer = Number1 + Number2; break;
    				case '-':RightAnswer = Number1 - Number2; break;
    				case '*':RightAnswer = Number1 * Number2; break;
    				case '/':RightAnswer = Number1 / Number2; break;
    				}
    				if (YourAnswer == RightAnswer) {
    					Right++; printf("强啊!
    ");
    				}
    				else { printf("菜鸡,正确答案:%d
    ", RightAnswer); }
    				printf("觉得太菜不想做了就输n,不然就输y继续
    ");
    				scanf("
    %c", &ch);
    				if (ch == 'n')
    				{
    					Sleep(500);
    					GradeOneMenu();
    				}
    
    			}
    			accuracy = (double(Right) / TitleNumber) * 100;
    			if (accuracy < 60)printf("小老弟你不行啊,正确率:%.0f%", accuracy);
    			else printf("可以啊小老弟,正确率:%.0f%c", accuracy, '%');
    			printf("还要再来吗?
    ");
    			printf("请输入y/n:");
    			scanf("
    %c", &ch);
    			if (ch == 'n')
    			{
    				system("cls");
    				Sleep(500);
    				OperateMenu();
    				return;
    			}
    			else
    			{
    				system("cls");
    				Sleep(500);
    				GradeOneMenu();
    				return;
    			}
    		}
    	}
    
    }
    
    void GradeTwoMenu()//二年级
    {
    
    	while (1)
    	{
    		system("cls");
    		printf("*********************二年级小朋友好!********************************
    ");
    		printf("小兔崽子,你想做多少题呀?输入你要做的题数啊!
    ");
    		printf("你要是怕了就输入n退回主菜单。
    ");
    		printf("***************************************************************
    ");
    		printf("输入题数(怕了输n):
    ");
    		char ch;
    		int TitleNumber, i, temp;
    		int Right = 0;
    		int Number1, Number2, symbol, RightAnswer, YourAnswer;
    		double accuracy;
    		srand(time(0));
    		scanf("
    %c", &ch);
    		if (ch == 'n')
    		{
    			Sleep(500);
    			OperateMenu();
    			return;
    		}
    		else//选择答题
    		{
    
    			TitleNumber = ch - '0';
    			for (i = 0; i < TitleNumber; i++)
    			{
    				Number1 = RandNumber(20);
    				Number2 = RandNumber(20);
    				symbol = RandSymbol(2);
    				if (symbol == '-')
    				{
    					if (Number1 < Number2)
    					{
    						temp = Number1; Number1 = Number2; Number2 = temp;
    					}
    				}
    				if (symbol == '/')
    				{
    					Number2= RandNumber(5);
    					Number1 = Number2 * (rand()%10+1);
    				}
    				if (symbol == '*')
    				{
    					Number1 /= 2;
    					Number2 /= 2;
    				}
    				printf("%d %c %d = ?
    ", Number1, symbol, Number2);
    				printf("来吧宝贝输入你的答案:
    ");
    				scanf("%d", &YourAnswer);
    				switch (symbol)
    				{
    				case '+':RightAnswer = Number1 + Number2; break;
    				case '-':RightAnswer = Number1 - Number2; break;
    				case '*':RightAnswer = Number1 * Number2; break;
    				case '/':RightAnswer = Number1 / Number2; break;
    				}
    				if (YourAnswer == RightAnswer) {
    					Right++; printf("强啊!
    ");
    				}
    				else { printf("菜鸡,正确答案:%d
    ", RightAnswer); }
    				printf("觉得太菜不想做了就输n,不然就输y继续
    ");
    				scanf("
    %c", &ch);
    				if (ch == 'n')
    				{
    					Sleep(500);
    					GradeTwoMenu();
    				}
    
    			}
    			accuracy = (double(Right) / TitleNumber) * 100;
    			if (accuracy < 60)printf("小老弟你不行啊,正确率:%.0f%", accuracy);
    			else printf("可以啊小老弟,正确率:%.0f%c", accuracy, '%');
    			printf("还要再来吗?
    ");
    			printf("请输入y/n:");
    			scanf("
    %c", &ch);
    			if (ch == 'n')
    			{
    				system("cls");
    				Sleep(500);
    				OperateMenu();
    				return;
    			}
    			else
    			{
    				system("cls");
    				Sleep(500);
    				GradeTwoMenu();
    				return;
    			}
    		}
    	}
    
    }
    
    void GradeThreeMenu()//二年级
    {
    
    	while (1)
    	{
    		system("cls");
    		printf("*********************二年级小朋友好!********************************
    ");
    		printf("小兔崽子,你想做多少题呀?输入你要做的题数啊!
    ");
    		printf("你要是怕了就输入n退回主菜单。
    ");
    		printf("***************************************************************
    ");
    		printf("输入题数(怕了输n):
    ");
    		char ch;
    		int TitleNumber, i, temp;
    		int Right = 0;
    		int Number1, Number2, symbol, RightAnswer, YourAnswer;
    		double accuracy;
    		srand(time(0));
    		scanf("
    %c", &ch);
    		if (ch == 'n')
    		{
    			Sleep(500);
    			OperateMenu();
    			return;
    		}
    		else//选择答题
    		{
    
    			TitleNumber = ch - '0';
    			for (i = 0; i < TitleNumber; i++)
    			{
    				Number1 = RandNumber(50);
    				Number2 = RandNumber(50);
    				symbol = RandSymbol(2);
    				if (symbol == '/')
    				{
    					Number2 = RandNumber(20);
    					Number1 = Number2 * (rand() % 10 + 1);
    				}
    				if (symbol == '*')
    				{
    					Number1 /= 5;
    					Number2 /= 5;
    				}
    				printf("%d %c %d = ?
    ", Number1, symbol, Number2);
    				printf("来吧宝贝输入你的答案:
    ");
    				scanf("%d", &YourAnswer);
    				switch (symbol)
    				{
    				case '+':RightAnswer = Number1 + Number2; break;
    				case '-':RightAnswer = Number1 - Number2; break;
    				case '*':RightAnswer = Number1 * Number2; break;
    				case '/':RightAnswer = Number1 / Number2; break;
    				}
    				if (YourAnswer == RightAnswer) {
    					Right++; printf("强啊!
    ");
    				}
    				else { printf("菜鸡,正确答案:%d
    ", RightAnswer); }
    				printf("觉得太菜不想做了就输n,不然就输y继续
    ");
    				scanf("
    %c", &ch);
    				if (ch == 'n')
    				{
    					Sleep(500);
    					GradeThreeMenu();
    				}
    
    			}
    			accuracy = (double(Right) / TitleNumber) * 100;
    			if (accuracy < 60)printf("小老弟你不行啊,正确率:%.0f%", accuracy);
    			else printf("可以啊小老弟,正确率:%.0f%c", accuracy, '%');
    			printf("还要再来吗?
    ");
    			printf("请输入y/n:");
    			scanf("
    %c", &ch);
    			if (ch == 'n')> 
    			{
    				system("cls");
    				Sleep(500);
    				OperateMenu();
    				return;
    			}
    			else
    			{
    				system("cls");
    				Sleep(500);
    				GradeThreeMenu();
    				return;
    			}
    		}
    	}
    
    }
    

    2.2.3 出题相关函数

    int RandNumber(int limit);//生成随机数
    char RandSymbol(int hard);//生成随机符号
    
    • 随机数要输入一个参数决定生成的范围(参数为5,则范围为1~5)
    • 随机符号也要输入一个参数(1为‘+’和‘-’,2为‘+’,‘-’,‘*’和‘/’)
    int RandNumber(int limit)
    {
    	int number;
    	number = rand() % (limit - 1) + 1;
    	return number;
    }
    
    char RandSymbol(int hard)
    {
    	int n;
    	if (hard == 1)n = rand() % 2;
    	if (hard == 2)n = rand() % 4;
    	switch (n)
    	{
    	case 0:return '+';
    	case 1:return '-';
    	case 2:return '*';
    	case 3:return '/';
    	}
    }
    

    2.3 运行结果

    • 测试数据为一年级,题数为3题,每次都输入y来继续做题

    2.4 总结

    适当时机清屏会让界面很舒服

  • 相关阅读:
    突出展示案例
    下拉菜单案例
    推送人群的选择【技术篇】
    Couchbase 中的分布式储存
    开始了大概三四天的Rails学习之路
    分层架构与公司组织
    极光推送助推视频App,打造最活跃手机新媒体平台
    极光推送CTO黄鑫:技术人员要建立自己的知识图谱
    Android SDK教程
    Android消息推送 SDK 集成指南
  • 原文地址:https://www.cnblogs.com/RocEye/p/14057102.html
Copyright © 2011-2022 走看看