c语言指针飞运用

mianzhouhu 2010-06-05 05:07:02
我要写一个程序,就是打乒乓球。A和B打球,A赢一个给加一分,B赢一个给B加一分。最后谁先得十一分谁赢。如果打到了十平,那么继续使最大的十一加一,即谁先得十二谁赢,以此类推...最后是打五局,如果谁先得3局谁就赢。(就是一个乒乓球球规则的代码)哪位高手帮帮忙,你和你的家人朋友一定幸福一辈子。
...全文
311 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
njhsliliangx 2010-06-06
  • 打赏
  • 举报
回复
很好,我也顶下。
xiaokang007 2010-06-06
  • 打赏
  • 举报
回复
8楼 19楼都 不错 ,支持
mianzhouhu 2010-06-06
  • 打赏
  • 举报
回复
说实话
你们写的那些对我们来说都太难了,根本没学过。不过认真琢磨应该看得懂
happytang 2010-06-06
  • 打赏
  • 举报
回复
sorry,我也只是练手,好久没写代码了;看看一次成型的能力
[Quote=引用 24 楼 yzx714 的回复:]

引用 19 楼 happytang 的回复:

很简单的逻辑,没有纠错检查,输出信息格式请自己修改
C/C++ code
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define MATCH_NUM 5
#define A_WIN 0
#define B_WIN 1……
[/Quote]
mianzhouhu 2010-06-06
  • 打赏
  • 举报
回复
先谢谢各位的帮助
因为我实在是没有什么基础,也不是专学这个的,只为了过二级。你们给的信息我会认真分析的,希望能把我的C语言提高。谢谢
jvs 2010-06-06
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int i,j; /*定义每一局A,B的分数,*/
int Ps=1; /*比赛的盘数*/
int score_A,score_B;
printf("请输入第一局比赛A,B的分数:\n");
scanf("%d %d",i,j); /*给出第一局A,B的最终分数*/
while(i>j)
{score_A++;printf("%d% d",i,j);} /*给A加一分,输出A,B的比分*/
while(i<j)
{score_B++;printf("%d %d",i,j);} /*给B加一分,输出A,B的比分*/
Ps++;
}
jvs 2010-06-06
  • 打赏
  • 举报
回复
楼主,我强烈建议你写程序的时候用规范的缩进式写,比如说
#include <stdio.h>
void main()
{
int i,j; /*定义每一局A,B的分数,*/
int Ps=1; /*比赛的盘数*/
int score_A,score_B;
printf("请输入第一局比赛A,B的分数:\n");
scanf("%d %d",i,j); /*给出第一局A,B的最终分数*/
while(i>j)
{score_A++;printf("%d% d",i,j);} /*给A加一分,输出A,B的比分*/
while(i<j)
{score_B++;printf("%d %d",i,j);} /*给B加一分,输出A,B的比分*/
Ps++;
}
你完全可以把你程序中while后的语句进行缩进,这样看着会很有条理
yzx714 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 happytang 的回复:]

很简单的逻辑,没有纠错检查,输出信息格式请自己修改
C/C++ code
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define MATCH_NUM 5
#define A_WIN 0
#define B_WIN 1
#define MATCH_POINT 11

typedef……
[/Quote]直接给代码是害人啊
elegant87 2010-06-06
  • 打赏
  • 举报
回复
19#的程序很好
haierpro 2010-06-06
  • 打赏
  • 举报
回复


int main()
{
while (比赛是否结束())
{
while (一局是否结束())
{
取得得分方();
为得分方加分();
输出得分信息();
}
}
输出最终结果();
}

bool 比赛是否结束()
{
if (某一方赢了3局)
返回true;
else
返回false;
}


bool 一局是否结束()
{
else if (有一方得分不小于11 并且 双方得分之差大于1)
返回true;
else
返回false;
}

happytang 2010-06-05
  • 打赏
  • 举报
回复
很简单的逻辑,没有纠错检查,输出信息格式请自己修改
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define MATCH_NUM 5
#define A_WIN 0
#define B_WIN 1
#define MATCH_POINT 11

typedef struct tagSetRecord
{
int result; /*本盘的结局0---A win 1------B win*/
int score_a; /*本盘选手A的分数*/
int score_b; /*本盘选手B的分数*/
}SetRecord;
typedef struct tagGameRecord
{
int result; /*比赛的结局0---A win 1------B win*/
SetRecord sets[MATCH_NUM+1]; /*每局比赛记录信息*/
}GameRecord;


GameRecord g_stRecord; /*全局记录信息*/
int g_ulSet = 0; /*打的局数*/
int g_ulSet_awin = 0; /*a赢的局数*/
int g_ulSet_bwin = 0; /*b赢的局数*/

