# include "stdlib.h"
# include "string.h"
# define NULL 0
struct xiangcun
{
char num[4]//乡村的编号
char name[20] //村名
int people //总人数
int relieve//救济人数
float amount //救济总金额
struct xiangcun *next
}
struct jiating
{
char num[10] //乡村编号
char candidate[20] //身份证号码
char fname[20]//户主名字
char sex[2] //性别
int fpeople //家庭人数
float insert //年收入
int time //接受救助次数
struct jiating * next
}
struct out
{
char candidate[20]//户主身份证号码
char goodsname[20] //商品名字
char date[15]//发放日期
char unit[10] //单位
float price //单价
int count//发放数量
float money //金额
struct out *next
}
struct xiangcun *h1,*tail1
struct jiating *h2,*tail2
struct out *h3,*tail3
struct xiangcun * rebuilt1() //构建乡村链表
{
int n1=0
struct xiangcun *p1,*p2,*head
p1=p2=(struct xiangcun *)malloc(sizeof(struct xiangcun))
printf("\n\n\n\n\n\n 请输入以下信息:\n 乡村的编号:\n 村名:\n 总人数:\n 救济人数:\n 就系总金额:\n")
scanf("%s%s%d%d%f",p1->num,p1->name,&p1->people,&p1->relieve,&p1->amount)
while(strcmp(p1->num,"0")!=0)
{
n1++
if(n1==1)
h1=p1
else
p2->next=p1
p2=p1
p1=(struct xiangcun *)malloc(sizeof(struct xiangcun))
scanf("%s%s%d%d%f",p1->num,p1->name,&p1->people,&p1->relieve,&p1->amount)
}
p2->next=NULL
return h1
}
struct jiating * rebuilt2() //构建家庭信息链表
{
int n2=0
struct jiating *p1,*p2,*head
p1=p2=(struct jiating *)malloc(sizeof(struct jiating))
printf("\n\n\n\n\n\n 请输入以下信息:\n乡村名字: \n户主身份证号码: \n 户主名字:\n 户主性别:\n 家庭人数:\n 年收入:\n 接受救助的次数:\n")
scanf("%s%s%s%s%d%f%d",p1->num,p1->candidate,p1->fname,p1->sex,&p1->fpeople,&p1->insert,&p1->time)
while(strcmp(p1->candidate,"0")!=0)
{
n2++
if(n2==1)
h2=p1
else
p2->next=p1
p2=p1
p1=(struct jiating *)malloc(sizeof(struct jiating))
scanf("%s%s%s%s%d%f%d",p1->num,p1->candidate,p1->fname,p1->sex,&p1->fpeople,&p1->insert,&p1->time)
}
p2->next=NULL
return h2
}
struct out * rebuilt3() //构建物资信息链表
{
struct out *p1, *p2,*head
int n3=0
p1=p2=(struct out *)malloc(sizeof(struct out))
printf("\n\n\n\n\n\n 请输入以下信息:\n 户主身份证号码:\n 商品名字:\n 发放日期:\n 单位:\n 单价:\n 发放数量:\n 金额:\n")
scanf("%s%s%s%s%f%d%f",p1->candidate,p1->goodsname,p1->date,p1->unit,&p1->price,&p1->count,&p1->money)
while(strcmp(p1->candidate,"0")!=0)
{
n3++
if(n3==1)
h3=p1
else
p2->next=p1
p2=p1
p1=(struct out *)malloc(sizeof(struct out))
scanf("%s%s%s%s%f%d%f",p1->candidate,p1->goodsname,p1->date,p1->unit,&p1->price,&p1->count,&p1->money)
}
p2->next=NULL
return h3
}
int change1(xiangcun *head1,char *num) //对乡村信息的修改
{
struct xiangcun *p
p=head1->next
printf("\n\n\n\n\n\n")
while(1)
{
if(p==NULL)
{
return 1
}
if(strstr(p->num,num))
{
printf(" 请重新输入要修改乡村的各项:")
scanf("%s%s%d%d%d",p->num,p->name,&p->people,&p->relieve,&p->amount)
return 1
}
p=p->next
}
}
int change2(jiating *head2,char *num) //对家庭信息的修改
{
struct jiating *p
p=head2->next
printf("\n\n\n\n\n\n")
while(1)
{
if(p==NULL)
{
return 1
}
if(strstr(p->fname,num))
{
printf(" 请重新输入要修改家庭的各项:")
scanf("%s%s%s%s%d%f%d",p->num,p->candidate,p->fname,p->sex,&p->fpeople,&p->insert,&p->time)
return 1
}
p=p->next
}
}
int change3(out *head3,char *name) //对物资信息的修改
{
struct out *p
p=head3->next
printf("\n\n\n\n\n\n")
while(1)
{
if(p==NULL)
{
return 1
}
if(strstr(p->goodsname,name))
{
printf(" 请重新输入要修改物资的各项:")
scanf("%s%s%s%s%f%d%f",p->candidate,p->goodsname,p->date,p->unit,&p->price,&p->count,&p->money)
return 1
}
p=p->next
}
}
void Csearch(xiangcun* head1) /* 查询全部乡村中每个村的救济总户数*/
{
struct xiangcun *p
p=head1->next
printf("\n\n\n\n\n\n")
if(p==NULL)
{
printf(" 全乡没有被救济的人!\n")
return
}
while(p!=NULL)
{
printf(" %s救济人数为:%d\n",p->name,p->relieve)
p=p->next
}
return
}
int Esearch(xiangcun * head1,char *name) /*查询全部乡村中某个村的村救济总金额*/
{
struct xiangcun *p
p=head1->next
while(1)
{
if(p==NULL)
{
return 0
}
if(strstr(p->name,name))
{
printf("\n\n\n\n\n\n %s的受救济总金额是:%g\n",p->name,p->amount)
return 1
}
p=p->next
}
}
int Fsearch(jiating* head2,char * name) /*查询某救济户 (如:张三)基本信息*/
{
struct jiating *p
p=head2->next
while(1)
{
if(p==NULL)
{
return 0
}
if(strstr(p->fname,name))
{
printf("\n\n\n\n\n\n 户主的乡村编号:%s\n 户主的身份证号码:%s\n",p->num,p->candidate)
printf(" 户主名字是:%s\n 户主性别是:%s\n",p->fname,p->sex)
printf(" 家庭人数:%d\n 年收入:%g\n /接受救助次数:d\n",p->fpeople,p->insert,p->time)
return 1
}
p=p->next
}
}int frelieve(jiating *head2,out *head3,char * name)/*查询某救济户 (如:张三)救济户物资发放的全部信息*/
{
struct jiating * p
p=head2->next
while(1)
{
if(p==NULL)
{
return 0
}
if(strstr(p->fname,name))
{
struct out *p1
p1=head3->next
printf("\n\n\n\n\n\n %s的物资信息:\n",p->fname)
while(1)
{
if(p1==NULL)
{
return 1
}
if(strstr(p->candidate,p1->candidate))
{
printf("物资名字:%s\n发放日期:%s\n物资的量的单位:%s\n",p1->goodsname,p1->date,p1->unit)
printf("物资单价:%g\n 发放数量:%d\n发放金额:%g\n",p1->price,p1->count,p1->money)
}
p1=p1->next
}
}
p=p->next
}
}
int Relieve(jiating * head2,out *head3,char * name,char *name2)/*查询某救济户 (如:张三)是否发放了某种救济物资 (如:矿泉水)的信息*/
{
struct jiating * p
p=head2->next
while(1)
{
if(p==NULL)
{
return 0
}
if(strstr(p->fname,name))
{
out *p1
p1=head3->next
while (1)
{
if(strstr(p->candidate,p1->candidate)&&strstr(p1->goodsname,name2))
{
return 1
}
p1=p1->next
if(p1==NULL)
{
return 0
}
}
}
p=p->next
}
}
void tprint(xiangcun * head1)/*统计并输出全乡的人口总数、救济总户数、救济总金额*/
{
int peo_sum=0,re_sum=0
float re_cost=0
xiangcun *p=h1
while(p!=NULL)
{
peo_sum+=p->people
re_sum+=p->relieve
re_cost+=p->amount
p=p->next
}
printf("\n\n\n\n\n\n 人口总数:%d\n 救济总户数:%d\n救济总金额:%g\n",peo_sum,re_sum,re_cost)
}
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=0i<2i++)
{
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=2i<5i++)
{
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
}
# include "iostream"# include "String.h"
using namespace std
struct List
{
char name[20]
int NO
}
template <class List>
struct Node
{
List data
Node<List>*next
}
template <class List>
class Student
{
Node<List>*head
public:
Student(int m)
void Setdata(int n)
void PrintStudent()
int Get(char b[])
void Delete(int i)
void Insert(int i,List item)
void Change(char a[],int num)
~Student()
}
template <class List>
Student<List>::Student(int m)
{
Node<List>*r,*s
head = new Node<List>
r = head
for (int i = 0i <mi++)
{
s = new Node<List>
r->next = s
r = s
}
r->next = NULL
}
template <class List>
void Student<List>::Setdata(int n)
{
Node<List>*p
p = head->next
for(int i = 0i <ni++)
{
cout<<"请输入姓名:"
cin>>p->data.name
cout<<"请输入身份证号码:"
cin>>p->data.NO
p = p->next
}
}
template <class List>
void Student<List>::PrintStudent()
{
Node<List>*p
p = head->next
while (p)
{
cout<<p->data.name<<","<<p->data.NO<<endl
p = p->next
}
}
template <class List>
int Student<List>::Get(char b[])
{
Node<List>*p
p = head->next
while(p &&strcmp(p->data.name,b) != 0)
{
p = p->next
}
return p->data.NO
}
template <class List>
void Student<List>::Delete(int i)
{
Node<List>*p,*q
p = head
int j = 0
while(p &&j <i-1)
{
p = p->next
j++
}
if(!p || !p->next) {cerr<<"删除位置非法"exit(1)}
else
{
List x
q = p->next
x = q->data
p->next = q->next
delete q
cout<<x.name<<","<<x.NO<<endl
}
}
template <class List>
void Student<List>::Insert(int i,List item)
{
Node<List>*p,*s
p = head
int j = 0
while (p &&j <i-1)
{
p = p->next
j++
}
if(!p) {cerr<<"插入位置非法"exit(1)}
else
{
s = new Node<List>
strcpy(s->data.name,item.name)
s->data.NO = item.NO
s->next = p->next
p->next = s
}
}
template <class List>
void Student<List>::Change(char a[],int num)
{
Node<List>*p
p = head->next
while (p &&strcmp(p->data.name,a) != 0)
{
p = p->next
}
p->data.NO = num
}
template <class List>
Student<List>::~Student()
{
Node<List>*p,*q
p = head
while (p)
{
q = p
p = p->next
delete q
}
head = NULL
}
void main()
{
cout<<"请建立学籍系统"<<endl
int m
cout<<"请输入总人数:"
cin>>m
Student<List>stu(m)
int n = m
stu.Setdata(n)
stu.PrintStudent()
int choice
do
{
cout<<"********"<<endl
cout<<"1.查询"<<endl
cout<<"2.删除"<<endl
cout<<"3.插入"<<endl
cout<<"4.修改"<<endl
cout<<"0.退出"<<endl
cout<<"********"<<endl
cout<<"请输入您的选择:"
cin>>choice
switch(choice)
{
case 1:
{
char b[20]
cout<<"请输入需查询的姓名:"
cin>>b
cout<<"查询人的学号为:"
cout<<stu.Get(b)<<endl
}break
case 2:
{
int i
cout<<"请输入需删除数据的位置:"
cin>>i
cout<<"删除的数据为:"
stu.Delete(i)
}break
case 3:
{
List item
cout<<"请输入需插入学生的姓名:"
cin>>item.name
cout<<"请输入需插入学生的学号:"
cin>>item.NO
int i
cout<<"请输入需插入的位置:"
cin>>i
stu.Insert(i,item)
stu.PrintStudent()
}break
case 4:
{
char a[20]
cout<<"请输入需修改人的姓名:"
cin>>a
int num
cout<<"请输入修改的新学号:"
cin>>num
stu.Change(a,num)
stu.PrintStudent()
}break
case 0:
{
exit(1)
}break
default:
{
cout<<"选择项非法,请重新选择"
cout<<endl
cout<<endl
}
}
} while(choice)
}