求C语言编程很长的程序100多行的

如题所述

第1个回答  2011-10-28
C语言写的21点程序!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NULL 0
int compare(char sum1,char sum2)
{
if(sum1>=sum2)
return 1;
else
return 0;

}
int breakal(int sum)
{
if(sum>21)
return 0;
else
return 1;
}
char change(int card)
{
char ch,n,m,x;
switch(card)
{
case 1: ch='A';
break;
case 10:
{
n=1+int(rand()/(RAND_MAX+1.0));
if(n==1)
ch='K';
else
{
m=1+int(rand()/(RAND_MAX+1.0));
if(m==1)
ch='Q';
else
{
x=1+int(rand()/(RAND_MAX+1.0));
if(x==1)
ch='J';
}
}
break;
}
} //以上switch语句用于将数字转换成字符
return ch;
}
void game()
{
int i,k,n;
char host_ch,player_ch,host_card[15],player_card[15];
int host_sum=0,player_sum=0;
srand(time(NULL));
for(i=0;i<2;i++)
{
int (10.0*rand()/(RAND_MAX+1.0));
player_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
player_ch=change(player_card[i]);
if(player_card[i]>1 && player_card[i]<10) //输出玩家抽到的牌的点数
printf("您抽到的第%d张牌是%d\n",i+1,player_card[i]);
else if(player_card[i]==10)
printf("您要到的第%d张牌是%c\n",i+1,player_ch);
else
printf("您要到的第%d张牌是A\n",i+1);
if(player_ch=='A') //询问判断玩家的A的点值为1或11
{
printf(" 您有一张A,您想要A作1还是11?\n");
printf(" 1. 1\n" );
printf(" 2. 11\n");
if(scanf("%d",&n) && n==1)
player_card[i]=1;
else
player_card[i]=11;
}

host_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
host_ch=change(host_card[i]);
if(host_ch=='A') //电脑自动判断庄家的A的点值为1或11
{
k=1+int(rand()/(RAND_MAX+1.0));
if(k==1)
host_card[i]=11;
else
host_card[i]=1;
}

player_sum+=player_card[i]; //分别对庄家和玩家的点数求和
host_sum+=host_card[i];
}
printf("您现在的总面值为%d\n",player_sum);//输出玩家的总面值
for(i=2;i<5;i++)
{
if(host_sum<18 && host_sum>0)//电脑自动判断庄家是否要牌
{
host_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
host_ch=change(host_card[i]);
if(host_ch=='A') //电脑自动判断庄家的A的点值为1或11
{
k=1+int(rand()/(RAND_MAX+1.0));
if(k==1)
host_card[i]=11;
else
host_card[i]=1;
}
host_sum+=host_card[i];
}
printf("您还要继续要牌吗?\n");
printf(" 1.要\n");
printf(" 2.不要\n");
scanf("%d",&k);
if(k==1)
{
{
player_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
player_ch=change(player_card[i]);
if(player_ch=='A') //询问判断玩家的A的点值为1或11
{
printf("您有一张A,您想要A作1还是11?\n");
printf(" 1. 1\n" );
printf(" 2. 11\n");
if(scanf("%d",&n) && n==1)
player_card[i]=1;
else
player_card[i]=11;
printf("您要到的第%d张牌是A\n",i+1);
}
else
printf("您要到的第%d张牌是%d\n",i+1,player_card[i]);
player_sum+=player_card[i];
if(i==4)
printf("您手中已有5张牌,一决胜负的时刻到啦!\n");
if(breakal(host_sum)==0)
{
if(breakal(player_sum)==0)
{
printf("庄家爆牌了,您也爆牌了!庄家的牌面值是%d,您的牌面值是%d\n",host_sum,player_sum);
printf("\nYou lose..\n");
break;
}
}
else
if(breakal(player_sum)==0)
{
printf("您爆牌了!您的牌面值是%d\n \nYou lose..\n",player_sum);
break;
}
}
if(breakal(host_sum)==0)
{
printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum);
printf("\nCongratulations! YOu win!\n");
break;
}
}
else
{
printf("庄家的牌面值是%d,您的牌面值是%d\n",host_sum,player_sum);
if(compare(host_sum,player_sum)==1)
printf("\nYou lose..\n");
else
printf("\nCongratulations! You win!\n");
break;
}

}
}
int main()
{
kaishi:
int n;
printf(" 欢迎进入21点游戏!\n");
printf(" ************************************\n");
printf(" 1.开始游戏\n");
printf(" 2.退出游戏\n");
printf(" ************************************\n");
if(scanf("%d",&n)&&n==1)
game();
else if(n==2)
{
printf(" ******************************\n");
printf(" 游戏结束!祝您愉快!\n");
printf("\n\n");
printf(" 再见!\n");
printf(" ******************************\n");
return 0;
}
goto kaishi;
}本回答被网友采纳
第2个回答  2011-10-28
/* --- MAIN --- */

