если я хорошо понимаю ваш код
char U[] = "111";
void P()
while (char U[] <= "333");
while (char U[0] <= "3"
char U[0]++;
вы хотите что-то вроде:
char U[] = "111";
void P()
{
while (strcmp(U, "333") <= 0)
while (U[0] <= '3')
U[0]++;
}
В любом случае вложенный , пока бесполезен, и вы можете иметь только
char U[] = "111";
void P()
{
while (strcmp(U, "333") <= 0)
U[0]++;
}
Значение, когда вы вернетесь с P , будет "411", вы ожидаете?
Ввод всего в программу:
#include <stdio.h>
#include <string.h>
char U[] = "111";
void P()
{
while (strcmp(U, "333") <= 0)
U[0]++;
}
int main()
{
P();
puts(U);
return 0;
}
Компиляция и исполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wextra -Wall s.c
pi@raspberrypi:/tmp $ ./a.out
411
Издание из вашего замечания, если я хорошо понимаю, вы хотите, чтобы функция получала строку из 3 букв и возвращала максимальное количество раз, когда любая буква внутри повторяется
может быть:
#include <stdio.h>
#include <string.h>
int count(const char * s)
{
if (s[0] == s[1])
return (s[0] == s[2]) ? 3 : 2;
return ((s[0] == s[2]) || (s[1] == s[2])) ? 2 : 1;
}
int main(int argc, char ** argv)
{
if ((argc != 2) || (strlen(argv[1]) != 3))
printf("usage: %s <string of 3 characters>", *argv);
else
printf("%d\n", count(argv[1]));
return 0;
}
Компиляция и исполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra s.c
pi@raspberrypi:/tmp $ ./a.out aze
1
pi@raspberrypi:/tmp $ ./a.out aaz
2
pi@raspberrypi:/tmp $ ./a.out aza
2
pi@raspberrypi:/tmp $ ./a.out azz
2
pi@raspberrypi:/tmp $ ./a.out aaa
3
Снова отредактируйте, чтобы сделать все варианты с 3 буквами из 3 (1, 2 или 3 в программе):
#include <stdio.h>
#include <string.h>
int count(const char * s)
{
if (s[0] == s[1])
return (s[0] == s[2]) ? 3 : 2;
return ((s[0] == s[2]) || (s[1] == s[2])) ? 2 : 1;
}
int main()
{
char cnt[4] = { 0 }; /* index 0 not used */
char s[3];
for (int i = '1'; i <= '3'; ++i) {
s[0] = i;
for (int j = '1'; j <= '3'; ++j) {
s[1] = j;
for (int k = '1'; k <= '3'; ++k) {
s[2] = k;
cnt[count(s)] += 1;
}
}
}
printf("number of possibilities to have no repetition (count == 1) : %d\n", cnt[1]);
printf("number of possibilities to have 2 letters equals (count == 2) : %d\n", cnt[2]);
printf("number of possibilities to have all letters equals (count == 3) : %d\n", cnt[3]);
return 0;
}
Компиляция и исполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra s.c
pi@raspberrypi:/tmp $ ./a.out
number of possibilities to have no repetition (count == 1) : 6
number of possibilities to have 2 letters equals (count == 2) : 18
number of possibilities to have all letters equals (count == 3) : 3