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