}
#include
int main(void)
{
int i; char ch;
for (i = 0, ch = 'A'; i < 4; i++, ch += 2 * i) printf("%c", ch); return 0;
}
8. Что выведут приведенные далее программы в случае ввода Go west, young man! ? (В кодировке ASCII символ ! следует за символом пробела.)
#include int main(void)
{
char ch;
scanf("%c", &ch); while ( ch != 'g')
{
printf("%c", ch); scanf("%c", &ch);
}
return 0;
}
#include int main(void)
{
char ch;
scanf("%c", &ch); while ( ch != 'g')
{
242 глава 6
printf ("%c",++ch); scanf("%c", &ch);
}
return 0;
}
#include int main(void)
{
char ch; do {
scanf("%c", &ch); printf("%c", ch);
} while ( ch != 'g'); return 0;
}
#include int main(void)
{
char ch;
scanf("%c", &ch);
for ( ch = ch != 'g'; scanf("%c", &ch))
printf("%c", ch); return 0;
)
9. Что выведет следующая программа?
#include int main(void)
{
int n, m; n = 30;
while (++n <= 33) printf("%d|",n); n = 30;
do
printf("%d|",n); while (++n <= 33);
printf("\n***\n");
for (n = 1; n*n < 200; n += 4) printf("%d\n", n);
printf("\n***\n");
for (n = 2, m = 6; n < m; n *= 2, m+= 2) printf("%d %d\n", n, m);
printf("\n***\n"); for (n = 5; n > 0; n--)
{
for (m = 0; m <= n; m++) printf("="); printf("\n");
}
return 0;
}
Управляющие операторы С: циклы 243
10. Взгляните на следующее объявление: double mint[10];
а. Какое имя назначено массиву?
б. Сколько элементов в массиве?
в. Какие виды значений могут храниться в каждом элементе массива?
г. Что из перечисленного ниже является корректным использованием функции scanf() с этим массивом?
• scanf("%lf", mint [2])
• scanf("%lf", &mint[2])
• scanf("%lf", &mint)
11. Кое-кому нравится считать двойками, поэтому он написал программу, которая создает массив и заполняет его четными числами 2, 4, 6, 8 и т.д. Есть ли ошибки в этой программе?
#include
#define SIZE 8 int main(void)
{
int by_twos[SIZE]; int index;
for (index = 1; index <= SIZE; index++) by_twos[index] = 2 * index; for (index = 1; index <= SIZE; index++) printf("%d ", by_twos); printf("\n"); return 0;
}
12. Вы хотите написать функцию, которая возвращает значение типа long. Что должно включать определение этой функции?
13. Определите функцию, которая принимает аргумент типа int и возвращает результат его возведения в квадрат как значение типа long.
14. Что выведет следующая программа?
#include int main(void)
{
int k;
for(k= 1, printf! "%d: Hi ! \ n", k); printf("k= %d\n", k) , k*k < 26; k+=2, printf ("Now k is %d\n", k) ) printf ("k is %d in the loopin\n", k); return 0;
}
Упражнения по программированию
1. Напишите программу, которая создает массив из 26 элементов и помещает в него 26 строчных букв английского алфавита. Также предусмотрите вывод содержимого этого массива.
244 Глава 6
2. Воспользуйтесь вложенными циклами, чтобы написать программу, которая выводит следующую последовательность символов:
$
$$
$$$
$$$$
$$$$$
3. Воспользуйтесь вложенными циклами, чтобы написать программу, которая выводит следующую последовательность символов:
F
FE
FED
FEDC
FEDCB
FEDCBA
Примечание: если в вашей системе не используется ASCII или какая-то другая кодировка, в которой буквы представлены в числовом порядке, то для инициализации символьного массива буквами алфавита вы можете применять следующее объявление:
char lets[27] = "ABODEFGHIJKLMNOPQRSTUVWXYZ";
Затем для выбора конкретных букв можно использовать индексы массива, например, lets [0] для 'А' и т.д.
4. Воспользуйтесь вложенными циклами, чтобы написать программу, которая выводит следующую последовательность символов:
А
ВС
DEF
GHIJ
KLMNO
PQRSTU
Если в вашей системе не используется кодировка, в которой буквы представлены в числовом порядке, см. примечание в упражнении 3.
5. Напишите программу, которая предлагает пользователю ввести прописную букву. Воспользуйтесь вложенными циклами, чтобы написать программу, которая выводит фигуру в виде пирамиды, подобную приведенной ниже:
А
АВА
АВСВА
ABCDCBA
ABCDEDCBA
Эта фигура должна расширяться вплоть до введенного символа. Например, представленная фигура стала результатом ввода символа Е. Подсказка: для обработки строк воспользуйтесь внешним циклом. Для формирования строки применяйте три внутренних цикла: один для манипуляции пробелами, второй для вывода букв в порядке возрастания и третий для вывода букв в порядке убывания. Если в вашей системе не используется ASCII или подобная ей кодировка, в которой буквы представлены в числовом порядке, см. примечание в упражнении 3.
Управляющие операторы С: циклы 245
6. Напишите программу для вывода таблицы, в каждой строке которой представлено целое число, его квадрат и его куб. Запросите у пользователя верхний и нижний пределы таблицы. Используйте цикл for.
7. Напишите программу, которая читает слово в символьный массив, а затем выводит это слово в обратном порядке. Подсказка: воспользуйтесь функцией strlen() (глава 4) для вычисления индекса последнего символа массива.
Читать дальше