Как вызвать значение, записанное в printf, в другой printf - PullRequest
1 голос
/ 30 сентября 2019

Я очень новичок в программировании.

Я пытаюсь написать программу, которая будет вызывать цену фруктов из массива. Но я хотел бы, чтобы код также написал название фрукта, прежде чем писать цену, как. Если я наберу 2, как сделать вывод «Оранжевая цена: 10», а не просто цена: 10.

#include <stdio.h>
int main(void)
{
    int i;
    int a[3] = { 5,10,15 };
    printf("1) Apple");
    printf("2) Orange");
    printf("3) grape");

    while (1) {

        printf("Which fruit would u like : ");

        scanf("%d", &i);//Enter the fruit number
        if (i <= 0 || i >= 4) {
            printf("\nPlease use the correct number :");
        }
         else {
            printf("Price :%d", a[i]);
            break;
        }
    }
}

1 Ответ

2 голосов
/ 30 сентября 2019

Просто определите массив имен, таких как

int a[3] = { 5,10,15 };
const char *fruit[] = { "Apple", "Orange", "grape" };

и используйте его в вызове printf. Например,

printf( "%s price: %d", fruit[i], a[i] );

И эти операторы

printf("1) Apple");
printf("2) Orange");
printf("3) grape");

можно переписать так:

for ( i = 0; i < N; i++ )
{
    printf( "%zu) %s\n", i + 1, fruit[i] );
}

Примите во внимание, что оператор if

if (i <= 0 || i >= 4) {

неверно. Должно быть

if (i < 0 || i > 2) {

Также использование магических чисел - плохая идея.

Вы можете написать вместо этого.

enum { N = 3 };
int a[N] = { 5,10,15 };
const char *fruit[N] = { "Apple", "Orange", "grape" };

size_t i = 0;

//...

scanf("%zu", &i);//Enter the fruit number
if ( !( i < N ) ) {
...