C语言基础练习题及代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

读前须知:1.此文档为UP主在为期11周的c语言学习课程中做过的在线测评练习题,题目和UP主自己写的代码都在这里。2.由于水平有限,所用的算法并不是很简洁,部分题目是暴力循环破解的。精益求精者请自行思考或百度。3.由于课业紧张,写的时候几乎没有写注释,排版也比较紧凑,这些可能会给读者的理解带来困难,在此先说一声抱歉。4.由于老师教的不好,学习过程中不大愉悦,因此用了一些恶趣味的单词作为变量名泄愤,恳请不要在意这些细节…5.由于学校以在线测评的方式考核,UP主并没有考虑各种人性化的细节例如输入范围限制,输入提示等。如果程序是写给人用的,请务必考虑这些人性化设置。6.本文档仅供各位网友参考学习c语言之用,读者擅自用作他途所造成的一切不良后果与UP主无关。身高预测【问题描述】父母都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关设fatH为其父身高,motH为其母身高,身高预测公式为男性成人时身高=(fatH+motH)*0.54cm女性成人时身高=(fatH*0.923+motH)/2cm此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生习惯,那么可增加身高1.5%。请编程利用给定公式和身高预测方法对身高进行预测。【输入】输入由键盘输入,共5行。第一行有一个字符sex,代表用户的性别(F或f代表女性,M或m代表男性)第二行有一个实数fatH,代表父亲身高第三行有一个实数motH,代表母亲身高第四行有一个字符spor,代表是否喜爱体育锻炼(Y或y代表喜爱锻炼,N或n代表不喜爱锻炼)第五行有一个字符diet,代表是否有良好的饮食习惯(Y或y代表饮食习惯良好,N或n代表饮食习惯不好)【输出】输出只有1行,为所预测的身高hei(不保留小数),输出格式为Yourfutureheightwillbehei(cm)【样例输入】f176160yy【样例输出】Yourfutureheightwillbe167(cm)【数据范围】对于fatH,motH,hei,保证100%的数据不超过double类型的范围对于sex,spor,diet,保证没有非法数据【注释】hint1:数据输入时请考虑\n的影响hint2:cms系统将所有warning均视为errorhint3:main()函数请使用intmain(),否则会提示编译错误。/*==================================================================*/#includestdio.hintmain(){doublefatH,motH,hei,in;charsex,spor,diet,beyond;scanf(%c\n%lf\n%lf\n%c\n%c,&sex,&fatH,&motH,&spor,&diet);in=1.0;beyond='i';if((sex=='F')||(sex=='f')){hei=(fatH*0.923+motH)/2;}elseif((sex=='M')||(sex=='m')){hei=(fatH+motH)*0.54;}elsebeyond='e';if((spor=='y')||(spor=='Y')){in=in+0.02;}elseif((spor=='n')||(spor=='N'))in=in;elsebeyond='e';if((diet=='y')||(diet=='Y')){in=in+0.015;}elseif((diet=='n')||(diet=='N'))in=in;elsebeyond='e';hei=hei*in;if(beyond!='e')printf(Yourfutureheightwillbe%.0lf(cm),hei);elseprintf(thedatayouinputiswrong,pleasecheckitoutandinputagain.);return0;}/*==================================================================*/猜数游戏1【问题描述】编程由计算机生成一个1~100之间的整数请用户猜,若猜对则结束游戏,并输出用户猜测次数(输出格式:“Right,[猜测次数]time(s)”);若猜错则给出提示——若用户所猜数偏大,则输出“Big”,否则输出“Small”。一次游戏最多可以猜10次,若经过10次仍未猜中的话,输出“over”,并结束游戏。【样例过程1】50Big25Small30Small40Small45Big42Big41Right,7time(s)【样例过程2】1Small2Small3Small4Small5Small6Small7Small8Small9Small10Smallover【注释】hint1:“”行代表为用户输入hint2:请使用“dowhile”循环实现hint3:该题为离线评测,程序提交过后不会立即得到成绩,请耐心等待批改/*=================================================================*/#includestdio.h#includestdlib.hintmain(){intguess,ra,times;ra=rand()%100;times=1;printf(pleaseguessanumberin0~100\n);do{scanf(%d,&guess);if(guess==ra){printf(Right,%dtime(s),times);times=12;break;}elseif(guessra)printf(Small\n);elseprintf(Big\n);times++;}while(times=10);if(times!=12)printf(over);return0;}/*==================================================================*/猜数游戏2【问题描述】编程由计算机生成一个1~100之间的整数请用户猜,若猜对则输出用户猜测次数(输出格式:“Right,[猜测次数]time(s)”);若猜错则给出提示——若用户所猜数偏大,则输出“Big”,否则输出“Small”。一次游戏最多可以猜10次,若经过10次仍未猜中的话,输出“over”;一轮游戏结束之后,询问用户是否进行下一轮游戏(输出格式:“continue?Y||N”),并等待用户响应(若“Y”、“N”输入非法,则重复询问)。另外,要求程序能够判断非法数据,若用户输入非法,输出“illegalinput”,然后让用户重新输入。【样例过程1】50Small75Small80Small90Small95Small98Right,6time(s)continue?Y||NY50Small75Big60Big55Small57Small58Small59Right,7time(s)continue?Y||NN【样例过程2】aillegalinput1Small2Small3Small4Small5Small6Small7Small8Small9Small10Smallovercontinue?Y||Nacontinue?Y||NN【注释】hint1:“”行代表为用户输入hint2:该题为离线评测,程序提交过后不会立即得到成绩,请耐心等待批改/*===================================================================*/#includestdio.h#includestdlib.hintmain(){intguess,ra,times,mark;charc,d;c='y';while((c=='y')||(c=='Y')){ra=rand()%100;times=1;for(mark=1;mark=10;mark++){if(scanf(%d,&guess)!=0){if(guess==ra){printf(Right,%dtime(s),times);mark=15;break;}elseif((guess=0)&&(guessra)){printf(Small\n);getchar();times++;}elseif((guess=100)&&(guessra)){printf(Big\n);getchar();times++;}else{printf(illegalinput\n);getchar();mark=times-1;}}else{printf(illegalinput\n);getchar();mark=times-1;}}if(mark!=15)printf(over\n);do{printf(continue?Y||N\n);scanf(%c,&c);if((c=='n')||(c=='N')||(c=='y')||(c=='Y'))d='a';else{printf(illegalinput\n);d='i';}}while(d=='i');}return0;}/*==================================================================*/无重复数字的三位数【问题描述】有0、1、2...9十个数字,编程计算这10个数字能组成多少个互不相同且无重复数字的三位数(如:123,124,125...),并列举所组成的三位数。【输出】输出共两行:第一行为符合条件的三位数个数第二行从小到大依次输出这些满足条件的三位数,相邻两个数之间用1个空格隔开。【注释】hint1:关注所输出的最后一个满足条件的三位数/*================================================================*/#includestdio.hintmain(){inti,j,k,n,s;printf(%d\n,10*9*8-9*8);n=0;for(i=1;i=9;i++){for(j=0;j=9;j++){if(i!=j)for(k=0;k=9;k++){if(i!=k&&j!=k&&n==647){s=100*i+10*j+k;printf(%d,s);n++;}elseif(i!=k&&j!=k&&n!=647){s=100*i+10*j+k;printf(%d,s);n++;}}}}/*printf(xx\n%d,n);*/return0;}/*==================================================================*/求最大公约数,从大到小试探法【问题描述】编程用试探法(要求从大到小试探)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数。【输入】输入由键盘输入,只有1行这一行有两个正整数m,n,代表待求最大公约数的两个数,输入格式为“[m],[n]”【输出】输出共1行,为m和n的最大公约数,输出格式为“Theresultis[所求最大公约数]!”【样例输入】2,1【样例输出】Theresultis1!【数据范围】保证100%的数据在int范围内【注释】hint1:请严格按照题目要求完成任务/*=============================================================*/#includestdio.hintgcd(intm,intn){inti,s,f;f=m;if(fn)f=n;for

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功