Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Нейбауер А. - Моя первая программа на С C++ - 2002

.pdf
Скачиваний:
277
Добавлен:
13.08.2013
Размер:
5.88 Mб
Скачать

gets(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

Соседние файлы в предмете Программирование на C++