ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:26.51KB ,
资源ID:10197214      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10197214.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言基础练习题及代码.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言基础练习题及代码.docx

1、C语言基础练习题及代码读前须知:1.此文档为UP主在为期11周的c语言学习课程中做过的在线测评练习题,题目和UP主自己写的代码都在这里。2.由于水平有限,所用的算法并不是很简洁,部分题目是暴力循环破解的。精益求精者请自行思考或XX。3.由于课业紧张,写的时候几乎没有写注释,排版也比较紧凑,这些可能会给读者的理解带来困难,在此先说一声抱歉。4.由于老师教的不好,学习过程中不大愉悦,因此用了一些恶趣味的单词作为变量名泄愤,恳请不要在意这些细节5.由于学校以在线测评的方式考核,UP主并没有考虑各种人性化的细节例如输入范围限制,输入提示等。如果程序是写给人用的,请务必考虑这些人性化设置。6.本文档仅供

2、各位网友参考学习c语言之用,读者擅自用作他途所造成的一切不良后果与UP主无关。身高预测【问题描述】父母都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关设fatH为其父身高,motH为其母身高,身高预测公式为男性成人时身高=(fatH+motH)*0.54 cm女性成人时身高=(fatH*0.923+motH)/2 cm此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生习惯,那么可增加身高1.5%。请编程利用给定公式和身高预测方法对身高进行预测。【输入】输入由键盘

3、输入,共5行。第一行有一个字符sex,代表用户的性别(F或f代表女性,M或m代表男性)第二行有一个实数fatH,代表父亲身高第三行有一个实数motH,代表母亲身高第四行有一个字符spor,代表是否喜爱体育锻炼(Y或y代表喜爱锻炼,N或n代表不喜爱锻炼)第五行有一个字符diet,代表是否有良好的饮食习惯(Y或y代表饮食习惯良好,N或n代表饮食习惯不好)【输出】输出只有1行,为所预测的身高hei(不保留小数),输出格式为Your future height will be hei(cm)【样例输入】f176160yy【样例输出】Your future height will be 167(cm)【

4、数据范围】对于fatH,motH,hei,保证100%的数据不超过double类型的范围对于sex,spor,diet,保证没有非法数据【注释】hint1: 数据输入时请考虑n的影响hint2: cms系统将所有warning均视为errorhint3: main()函数请使用int main(),否则会提示编译错误。/*=*/#includeint main() double fatH,motH,hei,in; char sex,spor,diet,beyond; scanf(%cn%lfn%lfn%cn%c,&sex,&fatH,&motH,&spor,&diet); in=1.0; be

5、yond=i; if (sex=F)|(sex=f) hei=(fatH*0.923+motH)/2; else if (sex=M)|(sex=m) hei=(fatH+motH)*0.54; else beyond=e; if (spor=y)|(spor=Y) in=in+0.02; else if (spor=n)|(spor=N) in=in; else beyond=e; if (diet=y)|(diet=Y) in=in+0.015; else if (diet=n)|(diet=N) in=in; else beyond=e; hei=hei*in; if (beyond!=

6、e) printf(Your future height will be %.0lf(cm),hei); else printf(the data you input is wrong,please check it out and input again.); return 0;/*=*/猜数游戏1【问题描述】编程由计算机生成一个1100之间的整数请用户猜,若猜对则结束游戏,并输出用户猜测次数(输出格式:“Right, 猜测次数 time(s)”);若猜错则给出提示若用户所猜数偏大,则输出“Big”,否则输出“Small”。一次游戏最多可以猜10次,若经过10次仍未猜中的话,输出“over”

7、,并结束游戏。【样例过程1】50Big25Small30Small40Small45Big42Big41Right, 7 time(s)【样例过程2】1Small2Small3Small4Small5Small6Small7Small8Small9Small10Smallover【注释】hint1: “”行代表为用户输入hint2: 请使用“do while”循环实现hint3: 该题为离线评测,程序提交过后不会立即得到成绩,请耐心等待批改/*=*/#include#includeint main() int guess,ra,times; ra=rand()%100; times=1; pr

