2012第三届蓝桥杯C语言第四题,程序哪里有问题?某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 04:28:51

2012第三届蓝桥杯C语言第四题,程序哪里有问题?某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍
2012第三届蓝桥杯C语言第四题,程序哪里有问题?
某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:
每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理).
每位选手都有一个起步的分数为10分.
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,
如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示.例如:0010110011 就是可能的情况.
你的任务是算出所有可能情况.每个答案占一行.
#include
int score=10;
int a[10]={0};
int n=9;
int* add(int* a);
int j;
main()
{
while(n>=0)
{
n=9;
add(a);
int i;
for(i=1;i

2012第三届蓝桥杯C语言第四题,程序哪里有问题?某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍

int score=10;为全局变量,应该放在while(n>=0){}中.


#include<stdio.h>

int a[10] = { 0 };

int n = 9; 

int* add(int* a);

int j;

int main()

{


while (n >= 0)

    {

        int score = 10;

        n = 9;

        add(a);

        int i;

        for (i = 1; i <= 10; i++)

        {

            if (a[i - 1] == 0)

                score = score - i;

            if (a[i - 1] == 1)

                score = 2 * score;

        }

        if (score == 100)

        {

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

                printf("%d", a[j]);

            printf("\n");

        }

    }

}


int* add(int* a)

{

    a[n] = a[n] + 1;

    if (a[n] == 1)

        return a;

    if (a[n] == 2)

    {

        a[n] = 0;

        n--;

        add(a);

    }

}

结果为: