一个小系统 寻求思路

goziem 2008-12-09 05:58:22
足彩共14场比赛,每场都有三种可能出现的结果,即3(代表胜)1(代表平)0(代表负)
现要编写一个系统,能输入各种复式组合,能计算全部的组合
例如
第1场3 1
第2场3
第3场3
第4场3
第5场3
第6场3
第7场3
第8场3
第9场3
第10场3
第11场3
第12场3
第13场3
第14场3
这样计算出的结果 是 3 3 3 3 3 3 3 3 3 3 3 3 3 3
1 3 3 3 3 3 3 3 3 3 3 3 3 3


...全文
183 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
就呆在云上 2008-12-11
  • 打赏
  • 举报
回复
14场?
都有3种可能
就是3的14次方
你当计算机傻啊?小心他造反
nicholasfly 2008-12-11
  • 打赏
  • 举报
回复
hoho循环
zzzlll1983 2008-12-11
  • 打赏
  • 举报
回复
循环嵌套
shangqiuzuidong 2008-12-10
  • 打赏
  • 举报
回复
用while语句
想输入多少次就输入多少次
屡试不爽
goziem 2008-12-10
  • 打赏
  • 举报
回复
我解决问题了 呵呵 谢谢你哈
还有一个事 能不能改成能循环输入的
就是说第一次输入输出后
还能输入呢?
goziem 2008-12-10
  • 打赏
  • 举报
回复
还是不行丫
我是vc++下编写的 当链接成exe文件是
运行时 输入后就是一闪而过丫 奇怪?
dfyx123 2008-12-10
  • 打赏
  • 举报
回复
在tc下的话按alt+f5键就可以显示结果。
在vc++6.0下可以直接显示结果的。
while(judge(s2)!=1)
{
printf("输入有误,请重新输入第 %d 轮的选择:",x+1);
scanf("%s",s2);
}
上面改成
while(judge(s2)!=1)
{
fflush(stdin);
printf("输入有误,请重新输入第 %d 轮的选择:",x+1);
scanf("%s",s2);
}
安全性更好一点。
xtting_8984313 2008-12-10
  • 打赏
  • 举报
回复
system("pause")

看能挺住吗?
goziem 2008-12-10
  • 打赏
  • 举报
回复
能问一下么 为什么结果一闪而过
能不能在结果界面上停留着呢?
dfyx123 2008-12-09
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
int judge(char *a)
{
int i;
if(strlen(a)<1||strlen(a)>3)
return -1;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='0'||a[i]=='1'||a[i]=='3')
continue;
else
return -1;
}
return 1;
}

void main()
{
char s1[14][4]={'\0'};
char s2[4]={'\0'};
int a,b,c,d,e,f,g,h,i,j,k,l,m,n;
int x=0;
for(x=0;x<14;x++)
{
printf("请输入第 %d 轮的选择:",x+1);//输如每场比赛的选择情况,0,1,3中至少选一种, 多选不要加空格,
scanf("%s",s2);
while(judge(s2)!=1)
{
printf("输入有误,请重新输入第 %d 轮的选择:",x+1);
scanf("%s",s2);
}
strcpy(s1[x],s2);
}
for(a=0;a<strlen(s1[0]);a++)
for(b=0;b<strlen(s1[1]);b++)
for(c=0;c<strlen(s1[2]);c++)
for(d=0;d<strlen(s1[3]);d++)
for(e=0;e<strlen(s1[4]);e++)
for(f=0;f<strlen(s1[5]);f++)
for(g=0;g<strlen(s1[6]);g++)
for(h=0;h<strlen(s1[7]);h++)
for(i=0;i<strlen(s1[8]);i++)
for(j=0;j<strlen(s1[9]);j++)
for(k=0;k<strlen(s1[10]);k++)
for(l=0;l<strlen(s1[11]);l++)
for(m=0;m<strlen(s1[12]);m++)
for(n=0;n<strlen(s1[13]);n++)
printf("%c %c %c %c %c %c %c %c %c %c %c %c %c %c\n",s1[0][a],s1[1][b],s1[2][c],s1[3][d],s1[4][e],s1[5][f],s1[6][g],s1[7][h],s1[8][i],s1[9][j],s1[10][k],s1[11][l],s1[12][m],s1[13][n]);
}//用1楼的方法。^_^

WizardOz 2008-12-09
  • 打赏
  • 举报
回复
帮你写了一个简单的例子
三种情况分别用三个字符的01表示
存在可能的位用1否则用0。
代码如下:


#include <stdio.h>

char* tem = "101"
"111"
"001"
"010"
"101"
"111"
"001"
"010"
"010"
"101"
"111"
"001"
"010"
"010";


char buf[15];

void func(int index,char* arr){
if(14 == index){
printf("%s\n",buf);
return;
}

int i;

for(i=0;i<3;++i){
if('1' == arr[index*3+i]){
buf[index] = i + '1';

func(index+1,arr);
}
}
}

int main(int argc,char** argv){
func(0,tem);

return 0;
}

xqls_xqls 2008-12-09
  • 打赏
  • 举报
回复
LZ试一下回溯法
goziem 2008-12-09
  • 打赏
  • 举报
回复
你能帮我写个源代码么 我想学习一下
  • 打赏
  • 举报
回复
没什么好办法,对复杂度没什么要求就按1楼说的那样呗
WizardOz 2008-12-09
  • 打赏
  • 举报
回复
14重循环

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