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