0

嗨,我是 C 编程的新手,目前我开始获取用户输入的简单应用程序,现在如何从用户获取输入并区分用户输入是否包含字符串、整数或两者的组合。

我尝试了以下方法:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char * argv[])
{
    char * s = "CPROGRAMMING";
    int i;
    boolean flag = true;
    for(i = 0;, i < strlen(s) && flag == true; i++)
    {
        if(isalpha(s[i]) && isupper(s[i])) flag = true;
        else flag = false;
    }
    if(flag) printf("A string contains only uppercase and alphabet letters\n");
    return 0;
}

但似乎无法找到正确的输入。我在这里想念什么?

4

3 回答 3

1
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>

int main (int argc, char* argv[])
{
    (void) argc;
    (void) argv;

    const char* s = "CPROGRAMMING";
    bool upper_case = true;
    for (int i = 0; i<strlen(s) && upper_case ; i++)
    {
        if (!isalpha(s[i]) || !isupper(s[i]))
        {
            upper_case = false;
        }
    }

    if (upper_case)
    {
        printf("A string contains only uppercase and alphabet letters\n");
    }

    return 0;
}

修复:

  • 包括正确的标题。
  • 使用正确的布尔类型。
  • 清除布尔逻辑。
  • 固定代码格式。
  • 正确声明指向字符串文字的指针。
  • 明确表示不使用 main 的参数。
于 2013-03-04T07:47:35.357 回答
1

一些问题:

  • 要获取用户输入,请使用scanf.
  • C 没有boolean,你的意思是int
  • 您的循环是多余的,无论如何您只检查最后一个字母 - 好吧,您检查所有,但是当您最后一次设置标志时只考虑最后一个。您可以在需要时使用break.
  • 循环中的条件有一个杂散,
于 2013-03-04T07:38:33.963 回答
1

您的代码有一些语法问题。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>

int main(int argc, char* argv[])
{
    char* s = "CPROGRAMMING";
    int i;
    bool flag = true;
    for (i = 0; i < strlen(s) && flag; i++)
    {
        if (isalpha(s[i]) && isupper(s[i]))
            flag = true;
        else
            flag = false;
    }
    if (flag)
        printf("A string contains only uppercase and alphabet letters\n");
    return 0;
}
于 2013-03-04T07:38:45.937 回答