8、intf(please guess a number in 0100n); do scanf( %d,&guess); if (guess=ra) printf(Right,%d time(s),times); times=12; break; else if (guessra) printf(Smalln); else printf(Bign); times+; while (times50Small75Small80Small90Small95Small98Right, 6 time(s)continue? Y | NY50Small75Big60Big55Small57Small58Sm

9、all59Right, 7 time(s)continue? Y | NN【样例过程2】aillegal input1Small2Small3Small4Small5Small6Small7Small8Small9Small10Smallovercontinue? Y | Nacontinue? Y | NN【注释】hint1: “”行代表为用户输入hint2: 该题为离线评测,程序提交过后不会立即得到成绩,请耐心等待批改/*=*/#include#includeint main() int guess,ra,times,mark; char c,d; c=y; while (c=y)|(c=

10、Y) ra=rand()%100; times=1; for (mark=1;mark=0)&(guessra) printf(Smalln); getchar(); times+; else if (guessra) printf(Bign); getchar(); times+; else printf(illegal inputn); getchar(); mark=times-1; else printf(illegal inputn); getchar(); mark=times-1; if (mark!=15) printf(overn); do printf(continue?Y

11、|Nn); scanf( %c,&c); if (c=n)|(c=N)|(c=y)|(c=Y) d=a; else printf (illegal inputn); d=i; while (d=i); return 0;/*=*/无重复数字的三位数【问题描述】有0、1、2.9十个数字,编程计算这10个数字能组成多少个互不相同且无重复数字的三位数(如:123,124,125.),并列举所组成的三位数。【输出】输出共两行:第一行为符合条件的三位数个数第二行从小到大依次输出这些满足条件的三位数,相邻两个数之间用1个空格隔开。【注释】hint1: 关注所输出的最后一个满足条件的三位数/*=*/#inc

