C语言实现简单的翻译功能

题目描述:编写一个程序,依次输入英文与汉语拼音,输入两个“ * ”表示输入结束,再输入一段英语句子,打印出其对应汉语拼音。

要求:不得使用<string.h>头文件

    题目中要求不得使用<string.h>提醒我们使用其中的函数来编写代码,不过函数的实现需要自己来思考,根据自己的需要可以调整原函数的功能。思路大致是:输入完毕后拿原结构体记录的英文内容与 a 中的单词逐个相比,若相同,则输出结构体中对应的汉语拼音。

#include <stdio.h>
#include <stdlib.h>
#define M 100
struct tran                                                    //建立结构体,将英文与对应的汉语拼音存储在一起
{
    char English[M];
    char Chinese[M];
}n[M];
int my_strlen(char a[]);                                       //声明自定义测量数组长度的函数
int my_strcmp(char* str1,char* str2);                          //声明自定义判断两个字符串是否相同的函数
int main()
{
    int i=1,j,k;
    char a[M],*p=a;
    printf("请首先输入英文,然后输入汉语拼音:\n");
    while(n[i-1].English[0]!='*'||n[i-1].Chinese[0]!='*')      //当输入两个“ * ”时输入终止
    {
        printf("请输入第%d组\t\t",i);
        scanf("%s%s",n[i].English,n[i].Chinese);
        i++;
    }
    printf("请输入一个句子\n");
    getchar();                                                 //接收上一个回车,避免下一个scanf()无法输入
    scanf("%[^\n]",a);
    for(i=0;a[i]!='\0';i++)
    {
        if(my_strcmp(p,n[i].English)==1)
        {
            p=p+my_strlen(n[i].English)+1;                     //使p指针后移,指向第二个单词
            printf("%s ",n[i].Chinese);
            i=-1;                                              //使下次循环 i = 0
        }
    }
    printf("\n");
    system("pause");
    return 0;
}


int my_strcmp(char* str1,char* str2)
{
    int flag=0;
    while(*str1==*str2)
    {
        str1++;
        if(*str1=='\0'||' ')
        {
            flag=1;
            return 1;
        }
        else
            str2++;
    }
    if(flag==0)
        return 0;
}


int my_strlen(char a[])
{
    int i,k=0;
    for(i=0;a[i]!='\0';i++)
    {
        k++;
    }
    return k;
}


下面是程序示例:


猜你喜欢

转载自blog.csdn.net/Poppy991122/article/details/80081422