【问题标题】:How to call a value written in printf to another printf如何将 printf 中写入的值调用到另一个 printf
【发布时间】:2019-09-30 15:58:00
【问题描述】:

我对编程很陌生。

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

【问题讨论】:

  • 您对a 的索引总是减1 - 苹果的价格是a[0] 而不是a[1]

标签: c printf scanf


【解决方案1】:

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

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 ) ) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2012-03-12
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2020-06-08
    相关资源
    最近更新 更多