⑴ 求c語言130行左右代碼的小項目入門級就行
//////洗牌-發牌////////
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
structPOKER
{
intnum;//A:1,J:11,Q:12,K:13小王:14大王:15
intcolor;//黑1,紅2,梅3,方4
}s[54];
voidoutput(intmode,intnum)//mode為0時表示顯示整副牌,為1時表示發牌
{//mode為1時:num的值表示每位玩家發多少張牌
if(mode==1&&(num<1||num>13))
{
printf(" 設置每位玩家的牌數出錯!");
return;
}
inti,player_count=1;
for(i=0;i<54;i++)
{
if(mode==1)
{
if(i%num==0)
{
if(player_count>4)
{
return;
}
printf(" 玩家%d:",player_count);
player_count++;
}
}
if(s[i].num==14)
{
putchar(1);
}
elseif(s[i].num==15)
{
putchar(2);
}
else
{
switch(s[i].num)
{
case1:putchar('A');break;
case11:putchar('J');break;
case12:putchar('Q');break;
case13:putchar('K');break;
default:printf("%d",s[i].num);
}
switch(s[i].color)
{
case1: putchar(6);break;
case2:putchar(3);break;
case3:putchar(5);break;
case4:putchar(4);break;
default:printf("");
}
}
printf("");
}
}
voidxipai()
{
inti,num,color;
memset(s,0,sizeof(structPOKER)*54);
intcount=0;
while(count<54)
{
num=rand()%15+1;
color=rand()%4+1;
intflag_skip=0;
for(i=0;i<54;i++)
{
if((s[i].num==num&&s[i].color==color)||(s[i].num==14&&num==14)||(s[i].num==15&&num==15))
{
flag_skip=1;
break;
}
}
if(flag_skip==1)
{
continue;
}
while(1)
{
i=rand()%54;
if(s[i].num==0)
{
s[i].num=num;
s[i].color=color;
count++;
break;
}
else
{
continue;
}
}
}
}
intmain()
{
intc,num=13;
srand((unsigned)time(0));
xipai();
while(1)
{
printf(" 已洗好,請選擇:(1:全部顯示2:發牌3:洗牌)");
fflush(stdin);
scanf("%d",&c);
if(c==1)
{
output(0,0);
}
elseif(c==3)
{
xipai();
}
elseif(c==2)
{
printf(" 每位發幾張:(1--13)");
while(1)
{
fflush(stdin);
scanf("%d",&num);
if(num>0&&num<14)
{
break;
}
else
{
printf(" 輸入錯誤,請重新輸入 每位發幾張:(1--13)");
}
}
output(1,num);
}
}
return0;
}
⑵ 求一份C語言小項目的代碼,要求150行以上,很急!
我給個我寫的吧,不過不完全符合要求。子函數只有7個,但有兩個宏,其中一個可以換成函數。其實如果把測試改成自動的,可以超過10個,你可以自己改一改。
項目名稱:UTF8StringEscaper。在Github上可以搜到,不過其實只是個單文件的小程序。代碼參考了leptjson。
項目概述:此程序可以將輸入的UTF8文本進行轉義,例如如果手動輸入 1 2 這四個字元,可以輸出 1(換行)2。
採用的C語言技術,這怎麼好寫呢?:注釋、轉義序列、預處理器、指針、inline
/*測試用例:
hello,world
u4F60u597D u4E16u754C
uD869uDEA5
你好//win下失敗
uqweru1234
u0068uqwer
auDFFFa
auD800a
ym
uD800u0068
uD800uqwer
*/
#include<assert.h>
#include<stdbool.h>
#include<stdio.h>
#include<stdlib.h>
#ifdefined__clang__&&!(definedWIN32||definedlinux||definenix)
#defineWIN32
#endif
#definemovenext(ch,p)(ch=*p++)
voidParse(constchar*p);
intParseUnicode(constchar**pp);
intParseHex(constchar*num);
(unsignedshorthigh,unsignedshortlow);
voidEncodeUTF8(unsignedcodePoint);
intmain(void)
{
#ifdefWIN32
system("chcp65001");
#endif
charinput[BUFSIZ];
printf(" ¥>");
while(gets(input)!=NULL)//讀到EOF時返回NULL
{
Parse(input);
printf(" ¥>");
}
return0;
}
#defineHandleEscape(ch,escaped)
casech:
putchar(escaped);
break
voidParse(constchar*p)
{
charch;
while(movenext(ch,p)!='