c语言分球
『壹』 c语言保龄球分数计算系统
这么麻烦的题目,你给的分数太少了, 哈哈, 你要是追加50以上分 我就写。 这系统做出来都能当成品了,我说的没错吧。
『贰』 C语言的代码,球解释
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 4 //标签个数
#define N 3 //标签位数
//定义单链队列结构体
typedef struct QNode{
char *qelem;
struct QNode *next;
}QNode,*QueuePtr;//定义了一个结点数据类型QNode和一个指针数据类型QueuePtr(指向QNode)
typedef struct
QueuePtr front;//头指针,指向队列头结点
QueuePtr rear;//尾指针,指向队列尾结点
}LinkQueue;//定义了一个链队列数据类型LinkQueue
//初始化队列
void InitQueue(LinkQueue *Q){
(*Q).front=(*Q).rear=(QueuePtr)malloc(sizeof(QNode)+N+1); //队列的头尾指针指向同一个一个新分配的结点,这个结点的大小是在QNode(32位系统上8个字节)
//的基础上再分配N+1个字节,可以将这个队列理解成贪吃蛇,这个结点是蛇头
//和蛇尾最初指向的位置
(*Q).front->next=NULL; //头指针指向的结点的next指针置为NULL
}
//入队
void EnQueue(LinkQueue *Q,char *elem){
QueuePtr p=(QueuePtr)malloc(sizeof(QNode)+N+1); //新分配一个结点
p->qelem=(char *)p+sizeof(QNode); //qelem指向的位置是QNode后面
strcpy(p->qelem,elem); //将传入的字符串elem拷贝到指针p->qulem指向的位置,即P结点中QNode后面的N+1个字节内
p->next=NULL; //新结点的next指针置为NULL
(*Q).rear->next=p; //将p结点放到队列的尾指针rear指向的结点之后
(*Q).rear=p; //移动尾结点指针指向新插入队列的结点
/*
入队列就是蛇吃了一块之后在蛇尾长出来,蛇尾指针指向这个新长出来的位置
example:
插入前
------------------------
|A|B |C |N |.....|N |
-|----------------|-----
|________________|__________________________Q->front指向的位置即蛇头
|__________________________Q->rear指向的位置即蛇尾
插入后
------------------------
|A|B |C |N |.....|N | P
-|--------------------|--
|____________________|_______________________Q->front指向的位置即蛇头
|________________________Q->rear指向的位置即新的蛇尾
*/
}
//出队
QNode* DeQueue(LinkQueue *Q){
QueuePtr p;
p=(*Q).front->next; //取出Q->front指向的下一个结点,即蛇头之后的第一个吃进去的结点P
(*Q).front->next=p->next; //将第一个结点指向的下一个结点赋给蛇头结点Q->front来指向,即蛇头此时指向之前的那个第二结点
p->next=NULL; //出队列的结点单独一个,不再指向之前的第二结点了,所以置为NULL
return(p); //将出列的结点返回
/*
出队列就是蛇吐出蛇头之下的第一个结点也就是第一个吃进去的结点
example:
插入前
------------------------
|A|B |C |N |.....|N |
-|----------------|-----
|________________|__________________________Q->front指向的位置即蛇头
|__________________________Q->rear指向的位置即蛇尾
------------------------
|A|C |N |N |.....|N |
-|----------------|-----
|________________|__________________________Q->front指向的位置即蛇头
|__________________________Q->rear指向的位置即蛇尾
*/
}
//判断队列是否为空
int IsEmpty(LinkQueue Q){
if(Q.front->next==NULL) return(1);//队列为空,返回1
else return(0);
}
//前缀检索函数
int Prefix(char *q1,char *q2){
int flag=0;
for(;*q1!='\0';){
if(*q1==*q2) {q1++;q2++;}
else {flag=1;break;}
}
if(flag==0) return(1);//q1是q2的前缀
else return(0);
}
//打印队列的当前值
void PrintQueue(LinkQueue *Q){
//QueuePtr p=(QueuePtr)malloc(sizeof(QNode)+N+1);
QueuePtr p; //原句已经注释,不需要再申请新的结点空间,只需要一个指针指向已经存在的结点即可
p=(*Q).front->next; //此处如果上句不该,那么内存就泄漏了,只是将之前头结点指向的结点的地址赋给P
printf("Q=< ");
for(;p!=NULL;p=p->next){ //循环打印所有结点的数据
printf("%s ",p->qelem);
}
printf(">\n");
}
void main(){
LinkQueue Q; //声明队列
InitQueue(&Q); //初始化队列
char *a="0";
char *b="1";
EnQueue(&Q,a); //a入队列
EnQueue(&Q,b); //b入队列
while(!IsEmpty(Q)){ //判断队列是否为空
PrintQueue(&Q); //不为空则打印队列
//pointer指向标签ID组成的字符串:
//这里的标签ID个数、位数要分别与宏定义中的M、N保持一致。
char *pointer="000,001,101,110";
int count=0;
int i=0;
printf("发送请求%s\n",Q.front->next->qelem);
for(;i<M;i++,pointer+=(N+1)*sizeof(char)){
if(Prefix(Q. front->next->qelem,pointer)) count++;
}
QNode *pp=DeQueue(&Q);
printf("Update Q:");
PrintQueue(&Q);
char s[N+1];
strcpy(s,pp->qelem);
printf("响应的标签数count=%d\n",count);
if(count==0) {printf("没有标签响应\n");printf("\n");}
else if(count>=2){
EnQueue(&Q,strcat(pp->qelem,"0"));
EnQueue(&Q,strcat(s,"1"));
printf("冲突,重置Q:");
PrintQueue(&Q);
printf("\n");
}
else {printf("读标签\n");printf("\n");}
}
}
因为刚好在学数据结构,所以帮你注释一下吧,但是看到后面实在是写不下去了,这代码看得让人太蛋疼了,好的程序让人看的心情愉悦,但是这个程序让人心情看了不爽
『叁』 C语言 乒乓球21分制和11分制
请问你是要问什么~~???
『肆』 C语言求球的表面积和体积
1 相关数学公式
球体表面积公式:
S=4πr²=πD²
球体体积公式:
#include<stdio.h>
intmain()
{
doubler,v,s;
#definePI3.1415927//定义π值,根据需要确定精度。
scanf("%lf",&r);//输入半径。
s=4*PI*r*r;
v=4*PI*r*r*r/3;//计算表面积和体积
printf("表面积为%lf,体积为%lf
",s,v);//输出结果。
return0;
}
4 注意事项:
1) π值定义影响结果,需要根据精度需求设置π值。
2) 定义类型为double时,输入必须使用%lf,输出推荐使用%lf。
3)计算体积时不可以写作4/3*PI*r*r*r, 如果这样,开始的4/3会按照整型计算,导致结果错误。 可以写错4.0/3*PI*r*r*r。
『伍』 篮球c语言编写 在线等
一个小时左右即可完成
『陆』 c语言程序设计保龄球计分系统 保龄球记分系统详细要求 一、提供给用
数据结构:
结构类型的层次结构:
struct student{ /* 学生信息结构 */
char no[9]; /* 学号 */
char name[9]; /* 姓名 */
struct date birthday; /* 出生日期 */
int score; /* 保龄球得分 */
};
为减少参数传递,程序中用到的学生结构体数组可以定义为一个全局变量:
struct student stu[20];
保龄球计分规则分析:(如不清楚,可以自己查找相关规则)
(1) 保龄球一场共10局,每一句最多打两球,至少打一球。
(2) 每一局共有10个瓶子,击倒一个瓶子得1分。若第1局到第9局的第一个球击倒10个
瓶子(全倒),则跳入下一局,不需要打第2个球。
(3) 若第10局的第1个球击倒10个瓶子,或者第10局的2个球加起来击倒10个瓶子(补
中),则第10局可以打第3个球。
(4) 保龄球10局最少打11个球,最多打21个球。
(5) 计分方式若该局中第1球击倒10个瓶子,则本局分数加计下局的两球的分数;若一局
中第1球加第2球共击倒10个球则本局分数会加计下局第1球的分数;若一局2球没
有击倒10个瓶子,该局只计击倒瓶子的分数。
【程序设计的开发环境】
VC++6.0,在内存中的各种操作可以采用一维数组方式或是指针方式。
附1:对学生课程设计两周的纪律及提交内容的要求:
(1) 规定上机的时间内不得无故缺勤,有事需要向指导老师书面请假;
(2) 上机时禁止玩游戏,屡教不改者,实习成绩可为不及格;
(3) 每人手头准备一至两本C/C++的有关工具书,上机前作好充分的准备,包括事先写好
主要算法的程序代码以保证充分利用上机的时间调试程序;
(4) 同组可以讨论思路,但是程序要自己完成,不可抄袭,若完全抄袭别人的,实习成绩
可为不及格;
(5) 实习的最后阶段认真完成实习报告,电子文档,统一用A4纸打印,封面正反打印,
在左侧面装订,报告内容不得少于15页。程序设计报告的首页指导单位处,填上:计
算机学院软件工程系
(6) 每个学生最后提交的材料:
① 程序设计报告的打印件,装订好;
② 压缩文件一个,起名为:程序设计_学号.rar(如:程序设计_B07030127.rar)。
注,该压缩文件中包含下列几个文件:
? 程序设计报告封面文档(起名为:程序设计封面_学号.doc)
? 程序设计报告的电子文档(起名为:程序设计报告_学号.doc)
? 源程序文件(起名为:程序设计_学号.cpp)
? 原始数据文件(如:stud.dat)
? 编译链接后得到的可执行文件(起名为:程序设计_学号.exe)
(7)请同学独立完成报告,若发现两份报告一模一样,则两人都按不及格论处。
附2:本班课程设计上机安排:
上机地点:见通知
附3:成绩的评定
根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。等级为:优秀、良好、中等、及格、不及格。
『柒』 求C语言代码解释(保龄球记分程序)
#include <stdio.h> //包含基本输入输出头文件
#define N 13 //宏定义13为N(N就是数字)
struct { int n: /* 一轮内滚球次数 */
int f; /* 第一轮击倒柱数 */
int s; /* 第二次击倒柱数 */
int score; /* 本轮得分 */
int total; /* 至本轮累计总分 */
int m; /* 完成本轮得分计算, 还需要滚球次数 */
} s[N];//结构体
int ok = 0; /* 已完成完整计算的轮次数 */
int ball(int i, int n, int max) /* 完成一次滚//定义函数球, 输入正确击倒柱数 */
{ if (i<= 10) //如果 i小于等于 10
printf("输入第%d轮的第%d次滚球击倒柱数"), (<=%d)//输出\n",i,n,max);
else //否则
printf("输入附加的第%d次滚球击倒柱数"),(<=%d)//输出\n",c++,max);
scanf("%d", &d); 获得输入
if (d>=0 && d<=max) break; 如果 d大于等于0并且d小于等于max 中断
printf("不合理的击倒柱数, 请重新输入, \n"); //输出
}
if ( OK< c-1) 如果ok小于 c-1
{ /* 对以前未完成计算的轮次分别计算得分与累计总分 */
for (j = ok+1; j<i/j<=i-1; j++) j初始化为ok+1 每次循环加一,当j小于...错误
{a[j].scre+=d; a[j].scre=a[j].scre+d
if (--a[j].m==0) [j].m 减1 如果[j].m等于0
那么
{//错误
a[j]. total = (j>i?a[j-1].total(:0/)j==1?0;a[j-1].total)+a[j].score;ok=j/ok+1;}
a[j]. total =
}
}
return d; 返回d
}
main0
{int i,/*轮次 */ first.second k;
for(i=1; ok<10;i++)
{ /*处理第一次滚球 */
a[i].score = a[i].f=first = ball(i,1,10);
if (first==10) a[i].m=2;
a[i].n=1;
if (first<10 && (i <=10 || i==11 && ok<10))
{ /*处理第二次滚球 */
a[i].score+=a[i]. s=score=ball(i,2,10-first);
if(first+second==10) a[i].m=1;
a[i].n++/a[i].n=a[i].n+1/a[i].n=2 //错误
}
if (i <=10 && first <10 && first+second < 10)
{ a[i].total = (i>1 ? a[i-1].total:0)+a[i].score;
ok=1;
}
printf("各轮第一次得分");
for(k=1; k<=i; k++) printf("%5d",a[k].f);
printf("\n各轮第二次得分");
for(k=1; k<= i; k++)
if (a[k].n<2) printf(" /");else printf("%5d", a[k].s);
printf("\n 各轮得分 ");
for (k=1; k<= ok; k++) printf("%5d", a[k].score);
printf("\n 累计总分 ");
for(k=1; k <= ok; k++) printf("%5d", a[k].total);
printf("\n\n");
}
}
『捌』 C语言实现所有可能方案采球
#include<stdio.h>
intmain()
{
inti,j,k;
intnum=0;
printf("theresultis: ");
printf("timered_ballwhite_ballblack_ball ");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<7;k++)
{
if(i+j+k==8)
{
printf("%3d %4d %5d %6d ",++num,i,j,k);
}
}
return0;
}
『玖』 C语言 球分析
输出:DEF
strcpy(string1,string2);
//这一句的作用是将strinng2的值拷贝到string1的存储空间中,所以这一句执行后,string1为"ABCDEF"
printf("%s\n",string1+3);
//%s这个格式控制符的作用是,输出以string1+3为首地址,'\0'为终止的字符串,
string1+3为以string1为首地址偏移3个单位的地址,也就是字符'D'的地址,
所以输出的是以字符'D'的地址为首地址,'\0'为终止的字符串
所以输出:DEF