作业帮 > 综合 > 作业

2012第三届蓝桥杯C语言第四题,程序哪里有问题?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 03:18:27
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
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);    }}结果为: