特征C-函数,对其行为的误解

特征C-函数,对其行为的误解,c,function,stdio,C,Function,Stdio,要求编写以下函数的练习: 读取仅在用户输入“\n”时结束的字母字符序列(不记忆序列) 如果大写字母数超过用户输入的最大整数m中的较小值,则返回1,否则返回0 我尝试了以下代码: #include<stdio.h> int read(int p,char c) { int M=0,m=0,d; char A,Z,a,z; while(c != '\n') { if(A<=c<=Z) {

要求编写以下函数的练习:

  • 读取仅在用户输入“\n”时结束的字母字符序列(不记忆序列)

  • 如果大写字母数超过用户输入的最大整数m中的较小值,则返回1,否则返回0

我尝试了以下代码:

#include<stdio.h>

int read(int p,char c)
{
    int M=0,m=0,d;
    char A,Z,a,z;

    while(c != '\n')
    {
        if(A<=c<=Z)
        {
            M++;
        }
        else if(a<=c<=z)
        {
            m++;
        }
        scanf("%c",&c);
    }

    if(M-m>0)
        d=(m-M);
    else 
        d=0;

    if(d==0)
        return 0;
    else if (d<=p)
        return 1;
}

int main()
{
    int a,h;
    char k;

    scanf("%d", &h);
    scanf("%c", &k);
    a=read(h,k);
    printf("%d\n",a);
    return 0;
}
#包括
整数读取(整数p,字符c)
{
int M=0,M=0,d;
字符A,Z,A,Z;
而(c!='\n')
{

如果(A这不符合你的预期

if(A<=c<=Z)
…并删除四个变量
char A,Z,A,Z;


请注意,使用字符常量,如
'A'
'Z'
假设运行时环境使用ASCII字符集。如果您对更便携的解决方案感兴趣,可以查找
isupper()
islower()

stdin
仍然有
'\n'
字符;第二个
scanf
k
A
A
Z
A
Z
都是未初始化的变量。@fidingbits对不起,我想我明白你的意思,但我不知道如何修复它,你错了假设int k=9,按下回车键h,就是我按下的回车键@nullp0tr@p._phidot_很抱歉,我想我可以使用char变量,然后从ascii中为它们指定整数值,对吗?我明白了,谢谢,但是为什么我不能将A,z,A,z;初始化为char变量,然后忽略“”,con将它们作为整数排序?如果你愿意,你可以初始化四个变量,但你不会赢得任何东西。在一天结束时,它们是常量。好的,非常感谢,我理解了你所说的一切,现在程序的问题是我输入整数,比如说9,程序结束,因为我为作为secon的scanf输入了“\n”对不起,我很久没有做任何低级输入代码了,所以我没办法
if('A'<=c && c<='Z')