• 寒假作业2


    实践题:

    不得不说每次作业都做得自己脑壳发胀,一是每次都是些没接触过的东西,只能不停地百度,和请教其他同学。此次实践题操作起来比想象中的简单,就是如果不知道如何操作,就有点头大去(这里实在不清楚,建议询问一些与你使用相同操作软件的同学)。
    第一步:在github官网先建立需要使用代码仓库,下载所需软件github deskdep。然后将自己所需要上传的代码和程序移动至相应的代码仓库文件夹,使需要上传的文件发生变动,文件就会出现在上传列表之中,如下图所示:

    第二步:进入github的官网,登入自己的账号,找到刚才上传的代码仓库,就会发现所需代码已经上传到代码仓库当中,如下图所示:

    编程题:
    由于上次作业结束之后,对比了一些大佬的作业,我发现自身代码,存在巨大缺陷,对许多特殊情况都没有考虑:(1.输入大于十以上的情况,2.输出数字十一到十九的情况,3.增加和减少双位数的情况,4.代码简洁性),所以,我去请教了自己班的几个大佬,对他们代码进行相关的思路和方法的询问,重新码了一遍这道编程题目,尽最大努力优化之前所发现的不足之处。
    1.之前有百度到,两个ascii码可以使电脑显现中文字符(之前助教说这貌似就是他们所说的gbk中文编码),同学使用这个方法貌似可以使用,我便设计了一个相同函数去进行相应的判断:

      int changeA(int num)
    {
    	if(num==-63)return 0;
    	if(num==-46)return 1;
    	if(num==-74)return 2;
    	if(num==-56)return 3;
    	if(num==-53)return 4;
    	if(num==-50)return 5;
    	if(num==-63)return 6;
    	if(num==-58)return 7;
    	if(num==-80)return 8;
    	if(num==-66)return 9;
    	if(num==-54)return 10;
    }
    

    2.常规的数字变换:

    void changeB(int number)
    {
    	if (number == 0)printf("零");
    	else if (number == 1)printf("一");
    	else if (number == 2)printf("二");
    	else if (number == 3)printf("三");
    	else if (number == 4)printf("四");
    	else if (number == 5)printf("五");
    	else if (number == 6)printf("六");
    	else if (number == 7)printf("七");
    	else if (number == 8)printf("八");
    	else if (number == 9)printf("九");
    	else if (number == 10)printf("十");
    }
    

    3.对输入和输出的判断:

    if (countness == 4)
    	{
    		bianL = d[0];
    		if (bianL != -54)sum = changeA(bianL) * 10;
    		if (bianL == -54)sum = 10 + changeA(d[2]);
    	}
    	if (countness == 6)
    	{
    		bianL = d[0];
    		sum = changeA(bianL) * 10;
    		bianL = d[4];
    		sum += changeA(bianL);
    	}
    	if (countness == 2)sum = changeA(d[0]);
    	while (1)
    	{
    		scanf("%s ", a);
    		if (strcmp(a, "看看") == 0)break;
    		scanf("%s %s", b, c);
    		putness = caozuo(b);
    		if (putness)sum += changeA(c[0]);
    		else sum -= changeA(c[0]);
    	}
    	if (sum <= 10)changeB(sum);
    	if (sum >= 20)
    	{
    		twos = sum % 10;
    		ones = (sum / 10) % 10;
    		changeB(ones);
    		printf("十");
    		changeB(twos);
    	}
    	if (sum > 10 && sum < 20)
    	{
    		printf("十");
    		twos = sum % 10;
    		changeB(twos);
    	}
    

    应本次作业要求,需要使用脚本进行测试,所以需要一些必要的函数,比如前面大佬们所使用的freopen,pause等,刚开始没有使用这些,导致测试脚本时出现各种各样无法成功的情况:
    1.比如freopen("D:\Dev-Cpp\1.txt", "r", stdin);这个代码,是用来指向自身txt文件所存放的文件夹,r是指“只读取的意思”,使代码运行时,读取相应的txt的文本内容进行运行,并输出相应的结果,(该项主要用于脚本的示例测试)。
    2.system("pause");不得不说这个真的是十分重要,不管是在主代码,还是在测试代码中。缺少了这个,你会发现你双击运行只会得到一个,成功前的一闪而过,(特别提示一下我自己遇到的这个情况,当电脑没找到相应文件貌似也是一闪而过,所以这样方便找到相应错误)
    代码主体

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h> 
    int changeA(int num)
    {
    	if (num == -63)return 0;
    	if (num == -46)return 1;
    	if (num == -74)return 2;
    	if (num == -56)return 3;
    	if (num == -53)return 4;
    	if (num == -50)return 5;
    	if (num == -63)return 6;
    	if (num == -58)return 7;
    	if (num == -80)return 8;
    	if (num == -66)return 9;
    	if (num == -54)return 10;
    }
    void changeB(int number)
    {
    	if (number == 0)printf("零");
    	else if (number == 1)printf("一");
    	else if (number == 2)printf("二");
    	else if (number == 3)printf("三");
    	else if (number == 4)printf("四");
    	else if (number == 5)printf("五");
    	else if (number == 6)printf("六");
    	else if (number == 7)printf("七");
    	else if (number == 8)printf("八");
    	else if (number == 9)printf("九");
    	else if (number == 10)printf("十");
    }
    int main()
    {
    	int caozuo(char caozuo[20]);
    	int changeA(int num);
    	void changeB(int number);
    	int sum, putness, ones, twos, countness, bianL;
    	char a[20], b[20], c[20], d[20];
    	freopen("D:\Dev-Cpp\1.txt", "r", stdin);
    	scanf("%s %s %s %s", a, b, c, d);
    	countness = strlen(d);
    	if (countness == 4)
    	{
    		bianL = d[0];
    		if (bianL != -54)sum = changeA(bianL) * 10;
    		if (bianL == -54)sum = 10 + changeA(d[2]);
    	}
    	if (countness == 6)
    	{
    		bianL = d[0];
    		sum = changeA(bianL) * 10;
    		bianL = d[4];
    		sum += changeA(bianL);
    	}
    	if (countness == 2)sum = changeA(d[0]);
    	while (1)
    	{
    		scanf("%s ", a);
    		if (strcmp(a, "看看") == 0)break;
    		scanf("%s %s", b, c);
    		putness = caozuo(b);
    		if (putness)sum += changeA(c[0]);
    		else sum -= changeA(c[0]);
    	}
    	if (sum <= 10)changeB(sum);
    	if (sum >= 20)
    	{
    		twos = sum % 10;
    		ones = (sum / 10) % 10;
    		changeB(ones);
    		printf("十");
    		changeB(twos);
    	}
    	if (sum > 10 && sum < 20)
    	{
    		printf("十");
    		twos = sum % 10;
    		changeB(twos);
    	}
    	system("pause");
    }
    int caozuo(char caozuo[20])
    {
    	if (strcmp(caozuo, "减少") == 0)return 0;
    	else return 1;
    }
    

    部分函数测试:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int caozuo(char caozuo[20])
    {
    	if (strcmp(caozuo, "减少") == 0)return 0;
    	else return 1;
    }
    int b(char caozuo[20])
    {
    	if (strcmp(caozuo, "增加") == 0)return 0;
    	else return 1;
    }
    int main()
    {
    	int num = 0;
    	char a[20], what[20];
    	int caozuo(char caozuo[20]);
    	int b(char caozuo[20]);
    	strcpy(a, "减少");
    	strcpy(what, "增加");
    	if (!caozuo(a))num++;
    	if (!b(what))num++;
    	if (num == 2)printf("测试正常");
    	else printf("测试异常");
    	system("pause");
    	return 0;
    }
    

    方法:将脚本写入记事本,然后选择所有文件,将原有的txt格式更改为bat格式就会形成脚本,(特别注意,我刚开始以为直接重命名就可以,后来发现我果然太天真),此处感谢同班大佬的援助。
    脚本:

    @echo off
    title 测试脚本
    echo 测试开始
    start 未命名2.exe(不同程序不一样)
    echo 测试结束
    pause
    

    简单示例测试:
    先将路径转到文件所在的文件夹:(此处感谢群中某个助教告诉我转磁盘的方法)

    整数 钱包 等于 零
    钱包 增加 四
    钱包 减少 三
    看看 钱包
    

    整数 钱包 等于 二十
    钱包 增加 四
    钱包 减少 三
    看看 钱包
    

    学习感悟:
    计算机好多东西确实晦涩难懂,课程很难,但确实学了不少使用的东西。感谢同班两位大佬的帮助,让我理解了大部分所需要的操作。

  • 相关阅读:
    JavaScript 实现深度拷贝
    JacaScript arguments
    EMACS 使用入门
    ubuntu 14.04 nginx + mysql + php源码安装
    c语言 头文件
    程序员技术练级攻略
    if和switch的选择
    .htaccess (分布式配置文件)
    yii2 windows 安装过程
    Js 冒泡事件阻止
  • 原文地址:https://www.cnblogs.com/csw2019/p/12266254.html
Copyright © 2020-2023  润新知