2012第三届蓝桥杯C语言第四题,程序哪里有问题?某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 17:24:36
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);
}
}
结果为: