當前位置:首頁 » 編程軟體 » 一個有趣小游戲的程序編譯題

一個有趣小游戲的程序編譯題

發布時間: 2023-06-04 18:32:13

① C++編程問題:編一個迷宮游戲程序

在書找的,只打了個結構體(太多了),我利用stack做的!希望能對你有所幫助!程序如下:
typedef struct{
int ord;//通道塊的路徑上的序號
PosType seat;//通道塊在迷宮的坐標位置
int di;//從此通道塊走向下一個通道塊的方向
}SelemType;//stack的元素類型
Status MazePath(MazeType maze,PosType start,PosType end){
//若迷宮 maze中存在從入口start到出口end的通道,所以,求得一條存放在stack中
//(從stack底到頂)並返回TRUE,否則返回FALSE
InitStack(S);
curpos=start;//設置當前的位置為入口位置
curstep=1;//探索第一步
do{
if(Pass(curpos)){//當前位置可以通過,即是未曾走過的通道塊
FootPrint(curpos);//留下足跡
e=(curstep,curpos,1);
Push(s,e);//加入路徑
if(curpos==end)
return(TRUE);//到達終點
curpos=NextPos(curpos,1);//下一位置是當前位置的東部
curstep++;//探索下一步
}
else{//當前位置不能通過
if(!StackEmpty(S)){
Pop(S,e);
while(e.di==4&&!StackEmpty(S)){
MarkPrint(e.seat);//留下不能通過的標記,並退回一步
Pop(S,e);
}
if(e.di<4){
e.di++;
Push(s.e);//換下一個方向探索
curpos=NextPos(e.seat e.di);//設定當前位置是該新方向上的相鄰塊
}//if
}//if
}//else
}while(!StackEmpty(S));
return(FALSE);
}//MazePath

② 求解編程題目<猜數字>C++/C

我覺得解決這個問題有幾點要注意:實現方面:生成隨機數、防止待猜測的數中重復數字
異常方面:處理輸入不為四位的情況。
我練習輸入輸出、類型轉換的時候做過一個類似功能的,但是有些地方不完善。
guess0.cpp
// Guess0.cpp : Defines the entry point for the console application.
//

//最後一次正確時,運行不正確

//猜數字
//產生的隨機數每次都是1740,而給result賦值時每次都是1242。
//前者原因:rand的問題,該方法需要與srand一起使用;後者是類型轉化過程出錯

//可以考慮加上時間,按照時間長短給予不同提示。

#include "StdAfx.h"
#include "head.h"

#include <string.h>
#include <stdlib.h>
#include <afx.h>

#define ARRAY_SIZE 4 //宏,定義要猜的數字位數,默認為4,可以修改
#define CHANCE 10 //可以猜測的次數

char result[ARRAY_SIZE+1]={0};//要猜的數字數組;多定義一位,用於存儲結束符
int counter = 0;//記錄次數,不得大於CHANCE

int main(int argc, char* argv[])
{
char ans;
do{
process();
printf("是否繼續?(是,輸入「y」;否輸入「n」)");
scanf("%c",&ans);
fflush(stdin);
}while(ans=='y'||ans=='Y');
return 0;
}

void myRand()//生成一個4位數字
{//應該在初始化中首次調用此方法
//把值傳給result時容易出錯,注意選擇方式
//先 生成隨機數,截取其各位數字,當有重復時重新生成。
memset(result,0,ARRAY_SIZE);
result[ARRAY_SIZE] = 0;
int i,j;
int nums[ARRAY_SIZE];//中間數組
memset(nums,0,ARRAY_SIZE);

char temp[ARRAY_SIZE][1];//注意!temp[]以及它以後的存儲區域都是連續的,不能用temp首地址輸出。
for(i=0;i<ARRAY_SIZE;i++)
{
memset(temp[i],'\0',1);
}

srand((unsigned)time(NULL));//使從當前時刻開始生成的隨機數不存在重復
//若無此語句,程序每次執行,產生的隨機數是按照順序來的,依次為1740,9482。。。
for (i=0;i<ARRAY_SIZE;i++)
{
nums[i] = rand();
nums[i] = nums[i]%10;

for (j=0;j<i;j++) //消除重復數字
{ //新生成的數字要和前面所有數字比較
while(nums[i]==nums[j]) //遇到重復數字時,重新生成;
{ //此處不可用if,因為重新生成的數字也需要比較一次
nums[i] = rand();
nums[i] = nums[i]%10;
j=0; //一旦重新生成就重新開始比較,計數置0
}
}
sprintf(temp[i],"%d",nums[i]);
result[i] = temp[i][0];//把處理好的數字賦給result
}

result[ARRAY_SIZE] = '0'; //結束符
}

