这道编程题用c语言怎样写?

 我来答
自我编程
2019-10-16 · 科技优质答主
自我编程
采纳数:1481 获赞数:4279

向TA提问 私信TA
展开全部

这道题目,方法很多,True和False输入的是字符串,计算的其实是0和1,所以只要用1个字节记录每次输入的0和1就可以了。我这里代码用动态创建的字符串数组来记录输入,每一个字符串表示一组输入,每一个字符的值(0或者1)对应(True或者False)。包含输入验证。

#include<stdio.h>

#include<string.h>

#include<malloc.h>

#define DSIZE 2 //数据的组数,表示有几组数据的输入,题目演示中是2组,想改修改该值

int main()

{

    int i,j,n,s;

    char inStr[6];

    char **list=NULL,*nlist=NULL;

    //=================input============================

    list=(char **)malloc(sizeof(char *)*DSIZE);

    if(!list)

        return 0;

    for(i=0;i<DSIZE;i++)

    {

        n=0;

        while(n<1 || n>100)

            scanf("%d",&n);

        nlist=(char *)malloc(sizeof(char)*(n+1));

        if(!nlist)

            return 0;

        nlist[n]=0;

        for(j=0;j<n;j++)

            while(1)

            {

                scanf("%s",inStr);

                if(!strcmp(inStr,"True"))

                    nlist[j]=1;

                if(!strcmp(inStr,"False"))

                    nlist[j]=0;

                if(strcmp(inStr,"True") && strcmp(inStr,"False"))

                    printf("无效输入!必须输入True或者False!\n");

                else

                    break;

            }

        list[i]=nlist;


    }

    //===============output=======================

    for(i=0;i<DSIZE;i++)

    {

        s=0;

        n=strlen(list[i]);

        for(j=0;j<n;j++)

            s+=list[i][j];

        printf("%d\n",s);

    }

    return 0;

}

追问
您可以先不考虑输入别的情况,只考虑true和false的方式,稍微简化一下吗?。我不太看得懂
追答
输入验证就只是一个if而已,strcmp是C语言内部函数,比较两个字符串相同返回0.
不考虑其他输入,你就把下面这句删掉。

if(strcmp(inStr,"True") && strcmp(inStr,"False"))
printf("无效输入!必须输入True或者False!\n");
else
其他都是基本语句。题目每组包含输入多个True和False,这个代码就是当你输入True的时候,在字符串的一个元素中保存1,输入False的首行保存0。
比如题目图中的输入:
2
true
false
1
false
那么代码就会创建一个字符串数组,包含2个字符串“10”和“0”,这两个字符串分别对应上面两组输入,每个字符串长度就是上面的2和1,每个字符串的内容就是上面的true和false。
这样做,最后输出True的个数也就简单了,只要把字符里所有元素累加就可以了。
这样能听懂么。
夏天的小红花

2019-10-16 · TA获得超过4804个赞
知道大有可为答主
回答量:1万
采纳率:83%
帮助的人:673万
展开全部

包含头文件string.h。对于每一组测试数据,先读入数目n,然后读入第一个字符串,使用strcmp函数就可以比较两个字符串是否相等。如相等的话就统计数目。当n个字符串读入完毕后,就可以输出本轮读入中与True相同的字符串的数量了。

#include

#include

int main()

{ int n,i,k;

char s[10];

while(scanf("%d",&n)==1)

{ k=0;

for(i=0; i

更多追问追答
追问
你写全了吗?
追答
这要怪百度的。程序运行结果都出来了,能不写全吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式