void init_game(void)
{
int i;
g_ulSet = 0;
memset(&g_stRecord,0,sizeof(GameRecord));
g_stRecord.result = 0xffffffff;
for (i=0;i<=MATCH_NUM;i++)
{
g_stRecord.sets[i].result = 0xffffffff;
}
return;
}
void game_set(char match)
{
g_ulSet++;
while(g_stRecord.sets[g_ulSet].result!=A_WIN && g_stRecord.sets[g_ulSet].result!=B_WIN)
{
printf("请输入比分(a or b):");
scanf("%c",&match);
fflush(stdin);
switch (match)
{
case 'a':
g_stRecord.sets[g_ulSet].score_a++;
break;
case 'b':
g_stRecord.sets[g_ulSet].score_b++;
break;
default:
break;
}
if ((g_stRecord.sets[g_ulSet].score_a==MATCH_POINT)
&&(2<=(g_stRecord.sets[g_ulSet].score_a-g_stRecord.sets[g_ulSet].score_b)))
{
g_stRecord.sets[g_ulSet].result = A_WIN;
g_ulSet_awin++;
}
else if ((g_stRecord.sets[g_ulSet].score_b==MATCH_POINT)
&&(2<=(g_stRecord.sets[g_ulSet].score_b-g_stRecord.sets[g_ulSet].score_a)))
{
g_stRecord.sets[g_ulSet].result = B_WIN;
g_ulSet_bwin++;
}
else if((10<=g_stRecord.sets[g_ulSet].score_a)
&&(10<=g_stRecord.sets[g_ulSet].score_b))
{
if (2<=(g_stRecord.sets[g_ulSet].score_a-g_stRecord.sets[g_ulSet].score_b))
{
g_stRecord.sets[g_ulSet].result = A_WIN;
g_ulSet_awin++;
}
else if (2<=(g_stRecord.sets[g_ulSet].score_b-g_stRecord.sets[g_ulSet].score_a))
{
g_stRecord.sets[g_ulSet].result = B_WIN;
g_ulSet_bwin++;
}
}
}
return;
}

void display_result(GameRecord *pstRecord)
{
int i;
printf("\n\r the match result is %d",pstRecord->result);
for (i=1;i<=g_ulSet;i++)
{
printf("\n\r the set result is %d",g_stRecord.sets[i].result);
printf("\n\r the a score is %d",g_stRecord.sets[i].score_a);
printf("\n\r the b score is %d",g_stRecord.sets[i].score_b);
}
return;
}
void main()
{
char match = 0;
init_game();
while (g_stRecord.result!=A_WIN&&g_stRecord.result!=B_WIN)
{
game_set(match);
if(g_ulSet_awin==3)
g_stRecord.result = A_WIN;
else if(g_ulSet_bwin==3)
g_stRecord.result = B_WIN;
}
display_result(&g_stRecord);
system("pause");
}
xinshou2595 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 mianzhouhu 的回复:]
#include <stdio.h>
void main()
{
int i,j; /*定义每一局A,B的分数,*/
int Ps=1; /*比赛的盘数*/
int score_A,score_B;
printf("请输入第一局比赛A,B的分数:\n");
scanf("%d %d",i,j); /*给出第一局A,B的最终分数*/
while(i>j)
……
[/Quote]
你去看看书吧~~ 这个代码。。。 要不就建议你了解下8楼的思想吧~
mianzhouhu 2010-06-05
  • 打赏
  • 举报
回复
老师要我们写啊,现在我们一个班基本上没人会写。有的干脆就叫别人代工了。老师其实什么都没教会我们,哎!~
yzx714 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 mianzhouhu 的回复:]

不怕你打击啊
我刚接触C,老师叫我们写代码啊
我现在也没办法啊
[/Quote]你也不用一开始就写这么复杂的代码啊(对于新手来说,我觉得比较复杂了)为什么不先随便写点斐波那契数列这些老掉牙的练习呢?
alonewulf 2010-06-05
  • 打赏
  • 举报
回复
这么厉害,呵呵
mianzhouhu 2010-06-05
  • 打赏
  • 举报
回复
不怕你打击啊
我刚接触C,老师叫我们写代码啊
我现在也没办法啊
yzx714 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 mianzhouhu 的回复:]

#include <stdio.h>
void main()
{
int i,j; /*定义每一局A,B的分数,*/
int Ps=1; /*比赛的盘数*/
int score_A,……
[/Quote]怎么说呢?楼主我本来不应该打击你的积极性,但我只能说建议你看下书再写代码了,OK?
mianzhouhu 2010-06-05
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int i,j; /*定义每一局A,B的分数,*/
int Ps=1; /*比赛的盘数*/
int score_A,score_B;
printf("请输入第一局比赛A,B的分数:\n");
scanf("%d %d",i,j); /*给出第一局A,B的最终分数*/
while(i>j)
{score_A++;printf("%d% d",i,j);} /*给A加一分,输出A,B的比分*/
while(i<j)
{score_B++;printf("%d %d",i,j);} /*给B加一分,输出A,B的比分*/
Ps++;
}


帮我看看什么错了,我用vs2008写的,生成时不报错,但当我启动时就提示那个j没有初始化。谁能解释一下
mianzhouhu 2010-06-05
  • 打赏
  • 举报
回复
谢谢了
yzx714 2010-06-05
  • 打赏
  • 举报
回复
void init_game(struct Game * p_game)
{
int s;
p_game->result = -1; /*表示还没有胜者*/
p_game->set_left=NR_SETS; /*一盘都还没有打*/
for(s = 0; s < NR_SETS; s++) {
p_game->sets[s]->result_set = -1;
p_game->sets[s]->win_point = 11;
p_game->sets[s]->cur_score_a = 0;
p_game->sets[s]->cur_score_b = 0;
}

}

示范下初始化函数,楼主看下了可以自己动手写剩下的
加载更多回复(9)

69,371

社区成员

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

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