5
#include<stdio.h>

#define UPPER   999999
#define LOWER   11111

int main(void)
{
//  Local Declarations
double price = 89.99;
char grade = 'B';
int age = 97;

//  Statements
printf("Homework 2:\n\nUsing printf\n");
printf("  age = %c, age\n");
printf("grade = %d, grade\n");
printf("price = %f, price\n\n");

printf("Using both printf and scanf\n");
printf("Enter a new value for age: ");
scanf("%d", &age);
printf("Enter a new value for grade: ");
scanf("%c", &grade);
printf("Enter a new value for price: ");
scanf("%lf", &price);

printf("Print the new values\n");
printf("  age = %d \n", age);
printf("grade = %c\n", grade);
printf("price = %lf\n\n", price);

print("\n\nPrinting two defined constants: "UPPER" and "LOWER"\n");
print("UPPER = %08d\n", UPPER);
print("LOWER = %08d\n", LOWER);



return 0;
}   //  end of main

上記は私のプログラムであり、修正する必要があります。私はそれを3時間近く続けてきましたが、それでも問題を理解することができます. エラーといくつかの警告があります。

warning: too few arguments for format

本文中のステートメントに対するいくつかの警告

error: expected ')' before numeric constant 

このエラーは、2 つの定数を出力するためのものです。

4

5 に答える 5

10
print("\n\nPrinting two defined constants: "UPPER_S" and "LOWER_S"\n");

次の場合UPPER_Sにのみ機能します。LOWER_S#define

#define UPPER_S  "999999"
#define LOWER_S  "11111"

または、次の 2 つのマクロを使用して、数値#defineの sを「文字列化」することもできます。

#define _STRINGIFY(s) #s
#define STRINGIFY(s) _STRINGIFY(s)

そして、次のようにします。

#define UPPER 999999
#define LOWER  11111

fputs("\n\nPrinting two defined constants: "STRINGIFY(UPPER)" and "STRINGIFY(LOWER)"\n", stdout);
于 2012-10-11T16:27:20.423 に答える
6

私はこの質問に対する答えを探してここに来ましたが、ほとんどの人は実際の質問が何であるかを気にするのではなく、構文エラーに夢中になっているようです. #define通常の変数であるかのように、d 値でprintf を使用できます。ただし、種類には細心の注意を払う必要があります。

#define HEXNUM 0xA8
#define NUMBER 129
#define STRING "somestring"

#include <stdio.h>

int main(void) {
    printf("hex number: %x\n", HEXNUM);
    printf("number: %d\n", NUMBER);
    printf("string: %s", STRING);

    return 0;
}
于 2014-07-29T16:32:31.280 に答える
2

のようなもの

printf("grade = %d, grade\n");

'%d' の引数が必要です。次の形式にする必要があります。

printf("grade = %d\n", grade);
于 2012-10-11T16:21:02.540 に答える
1

printf 引数を引用符の外に置く必要があります。

現時点の:

//  Statements
printf("Homework 2:\n\nUsing printf\n");
printf("  age = %c, age\n");
printf("grade = %d, grade\n");
printf("price = %f, price\n\n");

次のようにする必要があります。

//  Statements
printf("Homework 2:\n\nUsing printf\n");
printf("  age = %c\n", age);
printf("grade = %d\n", grade);
printf("price = %f\n\n", price);
于 2012-10-11T16:21:15.580 に答える