编程题

Posted hyr031903143

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程题相关的知识,希望对你有一定的参考价值。

编程题(请使用C语言或者C++完成以下题目):(基础5分)
中国文化博大精深,从仓颉造字开始,汉字一直流传到了今天。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
汉字真的不能编程吗?最近文言文编程火了一把,吾有一數。曰三。名之曰「甲」。这朴实无华的变量定义无疑不是几千年来中华文化的发展中一朵奇葩。
今天小王同学想,文言文能编程那白话文呢?他找到了你,让你帮帮他。
编程要求
编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
变量定义:整数 钱包 等于 零
运算(加法):钱包 增加 四
运算(减法):钱包 减少 四
输出:看看 钱包
样例
输入:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
输出:

注意:
输入输出用例均为GBK编码,推荐使用vscode把文本切换为GBK编码。
数字只会出现以下 零一二三四五六七八九十 。
编程题要求:
读题,提取出题目的要求。
分解需求,把需求分解为几个你觉得不太相关的模块。
思考每个模块怎么写,可以从简单的模块开始写。
对于不会的问题进行查阅资料。
对于每一个模块设计测试用例。
详细记录下以上每一步,并写在博客中。
不要求完全做出来,但要求记录详细。
建议博客长度不少于1000字(不包含代码)。

*题目要求:
编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
变量定义:整数 钱包 等于 零
运算(加法):钱包 增加 四
运算(减法):钱包 减少 四
输出:看看 钱包

*思考:
根据题目要求可知是要写出一个处理加减法的程序,但要以文字的形式进行,我觉得可以将文字转换成数字的形式进行,输出时再将其转换回来。

*分解需求:
(我实在不知道gbk编码怎么用,还是按以前的方法来吧……)
第一步:将汉字转化成数字
代码:

int change1(char s[10])
{
    if(strcmp(s,"零")==0)    return 0;
    else if(strcmp(s,"一")==0)   return 1; 
    else if(strcmp(s,"二")==0    return 2;
    else if(strcmp(s,"三")==0)   return 3;
    else if(strcmp(s,"四")==0)   return 4;  
    else if(strcmp(s,"五")==0)   return 5;
    else if(strcmp(s,"六")==0)   return 6;
    else if(strcmp(s,"七")==0)   return 7;
    else if(strcmp(s,"八")==0)   return 8;
    else if(strcmp(s,"九")==0)   return 9;
    else if(strcmp(s,"十")==0)   return 10;
}

第二步:将汉字增加和减少转换为+和-并进行运算
代码:

int suan(char s[10],int m,int n)
{   
    int k;
    if(strcmp(s,"增加")==0)   k=m+n;
    if(strcmp(s,"减少")==0)   k=m-n;
    return k;
}

第三步:将计算结果转化回汉字
(我目前只想到挨个输出,但当结果大于十的时候出现了问题,这里有待完善)
代码:

char change2(int t)
{
    if(t==0)    printf("零");
    else if(t==1)    printf("一");
    else if(t==2)    printf("三");
    else if(t==4)    printf("四");
    else if(t==5)    printf("五");
    else if(t==6)    printf("六");
    else if(t==7)    printf("七");
    else if(t==8)    printf("八");
    else if(t==9)    printf("九");
    else if(t==10)    printf("十");
}

完整代码:

#include<stdio.h>
#include<string.h>
int change1(char s[10]);
int suan(char s[10],int m,int n);
char change2(int t);
int main()
{
    char a[10],b[10],c[10],d[10];
    int x,y; 
    scanf("%s %s %s %s",&a,&b,&c,&d);
    x=change1(d);
    while(1)
    {
        scanf("%s",a);
        if(strcmp(a,"看看")==0)
        {
            scanf("%s",b);
            break;
        } 
        else
        { 
            scanf("%s %s",b,c);
            y=change1(c);
            x=suan(b,x,y); 
        }  
    }
    change2(x);
    return 0;
} 
 
int change1(char s[10])
{
    if(strcmp(s,"零")==0)    return 0;
    else if(strcmp(s,"一")==0)   return 1; 
    else if(strcmp(s,"二")==0)   return 2;
    else if(strcmp(s,"三")==0)   return 3;
    else if(strcmp(s,"四")==0)   return 4;  
    else if(strcmp(s,"五")==0)   return 5;
    else if(strcmp(s,"六")==0)   return 6;
    else if(strcmp(s,"七")==0)   return 7;
    else if(strcmp(s,"八")==0)   return 8;
    else if(strcmp(s,"九")==0)   return 9;
    else if(strcmp(s,"十")==0)   return 10;
}

int suan(char s[10],int m,int n)
{   
    int k;
    if(strcmp(s,"增加")==0)   k=m+n;
    if(strcmp(s,"减少")==0)   k=m-n;
    return k;
}

char change2(int t)
{
    if(t==0)    printf("零");
    else if(t==1)    printf("一");
    else if(t==2)    printf("三");
    else if(t==4)    printf("四");
    else if(t==5)    printf("五");
    else if(t==6)    printf("六");
    else if(t==7)    printf("七");
    else if(t==8)    printf("八");
    else if(t==9)    printf("九");
    else if(t==10)    printf("十");
}

技术图片

问题:只能进行一些非常简单的计算,算不了10以上的数

反思:好久没打代码,感觉学的东西都要还给老师了,很多东西都要请教同学或是上网查,我要好好看下书了……

以上是关于编程题的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

使用 Pygments 检测代码片段的编程语言

面向面试编程代码片段之GC

如何在 Django Summernote 中显示编程片段的代码块?

以编程方式将按钮添加到片段

前端面试题之手写promise