12、ludeint main() int i,j,k,n,s; printf(%dn,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+; else if (i!=k&j!=k&n!=647) s=100*i+10*j+k; printf(%d ,s); n+; /*printf(xxn%d,n);*/ return 0;/*=*/求最大公约数,从大到小试探法【问题描述】编程用试探法(要

13、求从大到小试探)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数。【输入】输入由键盘输入,只有1行这一行有两个正整数m,n,代表待求最大公约数的两个数,输入格式为“m,n”【输出】输出共1行,为m和n的最大公约数,输出格式为“The result is 所求最大公约数!”【样例输入】2,1【样例输出】The result is 1!【数据范围】保证100%的数据在int范围内【注释】hint1: 请严格按照题目要求完成任务/*=*/#includeint gcd(int m,int n)int i,s,f;f=m;if (f=1;i-) if (m%i=0&n%i=0) s=i;

14、break;return s;int main()int mm,nn,lzsb;scanf(%d,%d,&mm,&nn);lzsb=gcd(mm,nn);printf(The result is %d!,lzsb);/*=*/求最大公约数,辗转相除法【问题描述】编程用辗转相除法(不使用递归)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数。【输入】输入由键盘输入,只有1行这一行有两个正整数m,n,代表待求最大公约数的两个数,输入格式为“m,n”【输出】输出共1行,为m和n的最大公约数,输出格式为“The result is 所求最大公约数!”【样例输入】2,1【样例输出】The

15、result is 1!【数据范围】保证100%的数据在int范围内【注释】hint1: 请严格按照题目要求完成任务/*=*/#includeint gcd(int m,int n)int illness,kill,death,shit;illness=m;if (illnessn) illness=n;kill=m;else kill=n;do shit=kill%illness; kill=illness; illness=shit; while (shit!=0);return kill;int main()int mm,nn,doubi;scanf(%d,%d,&mm,&nn);dou

16、bi=gcd(mm,nn);printf(The result is %d!,doubi);/*=*/求最大公约数,递归【问题描述】编程用辗转相除法(使用递归调用)实现函数gcd(m,n),其功能为求解正整数m、n的最大公约数。【输入】输入由键盘输入,只有1行这一行有两个正整数m,n,代表待求最大公约数的两个数,输入格式为“m,n”【输出】输出共1行,为m和n的最大公约数,输出格式为“The result is 所求最大公约数!”【样例输入】2,1【样例输出】The result is 1!【数据范围】保证100%的数据在int范围内【注释】hint1: 请严格按照题目要求完成任务/*=*/#

17、includeint gcd(int m,int n)int dawa,erwa,shit;dawa=m;if (dawan) dawa=n;erwa=m;else erwa=n;shit=dawa%erwa;if (shit!=0) erwa=gcd(erwa,shit);return erwa;int main()int dou,bi,doubi;scanf(%d,%d,&dou,&bi);doubi=gcd(dou,bi);printf(The result is %d!,doubi);return 0;/*=*/猴子分桃 UP主吐槽:这些天生神力的猴子能一次搬上亿只桃子,请考虑数据超限

18、的问题,题目所说的数据范围不够用。 【问题描述】 有1堆桃子共 m 个,由 n 只猴子分配这些桃子。每次到达桃子堆放地的猴子只有1只,而且每个猴子都会平均分 1 次桃子。第1只到达的猴子将桃子平均分成 n 等份,但发现多 k ( k n )个,于是,将多余的k个扔掉,然后拿走其中的1份。第2只猴子同样将剩余的桃子又分成 n 等份,也发现多 k 个,并同样将多余的 k 个扔掉,然后拿走其中1份。之后的每只猴子都这样(将剩余的桃子又分成 n 等份,也发现多 k 个,并将多余的 k 个扔掉,然后拿走其中1份)。现在假设最后一只猴子分配后至少可以拿走1个桃子,请根据输入的 n 和 k值,编程计算最小的

19、 m。(比如,n=3,k=1,则最小的m是25,最后一只猴子分得3个) 【输入】 输入由键盘输入,共1行 这一行由两个整数n和k组成,分别代表n只猴子和多余的k个桃子 【输出】 输出只有一行,为所计算的m 【样例输入】 3 1 【样例输出】 25 【数据范围】 保证100%数据不超过int范围/*=*/#includeint main()long m,n,k,i,st,ma,ml;scanf(%ld %ld,&n,&k);ma=2147483647;for (st=1;st=1000000;st+) m=st*n+k; ml=0; for (i=2;i=n;i+) ml=m%(n-1); if

20、 (ml=0) m=m*n/(n-1)+k; else m=2147483647; break; /*printf(%dn,m);*/ if (mma) ma=m; printf(%d,ma);return 0;/*=*/约瑟夫问题【问题描述】n个人围成一圈,顺序编号。从第一个人开始从1到3报数,凡报到3的人退出圈子,编程求解最后留下的人的初始编号。【输入】输入由键盘输入,只有一行这一行有一个正整数n,代表n个人围成一圈【输出】输出共一行,为最后留下来的那个人的编号【样例输入】5【样例输出】4【数据范围】保证100%数据 2=n=200/*=*/#includeint main()int id

21、iot201;int i,san,left,db;scanf(%d,&db);for (i=0;idb;i+) idioti=0;i=-1;left=db;san=0;while(left!=1)i+;if (i=db) i=0;if (idioti=0) san+; if (san=3) san=0; idioti=1; left-; for (i=0;idb;i+)if (idioti=0) printf(%d,i+1);return 0;/*=*/约瑟夫问题,链表法【问题描述】n个人围成一圈,顺序编号。从第一个人开始从1到3报数,凡报到3的人退出圈子,编程求解最后留下的人的初始编号。(要求用链表法)【输入】输入由键盘输入,只有一行这一行有一个正整数n,代表n个人围成一圈【输出】输出共一行,为最后留下来的那个人的编号【样例输入】5【样例输出】4【数据范围】保证100%数据 2=n=200/*=*/#include#includeint hollyshit=0;struct fucklbint data;struct fucklb *nxx;struct fucklb *App(struct fucklb *head)struct fucklb *ppp=NULL , *ppr=hea

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1