Нейбауер А. - Моя первая программа на С C++ - 2002
.pdfgets(item.name); printf("Введите цену:"); scanf("%f", &item.cost);
printf("Введите количество единиц:"); scanf("%d", &item.quantity); printf("Введите имя поставщика:"); gets(item.vendor);
}
2.Внесите изменения в программу из упражнения 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);
}
}
3.Внесите изменения в программу из упражнения 2 так, чтобы выводить на экран общую стоимость включенных в опись товаров.
struct product
{
char name[20]; float cost;
int quantity; char vendor[20]; } item[20];
main()
{
Ⱦɚɧɧɚɹ ɜɟɪɫɢɹ ɤɧɢɝɢ ɜɵɩɭɳɟɧɚ ɷɥɟɤɬɪɨɧɧɵɦ ɢɡɞɚɬɟɥɶɫɬɜɨɦ %RRNV VKRS Ɋɚɫɩɪɨɫɬɪɚɧɟɧɢɟ ɩɪɨɞɚɠɚ ɩɟɪɟɡɚɩɢɫɶ ɞɚɧɧɨɣ ɤɧɢɝɢ ɢɥɢ ɟɟ ɱɚɫɬɟɣ ɁȺɉɊȿɓȿɇɕ Ɉ ɜɫɟɯ ɧɚɪɭɲɟɧɢɹɯ ɩɪɨɫɶɛɚ ɫɨɨɛɳɚɬɶ ɩɨ ɚɞɪɟɫɭ 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);
}
4.Напишите программу, в которой две переменные типа 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;
www.books-shop.com
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;
}
5.Объясните, почему следующая программа написана неверно: 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);
www.books-shop.com
}
Ко всем переменным, используемым в инструкциях ввода и вывода, обращение происходит без использования имени структурной переменной.
К переменным следует обращаться как к disc.name, disc.description и так далее.
Глава 12
1.Напишите программу, в которой функция fputs() используется для создания файла, содержащего названия кинофильмов.
#include "stdio.h" main()
{
FILE *fp; char flag; char title[20];
if((fp = fopen("MOVIES","w"))==NULL)
{
puts("Невозможно открыть файл"); exit();
}
flag = 'y'; while(flag!='n')
{
puts("Введите название кинофильма: "); gets(title);
fputs(title, fp); fputs("\n",fp);
printf("Желаете продолжить ввод?"); flag=getchar();
putchar('\n');
}
fclose(fp);
}
2.Напишите программу, которая читает названия кинофильмов (упражнение1) в массив строк.
#include "stdio.h" main()
{
FILE *fp; int index;
char titles[80][12]; index = 0;
if((fp = fopen("MOVIES","r"))==NULL)
www.books-shop.com
{
puts("Невозможно открыть файл"); exit();
}
while(fgets(titles[index],12,fp)!= NULL)
{
puts(titles[index]);
index++;
if(index>80)
{
puts("К сожалению, вы уже ввели 80 названий.");
break;
}
}
fclose(fp);
}
3.Напишите программу, в которой функция fprintf() используется для создания файла инвентарной описи, содержащей сведения о наименовании товара, его цене и количестве единиц, имеющихся в наличии.
#include "stdio.h" main()
{
FILE *fp; struct product
{
char name[20]; float cost;
int quant; } item;
if((fp = fopen("MYFILE","w"))==NULL)
{
puts("Cannot open the file"); exit();
}
puts("\nВведите сведения о товаре\n\n"); printf("Введите наименование: "); gets(item.name); while(strlen(item.name)>0)
{
printf("Введите цену: "); canf("%f", &item.cost);
printf("Введите количество единиц: "); scanf("%d", &item.quant);
www.books-shop.com
fprintf(fp, "%s %f %d\n", item.name, item.cost, item.quant);
printf("Введите наименование: "); gets(item.name);
}
fclose(fp);
}
4.Напишите программу, которая читает файл инвентарной описи, созданный в упражнении 3.
#include "stdio.h" main()
{
FILE *fp; struct product
{
char name[20]; float cost;
int quant; } item;
if((fp = fopen("MYFILE","r"))==NULL)
{
puts("Невозможно открыть файл"); exit();
}
while(fscanf(fp,"%s %f %d", item.name,
&item.cost, &item.quant) != EOF)
{
printf("Наименование: %s\n", item.name); printf("Цена %f\n", item.cost); printf("Количество: %d\n", item.quant);
}
fclose(fp);
}
5.Отредактируйте программы из упражнений 3 и 4 так, чтобы они читали данные как структуры.
#include "stdio.h" main()
{
FILE *fp; struct product
{
char name[20];
loat cost;
int quant; } item;
www.books-shop.com
if((fp = fopen("MYFILE","w"))==NULL)
{
puts("Невозможно открыть файл"); exit();
}
puts("\nВведите сведения о товаре\n\n"); printf("Введите наименование: "); gets(item.name); while(strlen(item.name)>0)
{
printf("Введите цену: "); scanf("%f", &item.cost); printf("Введите количество: "); scanf("%d", &item.quant); fwrite(&item, sizeof(item), 1, fp); printf("Введите наименование: "); gets(item.name);
}
fclose(fp);
}
#include "stdio.h" main()
{
FILE *fp; struct product
{
char name[20]; float cost;
int quant; } item;
if((fp = fopen("MYFILE","r"))==NULL)
{
puts("Невозможно открыть файл"); exit();
}
while(fread(&item, sizeof(item), 1, fp)==1)
{
printf("Наименование: %s\n", item.name); printf("Цена: %f\n", item.cost); printf("Количество: %d\n", item.quant);
}
fclose(fp);
www.books-shop.com
}
6.Объясните, почему следующая программа написана неверно:
#include "stdio.c" main()
{
FILE fp; char letter;
if ((fp = fopen("MYFILE", "w")) == NULL)
{
puts("Невозможно открыть файл"); exit();
}
do
{
letter = getchar(); fputc(letter, fp);
}
while(letter != '\n'); fclose(fp);
}
Файл заголовков называется STDIO.H, а не STDIO.C. Указатель на файл должен определяться со звездочкой перед именем: *fp. В цикле while должен быть указан код \r, а не \n.
www.books-shop.com
ПРИЛОЖЕНИЕ II Прикладная программа
Листинг к главе 13. Программа составления каталога компакт-дисков.
/*CDAPP.C*/ #include "stdio.h"
#define FILENAME "CDfile" #define TEMPFILE "Temp" #define MAX 20
FILE *fp, *tp, *printer; struct CD
{
char name[20];
char description[40]; char category[12]; float cost;
int number; } disc;
int slots[MAX]; int count; main()
{
char select; getslots(); do
{
puts("Моя коллекция компакт-дисков\n"); puts("1 Добавить карточку\n");
puts("2 Удалить карточку\n"); puts("3 Редактировать
содержимое карточки\n");
puts("4 Изменить номер ячейки\n"); puts("5 Сортировка карточек\n"); puts("6 Найти карточку\n"); puts("7 Вывести на печать\n"); puts("8 Выйти из программы\n");
printf("Пожалйста, введите Ваш выбор: "); select = getchar();
putchar('\n');
switch(select)
{
case '1' :
addcd();
www.books-shop.com
break;
case '2':
delcd();
break;
case '3':
chcd();
break;
case '4':
chloc();
break;
case '5':
sort();
break;
case '6':
locate();
break;
case '7':
plist();
break;
case '8':
break;
default:
puts("Ошибка,
повторите ввод\n\n");
}
}
while(select!='8');
return(0);
}
addcd()
{
int pause; if(count>>=MAX)
{
puts("К сожалению свободных ячеек нет\n"); pause=getchar();
return;
}
if((fp = fopen(FILENAME,"a")) == NULL)
{
printf("Невозможно открыть файл %s\n",FILENAME);
www.books-shop.com
- #
- #
- #13.08.201334.52 Mб92Липман С., Лажойе Ж., Му Б. - Язык программирования C++. Вводный курс - 2007.djvu
- #13.08.201347.18 Mб128Литвиненко Н.А. - Технология программирования на C++. Win32 API-приложения - 2010.djvu
- #
- #
- #13.08.201317.53 Mб104Оберг Р., Торстейсон П. - Архитектура .NET и программирование на Visual C++ - 2002.pdf
- #
- #
- #
- #