澄叔 发表于 2022-12-17 19:12

C语言程序设计求助

题目如图
迫不得已发个照片。
发帖目的:求个思路

liyitong 发表于 2022-12-17 19:24

本帖最后由 liyitong 于 2022-12-17 19:52 编辑

你是来抄答案的吧?
这需要什么思路?直接按照题目要求硬怼就行了,不需要算法和什么技巧。
——————————
你这是期末大作业吧?{:1_908:}

Yron 发表于 2022-12-17 19:43

字典吧,如果没记错

澄叔 发表于 2022-12-17 19:52

Yron 发表于 2022-12-17 19:43
字典吧,如果没记错

可否具体说说

澄叔 发表于 2022-12-17 20:07

liyitong 发表于 2022-12-17 19:24
你是来抄答案的吧?
这需要什么思路?直接按照题目要求硬怼就行了,不需要算法和什么技巧。
—————— ...

巨巨救救我吧

1Eleven1 发表于 2022-12-17 20:22

定义一个结构体,字段有姓名、行程、健康码等要求的信息,定义一个结构体数组存放刚才定义的结构体,并用表上信息实例化结构体数组,随机将某结构体成员对应字段改为阳性,按上面的规则写个循环修改结构体数组里的数据就行了

ThemanRonin 发表于 2022-12-17 20:24

注册个chatGPT帮你写吧

纸莺鸢梦 发表于 2022-12-17 20:37

数据库可以用文件操作来实现,其他的定义好结构体即可

cnv587 发表于 2022-12-17 20:50

我怀疑这就是你的期末作业。。。

liyitong 发表于 2022-12-17 21:31

#include <stdio.h>
#include <string.h>
#define t "阴性"
#define f "阳性"
#define g "绿码"
#define r "红码"
#define y "黄码"
typedef struct geren
{
        int id;
        char name;
        char shangwu;
        char xiawu;
        char hesuan;
        char xcm;
} xinxijieguo;
xinxijieguo xinxi={{1} };
int create_geren(int id, char *name, char swxc, char xwxx, char *hesuan, char *xcm, int position)
{
        xinxi.id = id;
        strcpy(xinxi.name, name);
        xinxi.shangwu = swxc;
        xinxi.xiawu = xwxx;
        strcpy(xinxi.hesuan, hesuan);
        strcpy(xinxi.xcm, xcm);
        return 0;
}
int create_all(char *s)
{
        create_geren(1,"name1",'A','B',t,g,0);
        create_geren(2,"name2",'C','D',t,g,1);
        create_geren(3,"name3",'E','F',t,g,2);
        create_geren(4,"name4",'A','D',t,g,3);
        create_geren(5,"name5",'B','E',t,g,4);
        create_geren(6,"name6",'F','A',t,g,5);
        create_geren(7,"name7",'C','F',t,g,6);
        create_geren(8,"name8",'E','B',t,g,7);
        create_geren(9,"name9",'E','D',t,g,8);
        create_geren(10,"name10",'A','C',t,g,9);
        return puts(s);
}
int show_biaoti()
{
        return         printf("%5s %7s %9s %9s %9s %7s\n", "编号","姓名","上午行程","下午行程", "核酸信息","行程码");

}
int show(xinxijieguo xinxi, int bianhao=10, int tag=0)
{
        int i=0;
        if ( tag)
        {
                while (i<10)
                        {       
                                if (xinxi.id==bianhao)
                                {
                                        printf("%5d %7s %9c %9c %9s %7s\n", xinxi.id, xinxi.name , xinxi.shangwu , xinxi.xiawu , xinxi.hesuan , xinxi.xcm);
                                        return i;
                                }
                                i++;
                        }       
        }
        while (i<10)
        {       
                if (xinxi.id)
                {
                        printf("%5d %7s %9c %9c %9s %7s\n", xinxi.id, xinxi.name , xinxi.shangwu , xinxi.xiawu , xinxi.hesuan , xinxi.xcm);
                }
                i++;
        }
        return i;
}
int suiji_yang(int bianhao) //第一问,随机阳一个
{
        if (bianhao>10 || bianhao<1)
        {
                return puts("未找到对应信息。");
        }
        else
        {
                show_biaoti();
                strcpy(xinxi.hesuan, f);
                strcpy(xinxi.xcm, r);
                return show(xinxi, bianhao, 1);//参数1表示只显示bianhao所在的一行
        }
}
int mijie_huangma(int bianhao) //第二问,行程码变黄
{
        puts("同一时间去过同一地点的情况: ");
        show_biaoti();
        int i=0;
        while(i<10)
        {
                if (xinxi.shangwu==xinxi.shangwu || xinxi.xiawu==xinxi.xiawu)
                {
                        strcpy(xinxi.xcm, y);
                        show(xinxi, i+1 ,1);
                }
                i++;
        }       
        return i;
}
int yangzhuanyin(int bianhao) //第三问,阴性转绿码,同行程都转
{ //其实就是改一下第二问的处理结果
        if (strcmp(xinxi.hesuan,t)==0)
        {
                return puts("当前对象是阴性,无法执行阳转阴操作。");
        }
        show_biaoti();
        int i=0;
        while(i<10)
        {
                if (xinxi.shangwu==xinxi.shangwu || xinxi.xiawu==xinxi.xiawu)
                {
                        strcpy(xinxi.hesuan, t);
                        strcpy(xinxi.xcm, g);
                        //show(xinxi, i+1 ,1);
                }
                i++;
        }       
        show(xinxi,10);
        return i;
}

int main()
{       
        int bianhao2,bianhao3;
        create_all("一共创建了10组数据。");
        show(xinxi);
        printf("属于一个1-10之间的整数:");
        scanf("%d",&bianhao2);
        suiji_yang(bianhao2);
        mijie_huangma(bianhao2);
        printf("属于要阳转阴的编号:");
        scanf("%d",&bianhao3);
        yangzhuanyin(bianhao3);
        //printf("%s %s %s %s %s\n",t,f,g,r,y);
        return 0;
}
这两天居家养病,烧迷糊了,今天有点好转,做个题恢复恢复感觉。
题目不难,但是非常考验基础。没有什么高端操作,不需要设计分析算法。
结构体遍历和字符串比较即可解决所有问题。

页: [1] 2
查看完整版本: C语言程序设计求助