int main(int argc, char *argv[])
{
CLOCK_TYPE time1;
CLOCK_TYPE time2;
SDL_Rect dest;
SDL_Rect src;
int i;

CLOCK_ASM(time1);

/* Set up locale support */
setlocale(LC_ALL, "");
ctype_utf8();

/* NOTE: Moved run_font_scanner() call from here, to right after
setup_language(), so that the gettext() calls used while testing fonts
actually DO something (per tuxpaint-devel discussion, April 2007)
-bjk 2007.06.05 */

/* Set up! */
setup(argc, argv);

#if 0
while (!font_thread_done)
{
/* FIXME: should respond to quit events
FIXME: should have a read-depends memory barrier around here */
show_progress_bar();
SDL_Delay(20);
}
SDL_WaitThread(font_thread, NULL);
#endif

CLOCK_ASM(time2);

#ifdef DEBUG
printf("Start-up time: %.3f\n", (double) (time2 - time1) / CLOCK_SPEED);
#endif

/* Let the user know we're (nearly) ready now */

dest.x = 0;
dest.y = WINDOW_HEIGHT - img_progress->h;
dest.h = img_progress->h;
dest.w = WINDOW_WIDTH;
SDL_FillRect(screen, &dest, SDL_MapRGB(screen->format, 255, 255, 255));
src.h = img_progress->h;
src.w = img_title->w;
src.x = 0;
src.y = img_title->h - img_progress->h;
dest.x =
((WINDOW_WIDTH - img_title->w - (img_title_tuxpaint->w / 2)) / 2) +
(img_title_tuxpaint->w / 2) + 20;
SDL_BlitSurface(img_title, &src, screen, &dest);

SDL_FreeSurface(img_title);
SDL_FreeSurface(img_title_credits);
SDL_FreeSurface(img_title_tuxpaint);

dest.x = 0;
dest.w = WINDOW_WIDTH; /* SDL mangles this! So, do repairs. */
update_screen_rect(&dest);

do_setcursor(cursor_arrow);
playsound(screen, 0, SND_HARP, 1, SNDPOS_CENTER, SNDDIST_NEAR);
do_wait(50); /* about 5 seconds */

/* Set defaults! */

cur_undo = 0;
oldest_undo = 0;
newest_undo = 0;

cur_tool = TOOL_BRUSH;
cur_color = COLOR_BLACK;
colors_are_selectable = 1;
cur_brush = 0;
for (i = 0; i < MAX_STAMP_GROUPS; i++)
cur_stamp[i] = 0;
cur_shape = SHAPE_SQUARE;
cur_magic = 0;
cur_font = 0;
cur_eraser = 0;
cursor_left = -1;
cursor_x = -1;
cursor_y = -1;
cursor_textwidth = 0;

mouse_x = WINDOW_WIDTH / 2;
mouse_y = WINDOW_HEIGHT / 2;
SDL_WarpMouse(mouse_x, mouse_y);

mousekey_up = SDL_KEYUP;
mousekey_down = SDL_KEYUP;
mousekey_left = SDL_KEYUP;
mousekey_right = SDL_KEYUP;

eraser_sound = 0;

img_cur_brush = NULL;
render_brush();

brush_scroll = 0;
for (i = 0; i < MAX_STAMP_GROUPS; i++)
stamp_scroll[i] = 0;
stamp_group = 0; /* reset! */
font_scroll = 0;
magic_scroll = 0;

reset_avail_tools();

/* Load current image (if any): */

if (start_blank == 0)
load_current();

been_saved = 1;
tool_avail[TOOL_SAVE] = 0;

/* Draw the screen! */

SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 255, 255));

draw_toolbar();
draw_colors(COLORSEL_REFRESH);
draw_brushes();
update_canvas(0, 0, WINDOW_WIDTH - 96, (48 * 7) + 40 + HEIGHTOFFSET);

SDL_Flip(screen);

draw_tux_text(tool_tux[cur_tool], tool_tips[cur_tool], 1);

/* Main loop! */
mainloop();

/* Close and quit! */

save_current();

wait_for_sfx();

cleanup();

return 0;
}
第3个回答  2011-10-28
void main(void)
{
printf("1");
printf("2");
...//此处省略97行
printf("100");
return;
}
第4个回答  2011-10-28
100 行随便写写就有了么
相似回答