C语言基础练习题及代码.docx
《C语言基础练习题及代码.docx》由会员分享,可在线阅读,更多相关《C语言基础练习题及代码.docx(40页珍藏版)》请在冰豆网上搜索。
C语言基础练习题及代码
读前须知:
题目和UP主自己
此文档为UP主在为期11周的c语言学习课程中做过的在线测评练习题,
写的代码都在这里。
由于水平有限,思考或XX。
由于课业紧张,
所用的算法并不是很简洁,
写的时候几乎没有写注释,
学习过程中不大愉悦,
请不要在意这些细节,
由于学校以在线测评的方式考核,UP主并没有考虑各种人性化的细节例如输入范围限制,
输入提示等。
如果程序是写给人用的,请务必考虑这些人性化设置。
本文档仅供各位网友参考学习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(不保留小数),输出格式为Yourfutureheightwillbe
hei(cm)
【样例输入】f176160
【样例输出】
Yourfutureheightwillbe167(cm)
【数据范围】
对于fatH,motH,hei,保证100%的数据不超过double类型的范围
对于sex,spor,diet,保证没有非法数据
【注释】
hint1:
数据输入时请考虑\n的影响
hint2:
cms系统将所有warning均视为error
hint3:
main()函数请使用intmain(),否则会提示编译错误。
/*==================================================================*/
#include
intmain()
{
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】
>50
Big
>25
Small
>30
Small
>40
Small
>45
Big
>42
Big
>41
Right,7time(s)
【样例过程2】
>1
Small
>2
Small
>3
Small
>4
Small
>5
Small
>6
Small
>7
Small
>8
Small
>9
Small
>10
Small
over【注释】
hint1:
“>”行代表为用户输入
hint2:
请使用“dowhile”循环实现
hint3:
该题为离线评测,程序提交过后不会立即得到成绩,请耐心等待批改
/*=================================================================*/
#include
#include
intmain()
{
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(guesselseprintf("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】
>50
Small
>75
Small
>80
Small
>90
Small
>95
Small
>98
Right,6time(s)continue?
Y||N>Y
>50
Small
>75
Big
>60
Big
>55
Small
>57
Small
>58
Small
>59
Right,7time(s)continue?
Y||N>N
【样例过程2】
>a
illegalinput
>1
Small
>2
Small
>3
Small
>4
Small
>5
Small
>6
Small
>7
Small
>8
Small
>9
Small
>10
Small
over
continue?
Y||N
>a
continue?
Y||N
>N
【注释】
hint1:
“>”行代表为用户输入
hint2:
该题为离线评测,程序提交过后不会立即得到成绩,请耐心等待批改
/*===================================================================*/
#include
#includeintmain()
{
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)&&(guess{
printf("Small\n");
getchar();
times++;
}
elseif((guess<=100)&&(guess>ra)){
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...),并列举所组成的三位数。
【输出】
输出共两行:
第一行为符合条件的三位