c语言基础编程训练题,c语言入门基础100题
大家好,今天来为大家分享c语言基础编程训练题的一些知识点,和c语言入门基础100题的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
急求c语言编程题目
早上看到问题需求,中午用休息时间刚好大半代码,发现问题居然已经采纳了。。。
代码完成了。测试过了。直接运行。
滚轮实现动态,三角型指针沿着滚盘数字转动,随机停在一个数字上,如果和之前下注的数值一致就是猜中,反之没猜中
你提出的所有功能都实现了,太多了,我截图列举几个说明一下,其它你自己看吧。
是可以猜中!!可以猜中!!,我第一次2轮就中,忘记截图了。1/36的概率能猜中,有耐心慢慢试,记得充值!
后台还有很多功能,但必须用管理员账户才能进入:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#include<conio.h>
#include<time.h>
#definemaxMShow10//最大下注金额显示字符数,修改该值需要同步修改showDisc函数的格式参数!
typedefstructuser
{
charuName[21];
charpsw[21];
intmoney;//余额
intpay;//历史消费
intwin;//历史赢钱
inttype;//用户类型->0:管理员;1:普通玩家
structuser*next;
}USER;
typedefstructdisc//圆盘数字
{
charflag;//数字前标识
intnum;//圆盘数字
intmoney;//对应下注金额
charmStr[maxMShow+1];//下注金额字符串形式,为了排面整齐,最多显示10个字节
structdisc*next;
}DISC;
voidmeError(void*p);//内存申请失败
DISC*init();//初始化圆盘,生成链表头指针
voidshowDisc(DISC*discHead,USER*logUser);//显示圆盘
DISC*bets(DISC*discHead,USER*user);//下注,成功返回下注节点,失败返回NULL。参数:user:下注人ID;
intregUser(USER**userHead,USER**userTail,char*uName,char*psw,intmoney,inttype);//注册用户,成功返回1,失败返回0。参数:uName:用户名。psw:密码。money:开户金额。type:用户类型0管理员1普通用户
USER*login(USER*userHead,char*uName,char*psw);//登录。登录成功返回用户节点,失败返回NULL
intrecharge(USER*logUser);//充值,成功返回1,失败返回0
voidshowMenu1(DISC*discHead,USER**userHead,USER**userTail);//显示一级菜单
voidshowMenu2(DISC*discHead,USER*logUser,USER*userHead);//显示二级菜单
voidshowMenu3(DISC*discHead,USER*logUser,USER*userHead);//显示三级菜单
introll(DISC*discHead,USER*logUser);//滚动转盘,猜中增加奖金,猜中返回1,没猜中返回0。参数:num=猜的数字,money=下的注
voidreDisc(DISC*discHead);//重置转盘,每次滚动后调用
voidshowUser(USER*userHead,char*uName);//查看指定玩家账户,参数uName传NULL,查看所有玩家账户
voidshowProfit(USER*userHead);//统计赌场盈利状况;
intmain()
{
DISC*discHead=NULL;
USER*userHead=NULL,*userTail=NULL;
srand(time(NULL));
discHead=init();
showMenu1(discHead,&userHead,&userTail);
return0;
}
voidshowMenu1(DISC*discHead,USER**userHead,USER**userTail)//显示一级菜单
{
USER*logUser=NULL;
charuName[21]={0},psw[21]={0};
intn,money=0,type;
while(1)
{
n=0;
memset(uName,0,21);
memset(psw,0,21);
money=0;
type=-1;
system("cls");
printf("1、用户登录
2、用户注册
");
scanf("%d",&n);
if(n==1)
{
system("cls");
printf("请输入ID名:"),scanf("%s",uName);
printf("请输入密码:"),scanf("%s",psw);
logUser=login(*userHead,uName,psw);
if(logUser)
showMenu2(discHead,logUser,*userHead);
}
if(n==2)
{
system("cls");
printf("请输入注册的ID名:"),scanf("%s",uName);
printf("请输入注册的密码:"),scanf("%s",psw);
printf("请输入开户的金额(必须大于0):");
while(!money)
scanf("%d",&money);
printf("请选择要注册的用户类型(0=管理员;1=普通用户):");
while(type!=0&&type!=1)
scanf("%d",&type);
regUser(userHead,userTail,uName,psw,money,type);
}
}
}
voidshowMenu2(DISC*discHead,USER*logUser,USER*userHead)//显示二级菜单
{
intn;
DISC*disc=NULL;
while(1)
{
n=0;
system("cls");
printf("欢迎登录:%s,余额:%d
",logUser->uName,logUser->money);
printf("1、开始转盘
2、账户充值
3、返回上级菜单
4、后台管理
");
scanf("%d",&n);
if(n==1)
{
showDisc(discHead,logUser);
disc=bets(discHead,logUser);
if(disc)
showDisc(discHead,logUser);
printf("任意键开始滚动圆盘。。。
");
getch();
roll(discHead,logUser);
}
if(n==2)
system("cls"),recharge(logUser);
if(n==3)
break;
if(n==4)
{
system("cls");
if(logUser->type!=0)
printf("对不起!您不是管理员,没有该权限!
按任意键继续。。。
"),getch(),getch();
else
showMenu3(discHead,logUser,userHead);//后台管理
}
}
}
voidshowMenu3(DISC*discHead,USER*logUser,USER*userHead)//显示三级菜单
{
intn;
charuName[21]={0};
while(1)
{
n=0;
system("cls");
printf("1、查看指定玩家
2、查看所有玩家
3、查看赌场盈利状况
4、返回上级菜单
");
scanf("%d",&n);
if(n==1)
{
printf("请输入要查找的玩家ID:"),scanf("%s",uName);
showUser(userHead,uName);
}
if(n==2)
showUser(userHead,NULL);
if(n==3)
showProfit(userHead);
if(n==4)
break;
}
}
voidshowProfit(USER*userHead)//统计赌场盈利状况
{
intsumPay=0,sumWin=0;
system("cls");
while(userHead->next)
{
sumPay+=userHead->next->pay;
sumWin+=userHead->next->win;
userHead=userHead->next;
}
printf("玩家共下注%d元,获胜者得到%d元,赌场总获利%d元
按任意键继续。。。
",sumPay,sumWin,sumPay-sumWin),getch();
}
voidshowUser(USER*userHead,char*uName)//查看指定玩家账户,参数uName传NULL,查看所有玩家账户
{
system("cls");
while(userHead->next)
{
if((uName&&strcmp(userHead->next->uName,uName)==0)||!uName)
{
printf("ID:%s,总下注金额%d,总获胜金额%d,当前余额%d
",userHead->next->uName,userHead->next->pay,userHead->next->win,userHead->next->money);
if(uName)
break;
}
userHead=userHead->next;
}
printf("按任意键继续。。。
"),getch();
}
USER*login(USER*userHead,char*uName,char*psw)//登录。登录成功返回用户节点,失败返回NULL
{
if(!userHead)
{
printf("错误!无可匹配数据,请先注册!
按任意键继续。。。
");
getch();
returnNULL;
}
while(userHead->next)
{
if(!strcmp(userHead->next->uName,uName)&&!strcmp(userHead->next->psw,psw))
returnuserHead->next;
userHead=userHead->next;
}
printf("用户不存在或密码输入错误!
按任意键继续。。。
");
getch();
returnNULL;
}
intrecharge(USER*logUser)//充值,成功返回1,失败返回0
{
intmoney=-1;
if(!logUser)
return0;
while(money<0)
printf("输入要充值的金额(输入0返回主菜单):"),scanf("%d",&money);
logUser->money+=money;
return1;
}
intregUser(USER**userHead,USER**userTail,char*uName,char*psw,intmoney,inttype)//注册用户,成功返回1,失败返回0。参数:uName:用户名。psw:密码。money:开户金额
{
USER*user=NULL,*userNew=NULL;
if(!*userHead)
*userHead=(USER*)malloc(sizeof(USER)),(*userHead)->next=NULL,meError(*userHead);
user=*userHead;
while(user->next)
{
if(strcmp(user->next->uName,uName)==0)
{
printf("用户名已存在!请重新输入。
按任意键继续。。。
");
getch();
return0;
}
user=user->next;
}
userNew=(USER*)malloc(sizeof(USER));
meError(userHead);
userNew->money=money;
userNew->pay=0;
userNew->win=0;
userNew->uName[0]=0;
userNew->psw[0]=0;
userNew->type=type;
strcpy(userNew->uName,uName);
strcpy(userNew->psw,psw);
userNew->next=NULL;
if(!((*userHead)->next))
(*userHead)->next=userNew;
else
(*userTail)->next=userNew;
*userTail=userNew;
printf("%s:%s注册成功!
按任意键继续。。。
",type?"普通用户":"管理员",uName);
getch();
return1;
}
DISC*init()
{
inti;
DISC*discHead=(DISC*)malloc(sizeof(DISC)),*discNew=NULL,*discTail=NULL;
meError(discHead);
discHead->next=NULL;
for(i=1;i<=36;i++)
{
discNew=(DISC*)malloc(sizeof(DISC));
meError(discNew);
discNew->flag='';
discNew->money=0;
discNew->num=i;
discNew->next=NULL;
if(!(discHead->next))
discHead->next=discNew;
else
discTail->next=discNew;
discTail=discNew;
}
returndiscHead;
}
voidreDisc(DISC*discHead)//重置转盘,每次滚动后调用
{
while(discHead->next)
{
discHead->next->flag='';
discHead->next->money=0;
memset(discHead->next->mStr,0,sizeof(discHead->next));
discHead=discHead->next;
}
}
introll(DISC*discHead,USER*logUser)//滚动转盘,猜中增加奖金,猜中返回1,没猜中返回0。参数:num=猜的数字,money=下的注
{
DISC*discHeadSave=discHead;
inti,rnum=0,win,flag;
while(1)
{
discHead->next->flag=16;
showDisc(discHeadSave,logUser);
rnum=rand()%36+1;
if(rnum==discHead->next->num)
break;
for(i=0;i<2000;i++);
discHead->next->flag='';
if(discHead->next->next)
discHead=discHead->next;
else
discHead=discHeadSave;
}
if(discHead->next->money>0)//如果随机滚到的数字有下注
{
win=discHead->next->money*5;
logUser->money+=win;
logUser->win+=win;
printf("恭喜猜中了,返还5倍!您获得了%d元。
",win);
flag=1;
}
else
{
printf("对不起!本次没有猜中,再接再厉。
");
flag=0;
}
reDisc(discHeadSave);
printf("按任意键继续。。。
");
getch();
returnflag;
}
DISC*bets(DISC*discHead,USER*user)//下注
{
intmoney=0,num=-1;
DISC*disc=NULL;
while(num<1||num>36)
printf("请输入要下注的数字:"),scanf("%d",&num);
while(!money)
printf("请输入要下注的金额(不超过余额且大于0):"),scanf("%d",&money);
if(money>user->money)
{
printf("对不起,您的余额不足,请充值或重新下注!
按任意键继续。。。
");
getch();
returnNULL;
}
user->money-=money;
user->pay+=money;
while(discHead->next)
{
if(discHead->next->num==num)
{
disc=discHead->next;
break;
}
discHead=discHead->next;
}
disc->money=money;
sprintf(disc->mStr,"%d",disc->money);
returndisc;
}
voidshowDisc(DISC*discHead,USER*logUser)
{
intclo=0;
system("cls");
printf("当前玩家:%s,余额:%d
",logUser->uName,logUser->money);
while(discHead->next)
{
printf("%c%2d%2s%-10s",discHead->next->flag,discHead->next->num,
discHead->next->money?"<-":"",discHead->next->money?discHead->next->mStr:"");//如要修改显示下注金额最大位数,这里%10d要改!!!
clo++;
if(clo==3)
clo=0,printf("
");
discHead=discHead->next;
}
}
voidmeError(void*p)//内存申请失败
{
if(p==NULL)
{
printf("异常:内存申请失败!回车结束程序!
");
while(getch()!='
');
exit(0);
}
}
C语言编程的几道题我是初学者,谁帮我把步骤写下~
都在visual c++ 6.0里面运行
第一题
#include"stdafx.h"
#include"stdio.h"
int main()
{
printf("**************\n");
printf("* LANGUAGE*\n");
printf("* BEGINE*\n");
printf("**************\n");
return 0;
}
第二题
#include"stdafx.h"
#include"stdio.h"
#define P 3.14//用宏定义圆周率的值
int main()
{
float r=1.5,h=3,s,v;
s=P*r*r;//圆的面积计算
printf("圆的面积为:%6.2f.\n",s);//输出圆的面积
v=s*h;//圆拄的体积计算
printf("圆柱的体积为:%6.2f.\n",v);//输出圆柱的体积
return 0;
}
第1题
#include"stdafx.h"
#include"stdio.h"
int main()
{
char c1,c2,c3;
printf("请输入一个字母:");
scanf("%c",&c2);
if((c2>='a'&&c2<='z')||(c2>='A'&&c2<='Z'))
{
c1=c2-1;
c3=c2+1;
}
if(c2=='a')
c1='z';
if(c2=='z')
c3='a';
if(c2=='A')
c1='Z';
if(c2=='Z')
c1='A';
printf("三个字母为:%c%c%c.\n",c1,c2,c3);
return 0;
}
第2题
#include"stdafx.h"
#include"stdio.h"
int main()
{
int i,j,k;
float a;
printf("请输入三个整数:");
scanf("%d%d%d",&i,&j,&k);
a=float(i+j+k)/3;
printf("这三个数的平均数是:%6.2f\n",a);
return 0;
}
第三题
#include"stdafx.h"
#include"stdio.h"
int main()
{
int i,g,s,b;
printf("请输入一个整数:");
scanf("%d",&i);
while(i<100||i>1000)
{
printf("范围错误!\n");
printf("重新输入!\n");
scanf("%d",&i);
}
b=i/100;
s=(i-b*100)/10;
g=i-b*100-s*10;
printf("个位数是:%d,十位数是:%d,百位数是:%d.\n",g,s,b);
return 0;
}
C语言编程题,急,请大家帮忙啊,不会的也试试啊,急
好简单,给你代码:程序1:将100至200之间的不能被5整除的数输出源代码 a.c
#include<stdio.h>
#include<stdlib.h>
main(){
for(int i=100;i<=200;i++){
if( i%5) printf("%d不能被5整除!\n", i);
}
}
问题二:已知:X[12]={2,45,67,12,3,9,76,45,23,42,6,5},编程实现数组X中奇数的个数及奇数之和.
源代码 b.c
#include<stdio.h>
#include<stdlib.h>
main(){
int X[12]={2,45,67,12,3,9,76,45,23,42,6,5}, sum=0, count=0;
for(int i= 0; i<12; i++){
if( X[i]%2){
sum+= X[i];
count++;
}
}
printf("奇数个数是%d奇数之和是%d\n", count, sum);
}
另外,如果用windows下的tc等集成开发环境,编译我就不说了。
如果用linux或者unix,这样编译:
$cc-o a a.c
$cc-o b b.c
这样, a.c编译后得到的可执行程序是a,b.c编译后得到的可执行程序是b,运行这样就可以了
$a
$b
不过如果你用root用户操作,执行时应该这样
#./a
#./b
关于c语言基础编程训练题的内容到此结束,希望对大家有所帮助。