Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Переменные row и column определены с типом float, но если вы хотите использовать их в цикле, они должны относиться к типу int.

Инструкция putchar('\n') помещена таким образом, что она будет выполнена только один раз. Таблица, таким образом, будет

выведена в одну линию. Поместите инструкцию на одну строку выше, перед закрывающей фигурной скобкой.

Глава 10

  1. .Напишите программу, в которой массивы используются для хранения имен, адресов и номеров телефо- нов 20 человек.

main()

{

char names[20][20], street[20][20], city[20][20];

char state[20][3], zip[20][6],

phone[20][13], lookfor[20];

int count; for(count=0;count<20;count++)

{

puts("Введите имя"); gets(names[count]); puts("Введите название улицы"); gets(street[count]); puts("Введите город"); gets(city[count]); puts("Введите штат"); gets(state[count]); puts("Введите индекс"); gets(zip[count]);

puts("Введите номер телефона");

gets(phone[count]);

}

}

  1. .Внесите в программу из упражнения 1 изменения так, чтобы иметь возможность ввода имени и после- дующего просмотра массива в поисках номера телефона соответствующего человека.

main()

{

char names[20][20], street[20][20], city[20][20];

char state[20][3], zip[20][6],

phone[20][13], lookfor[20];

int count; for(count=0;count<20;count++)

{

puts("Введите имя: "); gets(names[count]);

puts("Введите название улицы: "); gets(street[count]); puts("Введите город: "); gets(city[count]); puts("Введите штат: "); gets(state[count]); puts("Введите индекс: "); gets(zip[count]);

puts("Введите номер телефона: "); gets(phone[count]);

}

puts("Введите имя: "); gets(lookfor);

for(count=0; count<20;count++)

{

if(strcmp(names[count],lookfor)==0)

printf("%s %s\n", names[count], phone[count]);

}

}

  1. .Объясните, почему следующая программа написана неправильно:

main()

{

int temps(31); int index, total;

for (index = 0; index < 31; index++)

{

printf("Введите значение

температуры #%d: ", index); scanf("%d", &temps(index));

}

high = temps(0);

low = temps(0); index = 1; while (index < 31)

{

if (temps(index) > high)

high = temps(index);

else

index++;

}

low = temps(index);

printf("Минимальное значение

температуры равно %d\n", low); printf("Максимальное значение

температуры равно %d\n", high);

}

Индексы всех элементов массива temps заключены в круглые скобки, вместо квадратных. Переменные high и low не определены. Переменная total определена,

но не используется в программе. Конструкция if...else написана с ошибкой: если рассматриваемое значение не превышает текущее значение переменной high, это не значит, что оно непременно меньше текущего значения переменной low.

Глава 11

  1. .Напишите программу, в которой структура используется для составления инвентарной описи. Информа- ция включает в себя название продукта, цену, количество, имя поставщика.

struct product

{

char name[20]; float cost; int quantity; char vendor[20];

} item;

main()

{

puts("Введите сведения о товаре\n\n"); printf("Введите наименование:");

gets(item.name); printf("Введите цену:"); scanf("%f", &item.cost);

printf("Введите количество единиц:"); scanf("%d", &item.quantity); printf("Введите имя поставщика:"); gets(item.vendor);

}

  1. .Внесите изменения в программу из упражнения 1 с тем, чтобы можно было вводить информацию в мас- сив структур, состоящий из 20 элементов.

struct product

{

char name[20]; float cost; int quantity; char vendor[20];

} item[20];

main()

{

int count; for(count=0;count<20;count++)

{

puts("\nВведите сведения о товаре\n\n"); printf("Введите наименование:"); gets(item[count].name); printf("Введите цену:");

scanf("%f", &item[count].cost); printf("Введите количество единиц:"); scanf("%d", &item[count].quantity); printf("Введите имя поставщика:"); gets(item[count].vendor);

}

}

  1. .Внесите изменения в программу из упражнения 2 так, чтобы выводить на экран общую стоимость вклю- ченных в опись товаров.

struct product

{

char name[20]; float cost; int quantity; char vendor[20];

} item[20];

main()

{

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

float total; int count; total=0;

for(count=0;count<20;count++)

{

puts("\nВведите сведения о товаре\n\n"); printf("Введите наименование: "); gets(item[count].name); printf("Введите цену: ");

scanf("%f", &item[count].cost); printf("Введите количество единиц: "); scanf("%d", &item[count].quantity); printf("Введите имя поставщика: "); gets(item[count].vendor); total = total + (item[count].cost *

item[count].quantity);

}

printf("Общая стоимость включенных в опись \

товаров составляет %8.2f", total);

}

  1. .Напишите программу, в которой две переменные типа float определяются в main() как локальные, а за- тем используются в функции, вычисляющей квадраты обоих чисел.

main()

{

float num1, num2; puts("Введите первое число"); scanf("%f",&num1); puts("Введите второе число"); scanf("%f",&num2); doubleit(&num1, &num2);

}

doubleit(dcount1, dcount2) float *dcount1, *dcount2;

{

float sq1, sq2;

sq1 = *dcount1 * *dcount1; sq2 = *dcount2 * *dcount2;

printf("Квадрат %f равен %f\n",*dcount1, sq1); printf("Квадрат %f равен %f\n",*dcount2, sq2);

}

Для того чтобы вернуть значения вызывающей функции, используйте следующую программу:

main()

{

float num1, num2;

puts("Введите первое число"); scanf("%f",&num1); puts("Введите второе число"); scanf("%f",&num2); doubleit(&num1, &num2);

printf("Квадрат первого числа равен %f\n", num1); printf("Квадрат второго числа равен %f", num2);

}

doubleit(dcount1, dcount2) float *dcount1, *dcount2;

{

float sq1, sq2;

*dcount1 = *dcount1 * *dcount1;

*dcount2 = *dcount2 * *dcount2;

}

  1. .Объясните, почему следующая программа написана неверно:

main()

{

struct CD

{

char description[40]; char category[12]; char name[20];

float cost; int number;

} disc;

puts("Введите сведения о диске"); printf("Введите название: "); gets(name); printf("Введите описание: "); gets(description);

printf("Введите категорию: "); gets(category);

printf("Введите цену: "); scanf("%f", &cost); printf("Введите номер ячейки: "); scanf("%d", &number);

puts("Введена следующая информация о диске: "); printf("Название: %s\n", name); printf("Описание: %s\n", description); printf("Категория: %s\n", category); printf("Цена: %6.2f\n", cost); printf("Номер п/п: %d\n", number);

}