KaranKumar P Ответов: 3

Как я могу печатать после z снова abcd таким образом?


Примите символ C и положительное целое число N в качестве входных данных. Программа должна напечатать N символов, начиная с буквы C.

Граничное условие(ы):
1 <= N <= 100

входной формат:
Первая строка содержит C и N, разделенные пробелами.

выходной формат:
Первая строка содержит N символов.

Пример Ввода/Вывода 1:
Ввод:
а 4

Выход:
abcd

Пример Ввода/Вывода 2:
Ввод:
z 5

Выход:
zabcd

Что я уже пробовал:

#include<stdio.h>
#include <stdlib.h>

int main()
{
    char a;
    int n,b=0;
    scanf("%c",&a);
    scanf("%d",&n);
    for( char i=a;b<n;i++){
        printf("%c",i);
        b=b+1;
    }
}

[no name]

Я изменил ваш тег вопроса на C вместо Java, основываясь на коде, который вы опубликовали.

KaranKumar P

да извините

3 Ответов

Рейтинг:
0

User 7429338

Поскольку в алфавите есть 26 букв, вы можете использовать % 26 чтобы начать с самого начала снова после z.
Однако символ " а " не равен 0, поэтому вам нужно сначала вычесть его, а затем снова добавить.

Например:

for (int i = 0; i < n; i++) {
    printf("%c", (a - 'a' + i) % 26 + 'a');
}


Рейтинг:
0

CPallini

for (i=0; i<n; ++i)
{
  putchar(a);
  a = (a == 'z') ? 'a' : (a + 1);
}


Рейтинг:
0

Patrice T

Имея 2 переменные в цикле ОС в основном идея, но ваша проблема заключается в том, что вы смешиваете их использование.
Держите их использование разделенным, имейте 1 переменную для подсчета печатных букв и другую переменную для отслеживания письма для печати.

for( int i=0;i<n;i++){ // count here
    printf("%c",a);
    if (a<'z') // set next letter here
        a=a+1;
    else
        a='a';
}