#6
by かずま » 8年前
box さんが書きました:
コード:
Coffee coffee[] = {
{ "Mocha", 350 },
{ "Kona", 450 },
{ "Blend", 300 },
};
これは、次のように実行時に初期化が行われます。
コード:
Coffee coffee[3];
memcpy(coffee[0].name, "Mocha\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
coffee[0].price = 350;
memcpy(coffee[1].name, "Kona\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
coffee[1].price = 450;
memcpy(coffee[2].name, "Blend\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
coffee[2].price = 300;
次のように static を付けると、実行時には何もしません。
コード:
static Coffee coffee[] = {
{ "Mocha", 350 },
{ "Kona", 450 },
{ "Blend", 300 },
};
box さんが書きました:
コード:
printf("価格:%.0f\n", (double) coffee[i].price * weight / 100);
分量が奇数の時、Mocha と Kona は 1円未満の端数が出て切り上げに
なってしまいます。
客商売では端数切捨てにしてほしいなあ、と思います。
コード:
#include <stdio.h>
struct { const char *種類; int 価格; } 表[] = {
{ "Mocha", 350 }, { "Kona", 450 }, { "Blend", 300 }
};
const int 個数 = sizeof 表 / sizeof *表;
int main(void)
{
char 種類[100]; int 分量, i;
printf("豆の種類: ");
scanf("%99s", 種類);
printf("分量(g): ");
if (scanf("%d", &分量) != 1) return 1;
for (i = 0; i < 個数 && strcmp(種類, 表[i].種類); i++) ;
if (i < 個数) printf("価格: %d\n", 表[i].価格 * 分量 / 100);
return 0;
}
VC++ では名前に日本語が使えます。
tennga さんには、すべての回答者にコメントや質問や感謝の言葉などを
返信されることを希望します。解決へのチェックも忘れずに。
[quote="box" id=3,19210,145504]
[code=c]
Coffee coffee[] = {
{ "Mocha", 350 },
{ "Kona", 450 },
{ "Blend", 300 },
};
[/code][/quote]
これは、次のように実行時に初期化が行われます。
[code=c]
Coffee coffee[3];
memcpy(coffee[0].name, "Mocha\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
coffee[0].price = 350;
memcpy(coffee[1].name, "Kona\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
coffee[1].price = 450;
memcpy(coffee[2].name, "Blend\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
coffee[2].price = 300;
[/code]
次のように static を付けると、実行時には何もしません。
[code=c]
static Coffee coffee[] = {
{ "Mocha", 350 },
{ "Kona", 450 },
{ "Blend", 300 },
};
[/code]
[quote="box" id=3,19210,145504]
[code=C]
printf("価格:%.0f\n", (double) coffee[i].price * weight / 100);
[/code][/quote]
分量が奇数の時、Mocha と Kona は 1円未満の端数が出て切り上げに
なってしまいます。
客商売では端数切捨てにしてほしいなあ、と思います。
[code=c]
#include <stdio.h>
struct { const char *種類; int 価格; } 表[] = {
{ "Mocha", 350 }, { "Kona", 450 }, { "Blend", 300 }
};
const int 個数 = sizeof 表 / sizeof *表;
int main(void)
{
char 種類[100]; int 分量, i;
printf("豆の種類: ");
scanf("%99s", 種類);
printf("分量(g): ");
if (scanf("%d", &分量) != 1) return 1;
for (i = 0; i < 個数 && strcmp(種類, 表[i].種類); i++) ;
if (i < 個数) printf("価格: %d\n", 表[i].価格 * 分量 / 100);
return 0;
}
[/code]
VC++ では名前に日本語が使えます。
tennga さんには、すべての回答者にコメントや質問や感謝の言葉などを
返信されることを希望します。解決へのチェックも忘れずに。