【问题标题】:Need help using multiple return values in C需要帮助在 C 中使用多个返回值
【发布时间】:2015-11-01 04:05:14
【问题描述】:

我的任务是将小写输入打印为大写,使用 return 0;如果成功。如果输入了非小写 ascii 字符,则应该有一条错误消息,我应该使用 return 1; 我已经完成了大部分代码,但是在使用错误消息和使用 return 1 时遇到了问题;没有它打印字符。

这是我的代码:

#include<stdio.h>
#include<string.h>

int main()
    char ()
{
  char letters[80];
  int i;
  scanf("%79[0-9a-zA-Z ]",letters);

  for(i=0;i<strlen(letters);i++)
  {
            if(letters[i]>=97&&letters[i]<=122)
            {
            letters[i]=letters[i]-32;
            }

  }
  printf("%s",letters);
  return 0;
}

【问题讨论】:

  • 注意:1.你应该将%80改为%79,因为%80不会为终止空字符保留空间。 2. 不要使用i&lt;=strlen(letters)。这样,您将读取终止的空字符并导致打印“错误”。使用i&lt;strlen(letters)。 3. 如果你的老师没有禁止使用,你应该使用islower()检查字符是否是小写字母。
  • 是否允许创建一个函数,将字母逐个传递,然后返回代码 0 或 1?然后您可以根据该返回码在正文中打印该字母(即如果 1 打印错误,则打印字母)
  • 使用错误信息而不打印字符?你这是什么意思?
  • 但在使用错误消息和使用 return 1 时遇到问题请用预期输出和当前输出正确解释您的问题。
  • 你确定,你不允许做一个额外的功能。你必须使用主函数的返回值。你能给出问题的链接吗?

标签: c


【解决方案1】:

试试这个,看看..是不是你在尝试。

#include <stdio.h>
#include <ctype.h>
int main()
{
    char sentence[100];
    int count, ch, i;
    printf("Enter a sentence \n");
    for (i = 0; (sentence[i] = getchar()) != '\n'; i++)
    {
        ;
    }
    sentence[i] = '\0';
    count = i;
    for (i = 0; i < count; i++)
    {
         if(isupper(sentence[i])) {
                printf("Error");
                return 1;
         }
         else
           sentence[i] = toupper(sentence[i]);
    }
        printf("%s\n",sentence);
        return 0;
}

【讨论】:

    【解决方案2】:

    我想这可能就是答案。

    我的任务是将小写输入打印为大写,使用return 0;如果 它是成功的。 如果那里输入了非小写 ascii 字符 应该是错误消息,我应该使用 return 1;我有 完成了大部分代码,但在使用错误时遇到问题 消息并使用 return 1; 不打印字符

    所以如果输入的字符串都是小写的,你就将它们大写。在这种情况下,您的代码已经工作。但是如果输入的字符串不是全部小写(例如:PROGRAMMING、pRgramMing 或 pROGRAMMING),它应该返回一些错误信息并返回 1,而不打印输入的字符串。这就是我从你的问题中理解的。如果这是问题所在,这是我的解决方案:

        char letters[80];
        int i;
        scanf("%79[0-9a-zA-Z ]", letters);
    
        for (i = 0; i<strlen(letters); i++){
            if (letters[i] >= 97 && letters[i] <= 122){
                letters[i] = letters[i] - 32;           
            }else{
                printf("You should only input lower case characters!"); //your error message here
                return 1;
            }       
        }
    
       printf("%s",letters);
       return 0;
    

    希望这是您问题的答案。

    【讨论】:

      【解决方案3】:

      您可以使用&lt;ctype.h&gt; 库和函数islower() 和函数toupper()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-05
        • 2023-03-09
        • 2013-12-24
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多