В упражнении предлагается написать функцию, которая:
читает последовательность буквенных символов (без запоминания последовательности), которая заканчивается только тогда, когда пользователь вводит '\ n'.
возвращает 1, если количество заглавных букв превысило нижние, не более чем целое число m, введенное пользователем, или 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;
}
В этот момент, пытаясь выполнить программу с помощью команды gcc, я заметил, что программа принимает только целое число, скажем, 2, и вернул 0как если бы он вошел в функцию без второго сканирования символа.
Помимо формального заблуждения и ошибок в программе и функции c, которые я рад, что вы исправили,
Я былпытаюсь понять, потому что, как говорится, я пытаюсь быть самоучкой, как scanf
функция и функция работают в целом, когда и кому отдан приоритет.
Например, в функции read
его мне неясно, когда значение, которое я возвращаю функции, принимается выше, если, как я сделал.