鱼C论坛

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

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

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

#include<stdio.h>
//可食用物品
struct item
{
        int id;
        char* name;
        double cost;
};
//构造可食用物品
struct item create_item(int id, char* name, double cost) {
        struct item i;
        i.id = id;
        i.name = name;
        i.cost = cost;
        return i;
}
//打印菜单
void print_menu(char* title,struct item items[], int n) {
        printf("/***************%s***************/\n", title);
        printf("ID\t\t\tName\t\t\tCost\n");
        for (int i = 0; i < n; i++) {
                printf("%d\t\t\t%s\t\t\t%f\n", items[i].id, items[i].name, items[i].cost);
        }
        printf("/**********************************/\n");
}
//根据选择的id获取食物
struct item get_item(struct item items[], int n, int id) {
        while (n--)
                if (items[n - 1].id == id)
                        return items[n - 1];
        //id不存在的情况下防止出错
        struct item tmp; 
        tmp.id = 0;
        tmp.name = "nothing";
        tmp.cost = 0;
        return tmp;
}

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

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

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

        struct item selected_items[100];
        int selected_amount = 0;

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

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

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

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

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

        return 0;
}
2020-12-18_233450.jpg
1.jpg

最佳答案

查看完整内容

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

使用道具 举报

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

#include<stdio.h>
//可食用物品
struct item
{
        int id;
        char* name;
        double cost;
};
//构造可食用物品
struct item create_item(int id, char* name, double cost) {
        struct item i;
        i.id = id;
        i.name = name;
        i.cost = cost;
        return i;
}
//打印菜单
void print_menu(char* title,struct item items[], int n) {
        printf("/***************%s***************/\n", title);
        printf("ID\t\t\tName\t\t\tCost\n");
        for (int i = 0; i < n; i++) {
                printf("%d\t\t\t%s\t\t\t%f\n", items[i].id, items[i].name, items[i].cost);
        }
        printf("/**********************************/\n");
}
//根据选择的id获取食物
struct item get_item(struct item items[], int n, int id) {
        while (n--)
                if (items[n - 1].id == id)
                        return items[n - 1];
        //id不存在的情况下防止出错
        struct item tmp; 
        tmp.id = 0;
        tmp.name = "nothing";
        tmp.cost = 0;
        return tmp;
}

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

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

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

        struct item selected_items[100];
        int selected_amount = 0;

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

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

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

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

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

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> 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, 2025-1-12 04:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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