C语言大赛题目精选带答案_精品文档Word文档格式.docx
- 文档编号:13140288
- 上传时间:2022-10-06
- 格式:DOCX
- 页数:15
- 大小:26.53KB
C语言大赛题目精选带答案_精品文档Word文档格式.docx
《C语言大赛题目精选带答案_精品文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言大赛题目精选带答案_精品文档Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
inttemp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
printf("
评委打分按顺序:
"
);
for(intm=0;
m<
10;
m++)//显示排序后结果
%d"
p[m]);
\n"
for(intk=1;
k<
k++)//求出去掉首尾的平均分
result+=p[k];
result/=count-2;
returnresult;
}
voidmain()
请输入10组评分:
intp[10];
inti;
for(i=0;
i++)//输入评分
{
输入评委%d打分:
i+1);
scanf("
%d"
&
p[i]);
}
doubleresult=Aver(p,10);
//计算平均分
\n平均分为%5.2f\n"
result);
1.11.打鱼还是晒网
中国有句俗语叫“三天打鱼两天晒网”。
某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
*问题分析与算法设计
根据题意可以将解题过程分为三步:
1)计算从1990年1月1日开始至指定日期共有多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3)根据余数判断他是在“打鱼”还是在“晒网”;
若余数为1,2,3,则他是在“打鱼”
否则是在“晒网”
在这三步中,关键是第一步。
求从1990年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。
闰年的方法可以用伪语句描述如下:
如果((年能被4除尽且不能被100除尽)或能被400除尽)
则该年是闰年;
否则不是闰年。
C语言中判断能否整除可以使用求余运算(即求模)
*程序与程序注释
intdays(structdateday);
structdate{
intyear;
intmonth;
intday;
};
structdatetoday,term;
intyearday,year,day;
Enteryear/month/day:
%d%d%d"
today.year,&
today.month,&
today.day);
/*输入日期*/
term.month=12;
/*设置变量的初始值:
月*/
term.day=31;
/*设置变量的初始值:
日*/
for(yearday=0,year=1990;
year<
today.year;
year++)
{
term.year=year;
yearday+=days(term);
/*计算从1990年至指定年的前一年共有多少天*/
}
yearday+=days(today);
/*加上指定年中到指定日期的天数*/
day=yearday%5;
/*求余数*/
if(day>
0&
&
day<
4)printf("
hewasfishingatthatday.\\n"
/*打印结果*/
elseprintf("
Hewassleepingatthatday.\\n"
intdays(structdateday)
staticintday_tab[2][13]=
{{0,31,28,31,30,31,30,31,31,30,31,30,31,},/*平均每月的天数*/
{0,31,29,31,30,31,30,31,31,30,31,30,31,},
};
inti,lp;
lp=day.year%4==0&
day.year%100!
=0||day.year%400==0;
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
for(i=1;
day.month;
i++)/*计算本年中自1月1日起的天数*/
day.day+=day_tab[lp];
returnday.day;
*运行结果
Enteryear/month/day:
19911025
Hewasfishingatday.
19921025
Hewassleepingatday.
19931025
Hewassleepingatday
2.12.抓交通肇事犯
一辆卡车违反交通规则,撞人后逃跑。
现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。
甲说:
牌照的前两位数字是相同的;
乙说:
牌照的后两位数字是相同的,但与前两位不同;
丙是数学家,他说:
四位的车号刚好是一个整数的平方。
请根据以上线索求出车号。
按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。
math.h>
inti,j,k,c;
=9;
i++)/*i:
车号前二位的取值*/
for(j=0;
j++)/*j:
车号后二位的取值*/
if(i!
=j)/*判断二位数字是否相异*/
{
k=i*1000+i*100+j*10+j;
/*计算出可能的整数*/
for(c=31;
c*c<
k;
c++);
/*判断该数是否为另一整数的平方*/
if(c*c==k)printf("
Lorry--No.is%d.\\n"
k);
/*若是,打印结果*/
}
Lorry_No.is7744
3.14.怎样存钱利最大
假设银行整存整取存款不同期限的月息利率分别为:
0.63%期限=1年
0.66%期限=2年
0.69%期限=3年
0.75%期限=5年
0.84%期限=8年
利息=本金*月息利率*12*存款年限。
现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。
*问题分析与算法
为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。
分析题意,设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为:
2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8
其中rateN为对应存款年限的利率。
根据题意还可得到以下限制条件:
0<
=i8<
=2
=i5<
=(20-8*i8)/5
=i3<
=(20-8*i8-5*i5)/3
=i2<
=(20-8*i8-5*i5-3*i3)/2
=i1=20-8*i8-5*i5-3*i3-2*i2
可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。
inti8,i5,i3,i2,i1,n8,n5,n3,n2,n1;
floatmax=0,term;
for(i8=0;
i8<
3;
i8++)/*穷举所有可能的存款方式*/
for(i5=0;
i5<
=(20-8*i8)/5;
i5++)
for(i3=0;
i3<
=(20-8*i8-5*i5)/3;
i3++)
for(i2=0;
i2<
=(20-8*i8-5*i5-3*i3)/2;
i2++)
{
i1=20-8*i8-5*i5-3*i3-2*i2;
term=2000.0*pow((double)(1+0.0063*12),(double)i1)
*pow((double)(1+2*0.0063*12),(double)i2)
*pow((double)(1+3*0.0069*12),(double)i3)
*pow((double)(1+5*0.0075*12),(double)i5)
*pow((double)(1+8*0.0084*12),(double)i8);
/*计算到期时的本利合计*/
if(term>
max)
{
max=term;
n1=i1;
n2=i2;
n3=i3;
n5=i5;
n8=i8;
}
}
Formaxinumprofit,heshouldsosavehismoneyinabank:
\\n"
madefixeddepositfor8year:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 大赛 题目 精选 答案 精品 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)