1

我对编程很陌生。

我正在尝试编写一个程序,该程序将从数组中调用水果的价格。但我希望代码在写价格之前也写下水果的名称。如果我输入 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;
        }
    }
}

4

1 回答 1

2

只需定义一个名称数组,例如

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 ) ) {
于 2019-09-30T16:00:07.443 回答