c语言题目怎么改

题目见图一,我设计的程序见图二,应该怎么改一下... 题目见图一,我设计的程序见图二,应该怎么改一下 展开
 我来答
jianxia2k
2018-11-22 · TA获得超过399个赞
知道小有建树答主
回答量:365
采纳率:82%
帮助的人:197万
展开全部

你的程序首先只读取一个字符,解决办法有2个:

方法一:

在循环里面,最下面,再增加一个scanf语句,这时候注意判断结束时,不是'\0',而应该是回车符'\n'。

方法二:

定义字符串变量str,使用scanfs("%s", str)直接读取一行,放在字符串里,再对该字符串进行逐字符解析。此时,使用\0来判断是否为结束符(或者使用strlen)。(注意scanfs("%s", str)函数是危险的,你定义的字符串变量的长度必须足够大)

  char str[100];
  int i;
    scanf("%s", str);
    for (; str[i] != '\0'; i++)  {
  }

另外你这样写,最后多了一个空格

解决最后空格的问题,简单来讲,有两种方法:

方法一:不直接输出,而是暂存到一个字符串里:

char buff[1024];
buff[0] = 0;
/* 在switch/case里面,替换printf为strcat */
strcat(buff, "ling ");
/* 最后取消最后的空格并输出 */
buff[strlen(buff)-1] = 0;
printf("%s\n", buff);

方法二:定义一个标志位,并置为0,只要有输出,马上置为1。输出前,判断标志位是否为0,不是0则先输出一个空格。

    char a;
    int flag = 0;
    int n;
    /* 为方便起见,我们在这里先定义数组,不再使用swtich/case语句 */
    char *str[10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};

    scanf("%c", &a);
    for (; a!='\n';)
    {
        /* 在这里判断一下a的范围是否是'0'-'9',并将其转变成数字 */
        if (a >= '0' && a<='9')
        {
            n = a-'0';
            if (flag == 1) printf(" ");  /* 先输出一个空格 */
            printf("%s", str[n]);
            flag = 1;
        }
        else
        {
            /* 是否需要输出一些错误信息? */
        }
        scanf("%c", &a);
    }
}
百度网友67b4e8d
2018-11-22 · TA获得超过257个赞
知道小有建树答主
回答量:464
采纳率:65%
帮助的人:210万
展开全部
#include<stdio.h>
#include<string.h>

int main(){
    char a[1000];
    int i=0;
    scanf("%s",a);
    while(a[i]!='\0'){
        switch(a[i++]){
            case '0':printf("ling ");break;
            case '1':printf("yi ");break;
            case '2':printf("er ");break;
            case '3':printf("san ");break;
            case '4':printf("si ");break;
            case '5':printf("wu ");break;
            case '6':printf("liu ");break;
            case '7':printf("qi ");break;
            case '8':printf("ba ");break;
            case '9':printf("jiu ");break;
        }
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式