鱼C论坛

 找回密码
 立即注册
查看: 2592|回复: 16

[已解决]C语言小问题,求解

[复制链接]
发表于 2020-12-18 23:38:46 | 显示全部楼层 |阅读模式
20鱼币
用C语言的结构体如何完成在的小程序,求解
最佳答案
2020-12-18 23:38:47
看起来简单,但是写了两个小时
复制到单个文件中就可以编译运行了
(输出格式没有调好)


  1. //关闭vs2019不安全函数-4996警告
  2. #pragma warning(disable : 4996)

  3. #include<stdio.h>
  4. //可食用物品
  5. struct item
  6. {
  7.         int id;
  8.         char* name;
  9.         double cost;
  10. };
  11. //构造可食用物品
  12. struct item create_item(int id, char* name, double cost) {
  13.         struct item i;
  14.         i.id = id;
  15.         i.name = name;
  16.         i.cost = cost;
  17.         return i;
  18. }
  19. //打印菜单
  20. void print_menu(char* title,struct item items[], int n) {
  21.         printf("/***************%s***************/\n", title);
  22.         printf("ID\t\t\tName\t\t\tCost\n");
  23.         for (int i = 0; i < n; i++) {
  24.                 printf("%d\t\t\t%s\t\t\t%f\n", items[i].id, items[i].name, items[i].cost);
  25.         }
  26.         printf("/**********************************/\n");
  27. }
  28. //根据选择的id获取食物
  29. struct item get_item(struct item items[], int n, int id) {
  30.         while (n--)
  31.                 if (items[n - 1].id == id)
  32.                         return items[n - 1];
  33.         //id不存在的情况下防止出错
  34.         struct item tmp;
  35.         tmp.id = 0;
  36.         tmp.name = "nothing";
  37.         tmp.cost = 0;
  38.         return tmp;
  39. }

  40. //主流程
  41. int main(char* v[], int v_n) {

  42.         struct item foods[5];
  43.         foods[0] = create_item(1, "Curry beef with rice", 40);
  44.         foods[1] = create_item(2, "Sushi set meal", 65);
  45.         foods[2] = create_item(3, "YangZhou fire rice", 45);
  46.         foods[3] = create_item(4, "Sirloin Steak with Spaghetti", 72);
  47.         foods[4] = create_item(5, "Chicken vegetable roll", 42);

  48.         struct item drinks[3];
  49.         drinks[0] = create_item(21, "Soft drink", 10);
  50.         drinks[1] = create_item(22, "Red wine", 15);
  51.         drinks[2] = create_item(23, "Beer", 15);

  52.         struct item selected_items[100];
  53.         int selected_amount = 0;

  54.         //选择食物
  55.         while (selected_amount<100) {
  56.                 print_menu("Food Menu", foods, 5);
  57.                 printf("\n");
  58.                 printf("Please Select Your Food ID:");
  59.                 int id;
  60.                 scanf("%d",&id);
  61.                 struct item selected_food = get_item(foods, 5, id);
  62.                 selected_items[selected_amount] = selected_food;
  63.                 selected_amount++;
  64.                 printf("You have selected %s\n", selected_food.name);

  65.                 printf("Do you need more food?  0-No  1-Yes\n");
  66.                 int flag;
  67.                 scanf("%d",&flag);
  68.                 printf("\n");
  69.                 if (flag == 0) break;
  70.         }

  71.         //选择饮料
  72.         while (selected_amount < 100) {
  73.                 print_menu("Drink Menu", drinks, 3);
  74.                 printf("\n");
  75.                 printf("Please Select Your drink ID:");
  76.                 int id;
  77.                 scanf("%d", &id);
  78.                 struct item selected_drind = get_item(drinks, 5, id);
  79.                 selected_items[selected_amount] = selected_drind;
  80.                 selected_amount++;
  81.                 printf("You have selected %s\n", selected_drind.name);

  82.                 printf("Do you need more drink?  0-No  1-Yes\n");
  83.                 int flag;
  84.                 scanf("%d", &flag);
  85.                 printf("\n");
  86.                 if (flag == 0) break;
  87.         }

  88.         double total_cost = 0;
  89.         for (int i = 0; i < selected_amount; i++) {
  90.                 total_cost += selected_items[i].cost;
  91.         }
  92.        
  93.         printf("Your total price:%f", total_cost);

  94.         return 0;
  95. }
复制代码
2020-12-18_233450.jpg
1.jpg

最佳答案

查看完整内容