void process()//將獲得的數字與已生成數字比較
{
//在菜單中說明
printf("歡迎進入本游戲。\n");
printf("程序將隨機生成一個不含重復數字的四位數,然後請您猜測這個四位數。\n");
printf("在猜測的過程中我講給您適當提示,其中\n");
printf("A代表結果中有且位置正確的數字,B代表結果中有但位置不正確的數字。\n");
printf("在一次游戲結束後,您可以查看結果或者重新開始。\n");

/*
CString inpt;//下面的GetAt調用出現問題,給inpt賦值可以解決
//但是賦值比如為0的話,又會提示長度不對;賦值為0000的話會提示重復數字
//明明在讀入的時候,初始賦值已經改變了。
//調試發現雖然inpt已經獲得了輸入,但是其長度卻未改變,應該是接受輸入的過程出錯
//根本原因在於用scanf讀入CString對象的值。雖然能讀入,但那隻是一個臨時值,隨時
//會發生「不可預知」的錯誤。
//所以,改用字元數組或者字元指針實現這一問題
*/
/* //使用字元指針
char *inpt;//緩存輸入
inpt = (char *)malloc(ARRAY_SIZE+1);
……
free(inpt);
*/
char inpt[]={0,0,0,'-',0};
char ans=NULL;
do
{
myRand();
printf("請輸入一個不含重復數字的%d位數(多於四位將只處理前四位):\n", ARRAY_SIZE);

int count1 = 0, //結果中含該數字、位置正確,即A的值
count2 = 0;//結果中含該數字、位置不正確,即B的值
while(counter<CHANCE)
{
scanf("%s",inpt);
fflush(stdin);

while (judge_length(inpt)||judge_repeat(inpt))
{
printf("請重新輸入:\n");
scanf("%s",inpt);
fflush(stdin);
}

int i,j;
count1 = 0;
count2 = 0;
for (i=0;i<ARRAY_SIZE;i++)
{
for (j=0;j<ARRAY_SIZE;j++)
{
if (inpt[j]==result[i])
{
if (i!=j)
count2++;
else
count1++;
}
}
}

if (count1==ARRAY_SIZE)
{
printf("恭喜您,猜對了!\n");
break;
}
else
{
printf("%s %d%c%d%c\n",inpt, count1, 'A', count2, 'B');
}
counter++;
}
if (counter==CHANCE)
{
printf("對不起,您已經用完了10次機會!您可以查看結果或者重新開始。");
printf("您可以輸入0來查看正確結果。\n");
char choice;
scanf("%c",&choice);
if (choice=='0')
{
printf("正確結果是%s\n",result);
}
}
counter=0;

printf("繼續?(y/n)\n");
scanf("%c",&ans);
fflush(stdin);
} while (ans=='y'||ans=='Y');
}

bool judge_repeat(char inpt[])//判斷有無重復數字
{
int i,j;
for(i=0;i<ARRAY_SIZE;i++)
{
for (j=0;j<i;j++)
{
if (inpt[i]==inpt[j])
{
printf("您的輸入含有重復數字。\n");
return true;
}
}
}
return false;
}

bool judge_length(char inpt[])//判斷輸入數字的位數
{
if (inpt[ARRAY_SIZE-1]=='-')//如果C/C++數組名可以調用類似length的
{ //函數,那樣實現比較理想
//在聲明inpt多加一位,加上條件inpt[ARRAY_SIZE]!=(指定字元),應該可以處理超出的輸入
printf("您的輸入長度不對。\n");
printf("inpt[ARRAY_SIZE-1] = %c\n",inpt[ARRAY_SIZE-1]);
printf("inpt[ARRAY_SIZE] = %c",inpt[ARRAY_SIZE]);
return true;
}
return false;
}

guess0.h
#include "StdAfx.h"
#include <afx.h>

void process();
bool judge_repeat(char inp[]);
bool judge_length(char inp[]);

c語言編程題(設計一個猜數字的小游戲)滿意再加200分!!!!

我看了樓上幾個的答案,功能均不是很完善,所以我決定來試一試
,應該是今天最遲是明天可以貼出來了.希望不要那麼快就結貼....

