c语言第一次作业程序题pta文档格式.docx
《c语言第一次作业程序题pta文档格式.docx》由会员分享,可在线阅读,更多相关《c语言第一次作业程序题pta文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
a[i]);
{
if(a[i]>
=60)
count++;
sum=sum+a[i];
}
if(n!
=0)
aver=sum/n;
printf("
average=%.1f\ncount=%d\n"
aver,count);
}
5-3
大炮打蚊子
现在,我们用大炮来打蚊子:
蚊子分布在一个M\timesNM×
N格的二维平面上,每只蚊子占据一格。
向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意:
O
OXO
其中,X为炮弹落点中心,O为紧靠中心的四个有杀伤力的格子范围。
若蚊子被炮弹命中(位于X格),一击毙命,若仅被杀伤(位于O格),则损失一半的生命力。
也就是说,一次命中或者两次杀伤均可消灭蚊子。
现在给出蚊子的分布情况以及连续k发炮弹的落点,给出每炮消灭的蚊子数。
第一行为两个不超过20的正整数M和N,中间空一格,表示二维平面有M行、N列。
接下来M行,每行有N个0或者#字符,其中#表示所在格子有蚊子。
接下来一行,包含一个不超过400的正整数k,表示发射炮弹的数量。
最后k行,每行包括一发炮弹的整数坐标x和y(0\le≤x<
<
M,0\le≤y<
N),之间用一个空格间隔。
对应输入的k发炮弹,输出共有k行,第i行即第i发炮弹消灭的蚊子数。
56
00#00#
000###
00#000
000000
2
12
14
inti,j,m,jg,n,x[202],y[202],str[202][202];
charSTR[202][202];
%d%d"
m,&
for(j=0,i=0;
m;
i++,j++)
if(j==n)break;
%s"
STR[i]);
for(j=0;
j<
j++)
{
str[i][j]=-1;
}
if(STR[i][j]=='
#'
)
str[i][j]=2;
jg);
jg;
%d%d"
x[i],&
y[i]);
intxd,yd,sum=0;
for(j=0;
sum=0;
xd=x[j];
yd=y[j];
if(xd>
=0&
&
xd<
m&
yd>
yd<
n)
if(str[xd][yd]==2)
{
sum++;
str[xd][yd]=-1;
}
else
if(str[xd][yd]==1)
{
sum++;
str[xd][yd]=-1;
}
if(xd-1>
=m&
if(str[xd-1][yd]==2||str[xd-1][yd]==1)
str[xd-1][yd]=str[xd-1][yd]-1;
if(str[xd-1][yd]==0)
str[xd-1][yd]=-1;
if(xd+1<
xd>
=-1&
if(str[xd+1][yd]==1||str[xd+1][yd]==2)
str[xd+1][yd]=str[xd+1][yd]-1;
if(str[xd+1][yd]==0)
str[xd+1][yd]=-1;
yd-1>
=n)
if(str[xd][yd-1]==1||str[xd][yd-1]==2)
str[xd][yd-1]=str[xd][yd-1]-1;
if(str[xd][yd-1]==0)
str[xd][yd-1]=-1;
yd+1<
n&
=-1)
if(str[xd][yd+1]==1||str[xd][yd+1]==2)
str[xd][yd+1]=str[xd][yd+1]-1;
if(str[xd][yd+1]==0)
str[xd][yd+1]=-1;
printf("
%d\n"
sum);
return0;
5-4
人民币兑换
1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,会有很多种兑换方案。
请编写程序给出各种兑换方案。
输入为一个正整数n,表示要求输出前n种可能的方案。
方案的顺序,是按照5分硬币从少到多排列的。
显示前n种方案中5分、2分、1分硬币各多少枚。
每行显示一种方案,数字之间空一格,最后一个数字后没有空格。
注意:
如果全部方案不到n种,就顺序输出全部可能的方案。
14653
24256
33859
43462
53065
inti,j,k,n,a;
for(i=1;
=n;
for(j=0;
=75;
for(k=0;
k<
=150;
k++)
if(5*i+j*2+k==150&
i+j+k==100)
printf("
%d%d%d\n"
i,j,k);
5-5
计算分段函数[2]
(10分)
本题目要求计算下列分段函数f(x)f(x)的值:
注:
可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
输入在一行中给出实数x。
在一行中按“f(x)=result”的格式输出,其中x与result都保留两位小数。
输入样例1:
10
输出样例1:
f(10.00)=3.16
输入样例2:
-0.5
输出样例2:
f(-0.50)=-2.75
math.h>
floatx,y;
%f"
x);
if(x>
y=sqrt(x);
else
y=pow(x+1,2)+2*x+1/x;
f(%.2f)=%.2f\n"
x,y);
5-6
厘米换算英尺英寸
如果已知英制长度的英尺footfoot和英寸inchinch的值,那么对应的米是(foot+inch/12)\times0.3048(foot+inch/12)×
0.3048。
现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?
别忘了1英尺等于12英寸。
输入格式:
输入在一行中给出1个正整数,单位是厘米。
输出格式:
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
输入样例:
170
输出样例:
#include<
intmain(){
intcmlen;
cmlen);
intfoot=cmlen/100.0/0.3048;
intinch=(cmlen/100.0/0.3048-foot)*12;
%d%d\n"
foot,inch);
return0;
5-8
单词长度
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。
你要输出每个单词的长度。
这里的单词与语言无关,可以包括各种符号,比如it'
s算一个单词,长度为4。
注意,行中可能出现连续的空格;
最后的.不计算在内。
输入在一行中给出一行文本,以.结束
提示:
用scanf("
%c"
...);
来读入一个字符,直到读到.为止。
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
It'
sgreattoseeyouhere.
452334
方法一
{
inti=0;
charstr;
while
(1)
str);
if(str=='
.'
if(i!
i);
\n"
);
break;
if(str=='
'
%d"
i=0;
i++;
方法二
string.h>
charstr[520];
inti,j=0,k,g=0;
;
str[i]);
if(str[i]=='
)
break;
k=i;
for(i=i-1;
i>
=0;
i--)
g++;
else
break;
=k;
if(j!
printf("
j);
}break;
j=0;
if(i<
k-g)
"
j++;
}
}#include<
{
charc,firstflag=1;
intcount=0;
c);
while(c!
='
if(c=='
{
if(count!
=0)
{
if(firstflag==1)
{
count);
firstflag=0;
}
else
%d"
count=0;
}
else
count++;
if(count!
=0)
if(firstflag==1)
printf("
}
方法三
stdbool.h>
charch;
inti;
booll;
l=false;
i=0;
while((ch=getchar())&
ch!
if(ch!
elseif(i!
if(l)
i);
l=true;
if(i!
5-9
爬动的蠕虫
一条蠕虫长1寸,在一口深为N寸的井的底部。
已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。
在休息的过程中,蠕虫又下滑了D寸。
就这样,上爬和下滑重复进行。
请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。
初始时,蠕虫是趴在井底的(即高度为0)。
输入在一行中顺序给出3个正整数N、U、D,其中D<
U,N不超过100。
在一行中输出蠕虫爬出井的时间,以分钟为单位。
1231
11
intN,U,D,L,time;
%d%d%d"
N,&
U,&
D);
time=L=0;
while(L<
N)
time++;
L=L+U;
if(L>
=N)
L=L-D;
time);
5-10
字符串字母大小写转换
本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入为一个以“#”结束的字符串(不超过30个字符)。
在一行中输出大小写转换后的结果字符串。
HelloWorld!
123#
hELLOwORLD!
123
inti,k;
chara[3000];
30000;
if(a[i]=='
{k=i;
}}
30;
if('
A'
=a[i]&
a[i]<
='
Z'
{a[i]=a[i]+32;
a'
z'
{a[i]=a[i]-32;
elsea[i]=a[i];
k;
{printf("
a[i]);
5-11
找最长的字符串
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。
输入第一行给出正整数N;
随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
在一行中用以下格式输出最长的字符串:
Thelongestis:
最长的字符串
如果字符串的长度相同,则输出先输入的字符串。
charstr[10000][100];
intN,i,j,k=0,m;
N);
=N;
80;
scanf("
str[i][j]);
if(str[i][j]=='
\n'
break;
for(i=0;
if(str[i][j]=='
if(j>
k)
k=j;
m=i;
printf("
str[m][i]);
return0;
4-1
使用函数计算两个复数之积
若两个复数分别为:
c_1=x_1+y_1ic1=x1+y1i和c_2=x_2+y_2ic2=x2+y2i,则它们的乘积为
c_1\timesc_2=(x_1x_2-y_1y_2)+(x_1y_2+x_2y_1)ic1×
c2=(x1x2−y1y2)+(x1y2+x2y1)i。
本题要求实现一个函数计算两个复数之积。
函数接口定义:
doubleresult_real,result_imag;
voidcomplex_prod(doublex1,doubley1,doublex2,doubley2);
其中用户传入的参数为两个复数x1+y1ii和x2+y2ii;
函数complex_prod应将计算结果的实部存放在全局变量result_real中、虚部存放在全局变量result_imag中。
裁判测试程序样例:
intmain(void)
doubleimag1,imag2,real1,real2;
%lf%lf"
&
real1,&
imag1);
real2,&
imag2);
complex_prod(real1,imag1,real2,imag2);
productofcomplexis(%f)+(%f)i\n"
result_real,result_imag);
voidcomplex_prod(doublex1,doubley1,doublex2,doubley2)
result_real=x1*x2-y1*y2;
result_imag=x1*y2+x2*y1;
4-2
计算存款利息-genlib
本题要求提交main函数,实现以下功能:
读入存款金额money、存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前):
interest=money\times(1+rate)^{year}-moneyinterest=money×
(1+rate)year−money
输出时保留2位小数。
你需要提交一个完整的main函数,但不要修改下列函数提示中已经给出的内容。
函数接口定义及提示:
intmain(void)
intmoney,year;
doubleinterest,rate;
/*--你需要实现的代码--*/
interest=%.2f\n"
interest);
#include"
genlib.h"
simpio.h"
/*你的代码将被嵌在这里*/
输入样例(括号内为说明):
1000(money=1000)
3(year=3)
0.025(rate=0.025)
interest=76.89
money);
year);
%lf"
rate);
interest=money*pow((1+rate),year)-money;
4-3
提桶寻宝
给你准备好一个小桶,告诉你一片广袤的天地,随手一指,挖宝去吧~
说计算机话!
好吧,题目是这样的:
假设一个二维区域内藏有财宝,对于给定的此前寻到的财宝数量以及坐标(x,y),按照以下规则在该位置寻回财宝,并更新财宝数量。
规则:
∙如果x、y均为奇数,则获得原有三分之一数量的财宝,小数部分忽略不计
∙如果x、y均为偶数,则获得5财宝
∙如果x、y奇偶性不同,则不获得财宝
财宝数量、坐标x、坐标y都是int类型范围内的非负整数,在同一个位置可以重复寻找并获得财宝。
intgetTreasure(int*pBucket,intx,inty);
其中,整型参数x、y表示坐标,指针型参数pBucket指向财宝计数的整型变