看起来简单,但是写了两个小时 复制到单个文件中就可以编译运行了 (输出格式没有调好)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-18 23:38:47 | 显示全部楼层    本楼为最佳答案   
看起来简单,但是写了两个小时
复制到单个文件中就可以编译运行了
(输出格式没有调好)


  1. //关闭vs2019不安全函数-4996警告
  2. #pragma warning(disable : 4996)

  3. #include<stdio.h>
  4. //可食用物品
  5. struct item
  6. {
  7.         int id;
  8.         char* name;
  9.         double cost;
  10. };
  11. //构造可食用物品
  12. struct item create_item(int id, char* name, double cost) {
  13.         struct item i;
  14.         i.id = id;
  15.         i.name = name;
  16.         i.cost = cost;
  17.         return i;
  18. }
  19. //打印菜单
  20. void print_menu(char* title,struct item items[], int n) {
  21.         printf("/***************%s***************/\n", title);
  22.         printf("ID\t\t\tName\t\t\tCost\n");
  23.         for (int i = 0; i < n; i++) {
  24.                 printf("%d\t\t\t%s\t\t\t%f\n", items[i].id, items[i].name, items[i].cost);
  25.         }
  26.         printf("/**********************************/\n");
  27. }
  28. //根据选择的id获取食物
  29. struct item get_item(struct item items[], int n, int id) {
  30.         while (n--)
  31.                 if (items[n - 1].id == id)
  32.                         return items[n - 1];
  33.         //id不存在的情况下防止出错
  34.         struct item tmp;
  35.         tmp.id = 0;
  36.         tmp.name = "nothing";
  37.         tmp.cost = 0;
  38.         return tmp;
  39. }

  40. //主流程
  41. int main(char* v[], int v_n) {

  42.         struct item foods[5];
  43.         foods[0] = create_item(1, "Curry beef with rice", 40);
  44.         foods[1] = create_item(2, "Sushi set meal", 65);
  45.         foods[2] = create_item(3, "YangZhou fire rice", 45);
  46.         foods[3] = create_item(4, "Sirloin Steak with Spaghetti", 72);
  47.         foods[4] = create_item(5, "Chicken vegetable roll", 42);

  48.         struct item drinks[3];
  49.         drinks[0] = create_item(21, "Soft drink", 10);
  50.         drinks[1] = create_item(22, "Red wine", 15);
  51.         drinks[2] = create_item(23, "Beer", 15);

  52.         struct item selected_items[100];
  53.         int selected_amount = 0;

  54.         //选择食物
  55.         while (selected_amount<100) {
  56.                 print_menu("Food Menu", foods, 5);
  57.                 printf("\n");
  58.                 printf("Please Select Your Food ID:");
  59.                 int id;
  60.                 scanf("%d",&id);
  61.                 struct item selected_food = get_item(foods, 5, id);
  62.                 selected_items[selected_amount] = selected_food;
  63.                 selected_amount++;
  64.                 printf("You have selected %s\n", selected_food.name);

  65.                 printf("Do you need more food?  0-No  1-Yes\n");
  66.                 int flag;
  67.                 scanf("%d",&flag);
  68.                 printf("\n");
  69.                 if (flag == 0) break;
  70.         }

  71.         //选择饮料
  72.         while (selected_amount < 100) {
  73.                 print_menu("Drink Menu", drinks, 3);
  74.                 printf("\n");
  75.                 printf("Please Select Your drink ID:");
  76.                 int id;
  77.                 scanf("%d", &id);
  78.                 struct item selected_drind = get_item(drinks, 5, id);
  79.                 selected_items[selected_amount] = selected_drind;
  80.                 selected_amount++;
  81.                 printf("You have selected %s\n", selected_drind.name);

  82.                 printf("Do you need more drink?  0-No  1-Yes\n");
  83.                 int flag;
  84.                 scanf("%d", &flag);
  85.                 printf("\n");
  86.                 if (flag == 0) break;
  87.         }

  88.         double total_cost = 0;
  89.         for (int i = 0; i < selected_amount; i++) {
  90.                 total_cost += selected_items[i].cost;
  91.         }
  92.        
  93.         printf("Your total price:%f", total_cost);

  94.         return 0;
  95. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-19 03:58:16 | 显示全部楼层
砚堂_ 发表于 2020-12-19 03:53
看起来简单,但是写了两个小时
复制到单个文件中就可以编译运行了
(输出格式没有调好)

运行截图

运行截图

运行截图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-19 15:36:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-19 15:39:17 | 显示全部楼层
砚堂_ 发表于 2020-12-19 03:53
看起来简单,但是写了两个小时
复制到单个文件中就可以编译运行了
(输出格式没有调好)

为什么我用VC++6.0编译会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-19 17:04:07 From FishC Mobile | 显示全部楼层
vc6.0哪里下载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-28 19:03:47 | 显示全部楼层
段段努力秃头 发表于 2020-12-19 15:39
为什么我用VC++6.0编译会报错

可能是第二行报错了吧,可以注释试试。我用的vs2019
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-29 15:41:27 | 显示全部楼层
66666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-29 15:54:59 | 显示全部楼层
lihai
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-29 19:17:18 | 显示全部楼层
强大,为何不用devc呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 12:52:20 | 显示全部楼层
砚堂_ 发表于 2020-12-19 03:53
看起来简单,但是写了两个小时
复制到单个文件中就可以编译运行了
(输出格式没有调好)


                               
登录/注册后可看大图

用的DEV编译,然后报错,(第一行的关闭不安全函数已经删除后的代码)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 12:57:38 | 显示全部楼层
砚堂_ 发表于 2020-12-19 03:53
看起来简单,但是写了两个小时
复制到单个文件中就可以编译运行了
(输出格式没有调好)

用vs运行带第一行的代码,显示如下:

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-5 00:33:10 | 显示全部楼层
愷龍 发表于 2021-1-3 12:52
用的DEV编译,然后报错,(第一行的关闭不安全函数已经删除后的代码)

哥哥,你看一下红色的报错的信息呀,说for循环中声明变量仅在c99或c11中可用
是不是没配好,用的c89
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-5 00:34:47 | 显示全部楼层
雷欧库珀 发表于 2020-12-29 19:17
强大,为何不用devc呢

之前用过,忘记什么原因卸载了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-5 00:36:49 | 显示全部楼层
愷龍 发表于 2021-1-3 12:57
用vs运行带第一行的代码,显示如下:

生成成功了,但是文件不见了,那应该是被删除了。。。
是360干的吗?。。
没装360的话,看一下windows defender有没有提示。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-8 11:58:55 | 显示全部楼层
用结构体加链表你试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-9 00:55:08 | 显示全部楼层
霸道larder 发表于 2021-1-8 11:58
用结构体加链表你试一下

就迭代的方式变了一下,别的都差不多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 19:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表