哈哈.....經過了幾個小時的奮戰.. 終於搞出來了!!!!!!!!!!!!!!!!!!! 你題目要求的功能幾乎全部實現.希望你認真調試一亂譽下!!!!!!

調試環境.vc++ 6.0. 支持中文編譯的編譯器都可以調試運行的.

注意事項:如果編譯器是不支持中文顯示的就會出現亂碼的,所以最好是在支持中文顯示的編譯器上面編譯運行.例如:vc++ 6.0以上的版本!!!!

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<windows.h>
#include<string.h>

#define MAX 5

struct record
{
char name[10];
int sorce;
}rec[MAX],Rec;

int n; //記錄行數
int num; //輸入的數字

void display(); //開始界面
void xuanze(); //選擇函數
void sys(int a); //操作函數
void newgame(); //新游戲
void vdisplay(); //瀏覽記錄界面
void vxuanze(); //瀏覽選擇函數
void help(); //幫助說明
void vsys(int a); //瀏覽枯薯操作函數
void viewsorce(); //按記錄的順序瀏覽
void viewname(); //按記錄的姓名瀏覽
void viewsname(); //按記錄和姓名瀏覽
void delrec(); //刪除記錄
int qushu(); //取數函數
int tishi(int aa); //提示函數
void addrec(int a); //判斷並且增加記錄
void recread(); //讀取記錄文件
void recwrite(); //寫入記錄文件

///////////////////////////////////////////////////////////////////////////////////////////////
////////////////////函數定義//////////////

void display() //開始界面
{
system("cls"); //清屏

printf(" ============================================\n");
printf(" ================數字競猜游戲================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 新游戲\n");
printf("\n");
printf(" 2: 瀏覽記錄\n");
printf("\n");
printf(" 3: 幫助說明\n");
printf("\n");
printf(" 4: 清除記錄\n");
printf("\n");
printf(" 5: 退出\n");
printf("\n");
printf(" ============================================\n");
xuanze();
}
void xuanze() //選擇函數
{
int a;
printf("請輸入你所選擇的操作數:\n");
scanf("%d",&a);
if(a==1||a==2||a==3||a==4||a==5)
{
sys(a);
}//選擇相應沒陪者的操作數執行函數
else
{
printf("錯誤的操作數!\n");;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}
void sys(int a) //操作函數
{
switch(a)
{
case 1:newgame();break;
case 2:vdisplay();break;
case 3:help();break;
case 4:delrec();break;
case 5:exit(0);break; //退出
}
}
void newgame() //新游戲
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 姓名: %s 分數 %d\n",i+1,rec[i].name,rec[i].sorce);
}

printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();//////////////上面列出記錄文件中的記錄

/////////////////////////////////////////////////////////////////////////////
int snum; //輸入的數字
int sn=10; //機會次數
num=qushu(); //取數
L: system("cls"); //清屏

printf(" ============================================\n");
printf(" ================數字競猜游戲================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 顯示答案\n");
printf(" ============================================\n");
printf("\n");
printf("請輸入你猜想的四個數字(格式為9999樣式)你還有 %d 次機會:\n",sn);
scanf("%d",&snum);
if(snum<10000 && snum>1000 || snum==1)
{
if(snum==1)
{
printf("你放棄了本局游戲!該四個數字是: %d\n",num);
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
else
{
int flag=tishi(snum);
if(flag!=0 && sn!=0)
{
sn--;
if(sn==0)
{
printf("真是遺憾!十次機會沒有了!沒有關系!下次繼續!\n");
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
printf("請按任意鍵繼續猜...\n");
getchar();
getchar();
goto L;
}
else
{
if(sn!=0)addrec(sn);
else
{
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}
}
}
else
{
printf("錯誤的操作數!\n");;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
goto L;
}
}

void help() //幫助說明
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ==============數字競猜游戲幫助==============\n");
printf(" ============================================\n");
printf("\n");
printf("1.新游戲中,你可以輸入四位數,來競猜系統自動生成的四個數字!,只有十次的機會,\n");
printf(" 每次機會都有相對應的提示,十次的機會利用完了還沒有猜對的話就算失敗!四個數字的\n");
printf(" 相應格式在游戲中會有提示!當成功猜出系統給定的數字時候,就會統計你的成績.當你的\n");
printf(" 成績比記錄文件中的記錄好的時候就會提示你是否把記錄記錄到記錄文件中,當你選擇是\n");
printf(" 的時候就會接著提示你輸入你的名字.再按回車.沒有意外就會提示保存成功!\n");
printf(" 還有要說明的是記錄中的分數是越低就代表成績越好!\n");
printf("2.瀏覽記錄有三種方式!第一種只是列出記錄中的姓名;第二種是列出記錄中的成績次序\n");
printf(" 第三種是姓名跟成績一起列出來!\n");
printf("3.清除記錄就是把記錄文件初始化.即是讓記錄文件為空!\n");
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}

void vdisplay() //瀏覽記錄界面
{
system("cls"); //清屏

printf(" ============================================\n");
printf(" ================數字競猜游戲================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 按記錄的順序瀏覽\n");
printf("\n");
printf(" 2: 按記錄的姓名瀏覽\n");
printf("\n");
printf(" 3: 姓名記錄全部瀏覽\n");
printf("\n");
printf(" 4: 返回上級\n");
printf("\n");
printf(" ============================================\n");
vxuanze();
}
void vxuanze() //瀏覽選擇函數
{
int a;
printf("請輸入你所選擇的操作數:\n");
scanf("%d",&a);
if(a==1||a==2||a==3||a==4)
{
vsys(a);
}//選擇相應的操作數執行函數
else
{
printf("錯誤的操作數!\n");;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
}
void vsys(int a) //瀏覽操作函數
{
switch(a)
{
case 1:viewsorce();break;
case 2:viewname();break;
case 3:viewsname();break;
case 4:display();break; //返回上級
}
}

void viewname() //按記錄的順序瀏覽
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 姓名: %s\n",i+1,rec[i].name);
}

printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
void viewsorce() //按記錄的姓名瀏覽
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 分數 %d\n",i+1,rec[i].sorce);
}

printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
void viewsname() //按姓名和記錄瀏覽
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 姓名: %s 分數 %d\n",i+1,rec[i].name,rec[i].sorce);
}

printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
void delrec() //刪除記錄
{
recread();
for(int i=0;i<MAX;i++)
{
rec[i].sorce=0;
}
recwrite();
printf("刪除成功!\n");
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}

int qushu() //取數函數
{
int a=0;
int i=0;

srand( (unsigned)time( NULL ) ); //隨機數種子設置

while(i==0)
{
i=rand(); //這樣做就是為了增加隨機性
i=i%100;
}

L: for(int j=0;j<i;j++)
{
a=a+rand(); //判斷隨機數是否是四位數 如果不是繼續取數
}
a=(a/i+rand())%10000;
if(a<1000)goto L;

return(a);
}

int tishi(int aa) //提示函數
{
int a,b,c,d;
int af,bf,cf,df;
if(aa==num)
{
printf("恭喜!你猜對了!四個數就是:%d\n",num);
return(0);
}
else
{
a=(num-num%1000)/1000;
b=(num%1000-(num%1000)%100)/100;
c=((num%1000)%100-((num%1000)%100)%10)/10; //獲取默認四個數字
d=((num%1000)%100)%10;

af=(aa-aa%1000)/1000;
bf=(aa%1000-(aa%1000)%100)/100;
cf=((aa%1000)%100-((aa%1000)%100)%10)/10; //獲取輸入的四個數字
df=((aa%1000)%100)%10;

if(af>a)printf("\n第一個數應該比 %d 小一點!\n",af);
if(af==a)printf("恭喜!第一個數字對了!應該是: %d\n",af); //數字比較
if(af<a)printf("第一個數應該比 %d 大一點!\n",af);

if(bf>b)printf("第二個數應該比 %d 小一點!\n",bf);
if(bf==b)printf("恭喜!第二個數字對了!就是: %d\n",bf); //數字比較
if(bf<b)printf("第二個數應該比 %d 大一點!\n",bf);

if(cf>c)printf("第三個數應該比 %d 小一點!\n",cf);
if(cf==c)printf("恭喜!第三個數字對了!就是: %d\n",cf); //數字比較
if(cf<c)printf("第三個數應該比 %d 大一點!\n",cf);

if(df>d)printf("第四個數應該比 %d 小一點!\n",df);
if(df==d)printf("恭喜!第四個數字對了!就是: %d\n",df); //數字比較
if(df<d)printf("第四個數應該比 %d 大一點!\n\n",df);

return(1);
}
}

void addrec(int a) //判斷並且增加記錄
{
char c;
int flag=0; //標志位
a=11-a;
recread();
for(int i=0;i<MAX;i++)
{
if(a<rec[i].sorce || rec[i].sorce==0)
{
if(i==4 || rec[i].sorce==0)
{
printf("\n");
printf("恭喜!你的成績 %d 分已經達到了前五名!\n",a);
printf("確認要保存記錄請按'y',任意鍵返回...!\n");
scanf("%s",&c);
if(c!='y')display();
rec[i+1].sorce=rec[i].sorce; //記錄後移
strcpy(rec[i+1].name,rec[i].name);
printf("請輸入你的名字\n");
scanf("%s",&rec[i].name);
rec[i].sorce=a;
recwrite(); //寫入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
else
{
printf("\n");
printf("恭喜!你的成績 %d 分已經達到了前五名!\n",a);
printf("確認要保存記錄請按'y',任意鍵返回...!\n");
scanf("%s",&c);
if(c!='y')display();
for(int j=i;j<MAX-1;j++)
{
rec[j+1].sorce=rec[j].sorce; //記錄後移
strcpy(rec[j+1].name,rec[j].name);
if(rec[j+2].sorce==0)break;
}
printf("\n");
printf("請輸入你的名字\n");
scanf("%s",&rec[i].name);
rec[i].sorce=a;
recwrite(); //寫入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}
}
if(flag==0)
{
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}

void recread() //讀取記錄文件
{
FILE *fp;
L: fp=fopen("E:\\rec.rec","rb");
if(fp==NULL)
{
recwrite();
goto L; //初始化
}
if(fread(&rec,sizeof(record),MAX,fp)==MAX)
{
}
else
{
printf("文件讀取失敗!");
}
fclose(fp);
}
void recwrite() //寫入記錄文件
{
FILE *fp;
fp=fopen("E:\\rec.rec","wb");
if(fp==NULL)
printf("寫入失敗!\n");
fwrite(rec,sizeof(record),MAX,fp);
fclose(fp);
}

void main()
{
display();
}

////////////////////////////////

④ 貓爪老鼠游戲模擬(c++程序設計)C++題目:貓抓老鼠的模擬 1.問題描述 在一個迷宮內,貓正在追

C++編寫猜數字小游戲#include#include#includevoidmain(){cout>x;for(i=1;iy){if(i==10){cout>x;continue;}elseif(x>x;continue;}elsecout10){cout>z;}else{cout>z;}}while(z=='Y'||z=='y');}

⑤ c語言能寫出什麼樣有意思的小程序

  1. C語言是一門通用計算機編程語言,應用廣泛。

  2. C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲顫銷器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

  3. C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

  4. 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多茄派游少?

程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。

程序源代碼:

main()

{int i,j,k;printf( );for(i=1;i<5;i++)/*以下為三重循環*/for(j=1;j<5;j++)

for (k=1;k<5;k++),{f (i!=ki!=jj!=k) /*確保i、j、k三位互不相同*/printf(%d,%d,%d ,i,j,k); }}

題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高 於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提 成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,羨頌超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?

程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。

程序源代碼:

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf(%ld,i);

bonus1=100000*0.1;bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf(bonus=%d,bonus);

}

6.題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後 的結果滿足如下條件,即是結果。

程序源代碼:

#include math.h

main()

{

long int i,x,y,z;

for (i=1;i<100000;i++)

{ x=sqrt(i+100); /*x為加上100後開方後的結果*/

y=sqrt(i+268); /*y為再加上168後開方後的結果*/

if(x*x==i+100y*y==i+268)/*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/

printf( %ld ,i);

}

}

7.題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。

程序源代碼:

main()

{

int day,month,year,sum,leap;

printf( please input year,month,day );

scanf(%d,%d,%d,year,month,day);

switch(month)/*先計算某月以前月份的總天數*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

defaultrintf(data error);break;

}

sum=sum+day; /*再加上某天的天數*/

if(year%400==0||(year%4==0year%100!=0))/*判斷是不是閏年*/

leap=1;

else

leap=0;

if(leap==1month>2)/*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf(It is the %dth day.,sum); }

8.題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。

程序源代碼:

main()

{

int x,y,z,t;

scanf(%d%d%d,x,y,z);

if (x>y)

/*交換x,y的值*/

if(x>z)

/*交換x,z的值*/

if(y>z)

/*交換z,y的值*/

printf(small to big: %d %d %d ,x,y,z);

}

9.題目:用*號輸出字母C的圖案。

程序分析:可先用<|>*<|>號在紙上寫出字母C,再分行輸出。

程序源代碼:

#include stdio.h

main()

{

printf(Hello C-world! );

printf( **** );

printf( * );

printf( * );

printf( **** );

}

10.題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!

程序分析:字元共有256個。不同字元,圖形不一樣。

程序源代碼:

#include stdio.h

main()

{

char a=176,b=219;

printf(%c%c%c%c%c ,b,a,a,a,b);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,a,a,b,a,a);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,b,a,a,a,b); }

11.題目:輸出9*9口訣。

程序分析:分行與列考慮,共9行9列,i控制行,j控制列。

程序源代碼:

#include stdio.h

main()

{

int i,j,result;

printf( );

for (i=1;i<10;i++)

{ for(j=1;j<10;j++)

{

result=i*j;

printf(%d*%d=%-3d,i,j,result);/*-3d表示左對齊,佔3位*/

}

printf( );/*每一行後換行*/

}

}

12.題目:要求輸出國際象棋棋盤。

程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。

程序源代碼:

#include stdio.h

main()

{

int i,j;

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

if((i+j)%2==0)

printf(%c%c,219,219);

else

printf( );

printf( );

}

}

13.題目:列印樓梯,同時在樓梯上方列印兩個笑臉。

程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。

程序源代碼:

#include stdio.h

main()

{

int i,j;

printf( );/*輸出兩個笑臉*/

for(i=1;i<11;i++)

{

for(j=1;j<=i;j++)

printf(%c%c,219,219);

printf( );

}

⑥ 一道C語言猜數游戲編程題

#include "stdio.h"
#include<time.h>
#include<stdlib.h>
void Guess(int magic, int guess)
{
static int c = 0;
c++;
if (magic == guess)
{
printf("\n你猜對了!\n你一共猜了%d次!", c);
exit(0);
}
if (magic < guess)
{
printf("\n太大了!\n");
}
else
{
printf("\n太小了!\n");
}
}
int main()
{
int m, n, i;
srand((int)time(0));
n=(rand() % 100) + 1;
//printf("n=%d\n",n);
for (i = 0; i < 10; i++) {
printf("請輸入你猜測的數:");
scanf("%d", &m);
Guess(n, m);
}

return 0;
}

⑦ 求C語言編程題源代碼,擲骰子游戲

這是C語言的題?

C語言不支持bool類型。。

我用C++編譯器編譯的

以下是代碼

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

introll_dice(void);
boolplay_game(void);

intmain(){
charc='y';
intwintimes=0,losetimes=0;
while(c=='y'){
if(play_game())
wintimes++;
else
losetimes++;
printf(" Playagain?");
scanf("%c",&c);
//printf("%c ",c);
if(c=='Y')c='y';
}
printf("Wins:%d Losses:%d ",wintimes,losetimes);
return0;
}

introll_dice(){
intret=rand()%6+1;
ret+=rand()%6+1;
returnret;
}

boolplay_game(){
intcurRoundNumber=roll_dice();
intwinNumber;
printf("Yourolled:%d ",curRoundNumber);
if(curRoundNumber==7||curRoundNumber==11){
printf("Youwin! ");
returntrue;
}
if(curRoundNumber==2||curRoundNumber==3||curRoundNumber==12){
printf("Youlose! ");
returnfalse;
}
winNumber=curRoundNumber;
printf("Yourpointis%d ",winNumber);
while(1){
curRoundNumber=roll_dice();
printf("Yourolled:%d ",curRoundNumber);
if(curRoundNumber==winNumber){
printf("Youwin! ");
returntrue;
}
if(curRoundNumber==7){
printf("Youlose! ");
returnfalse;
}
}
}
熱點內容
cs文件編譯python 發布:2025-02-12 14:02:39 瀏覽:530
如何伺服器搬家 發布:2025-02-12 13:58:41 瀏覽:27
轎車什麼配置從哪裡看 發布:2025-02-12 13:48:51 瀏覽:452
編程vlb 發布:2025-02-12 13:33:17 瀏覽:783
電腦出現無法解析伺服器的dns對策 發布:2025-02-12 13:29:12 瀏覽:158
硬碟的存儲空間是以簇為單位 發布:2025-02-12 13:26:06 瀏覽:356
我的帳號密碼是什麼 發布:2025-02-12 13:24:37 瀏覽:281
網頁版傳奇源碼下載 發布:2025-02-12 13:23:48 瀏覽:828
模型預估演算法 發布:2025-02-12 13:09:46 瀏覽:708
武漢存儲 發布:2025-02-12 13:09:43 瀏覽:204