文章目录

  • 161、单词长度 (15 分)
  • 162、表格输出 (5 分)
  • 163、装箱问题 (20 分)
  • 164、求交错序列前N项和 (15 分)
  • 165、求集合数据的均方差 (15 分)
  • 166、币值转换 (20 分)
  • 167、求矩阵的局部极大值 (15 分)
  • 168、查询水果价格 (15 分)
  • 169、混合类型数据格式化输入 (5 分)
  • 170、BCD解密 (10 分)
  • 171、串的模式匹配 (25 分)
  • 172、Say Hello to Integers (5 分)
  • 173、PTA使我精神焕发 (5 分)
  • 174、温度转换 (5 分)
  • 175、输出菱形图案 (5 分)
  • 176、吃鱼还是吃肉 (10 分)

原创不易,有用请点个赞,感谢各位!

161、单词长度 (15 分)

你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it’s算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

输入格式:
输入在一行中给出一行文本,以.结束

提示:用scanf("%c",…);来读入一个字符,直到读到.为止。

输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例:
It’s great to see you here.
输出样例:
4 5 2 3 3 4

#include<stdio.h>
int main()
{/* 这道题有四大最坑的点1. 第一个是只有一个单词的时候,开头不能有多余的空格,结尾有一个空格时,也一样2. 第二个就是当次数为0时不显示3. 第三是一定要注意空格不能有多余无论首、尾、还是中*/char c;int flag=1;   //控制空格打印不能多余int k=0;scanf("%c",&c);while(c!='.')   //如果只有一个点,那不需要显示了{if(c ==' '){if(k!=0){if(flag){printf("%d",k);flag=0; //第一个单词打印完后,后面就可以以 %d的形式来让末尾没有空格打印}else      {printf(" %d",k);}k=0;}}else{  k++;  }scanf("%c",&c);}if(k!=0)        //如果最后一个单词是空格不用打印{if(flag)      //负责防止首尾有多余空格{printf("%d",k);}else{printf(" %d",k);}}
}

162、表格输出 (5 分)

本题要求编写程序,按照规定格式输出表格。

输入格式:
本题目没有输入。

输出格式:
要求严格按照给出的格式输出下列表格:

Province Area(km2) Pop.(10K)

Anhui 139600.00 6461.00
Beijing 16410.54 1180.70
Chongqing 82400.00 3144.23
Shanghai 6340.50 1360.26
Zhejiang 101800.00 4894.00

#include<stdio.h>
int main()
{printf("------------------------------------\n");
printf("Province      Area(km2)   Pop.(10K)\n");
printf("------------------------------------\n");
printf("Anhui         139600.00   6461.00\n");
printf("Beijing        16410.54   1180.70\n");
printf("Chongqing      82400.00   3144.23\n");
printf("Shanghai        6340.50   1360.26\n");
printf("Zhejiang      101800.00   4894.00\n");
printf("------------------------------------\n");
}

163、装箱问题 (20 分)

输入格式:
输入第一行给出物品个数N(≤1000);第二行给出N个正整数s
​i
​​ (1≤s
​i
​​ ≤100,表示第i项物品的大小)。

输出格式:
按照输入顺序输出每个物品的大小及其所在的箱子序号,每个物品占1行,最后一行输出所需的箱子数目。

输入样例:
8
60 70 80 90 30 40 10 20
输出样例:
60 1
70 2
80 3
90 4
30 1
40 5
10 1
20 2
5

#include<stdio.h>
#include<string.h>
struct Love{int xiang;int ji;
}love[1001];
int main()
{int b[1000]={100};int max=0;int i,j;int first;int n;int num=0;int k=0;int a[100],one=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&love[i].xiang);}for(i=0;i<n;i++)b[i]=100;for(i=0;i<n;i++){for(j=0;j<n;j++){if(love[i].xiang<=b[j]){love[i].ji = j;   b[j]-=love[i].xiang;if(max<j)max=j;break;}}}for(i=0;i<n;i++){printf("%d %d\n",love[i].xiang,love[i].ji+1);}printf("%d\n",max+1);
}

164、求交错序列前N项和 (15 分)

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,结果保留三位小数。

输入样例:
5
输出样例:
0.917
作者: 陈建海
单位: 浙江大学
时间限制: 400 ms
内存限制: 64 MB

#include<stdio.h>
int main()
{int n;int i;int zi = 1,mu = 1;int flag=1;double sum=0;scanf("%d",&n);for(i=0;i<n;i++){sum+=zi*1.0/mu*flag;flag=-flag;zi+=1;mu+=2;}printf("%.3lf\n",sum);
}

165、求集合数据的均方差 (15 分)


输入格式:
输入首先在第一行给出一个正整数 N(≤10
​4
​​ ),随后一行给出 N 个正整数。所有数字都不超过 1000,同行数字以空格分隔。

输出格式:
输出这N个数的均方差,要求固定精度输出小数点后5位。

输入样例 1:
10
6 3 7 1 4 8 2 9 11 5
输出样例 1:
3.03974
输入样例 2:
1
2
输出样例 2:
0.00000

#include<stdio.h>
#include<math.h>
int main()
{int n;int i,j;double x=0;int a[10005];double result;int sum=0;double avg; scanf("%d",&n);for(i=0;i<n;i++){ scanf("%d",&a[i]);sum+=a[i];//printf("1");}avg = sum*1.0/n;for(i=0;i<n;i++){x += (a[i]-avg)*(a[i]-avg);//printf("2");}result = sqrt(x/n);printf("%.5lf\n",result);
}

166、币值转换 (20 分)

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:
输入在一行中给出一个不超过9位的非负整数。

输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:
813227345
输出样例1:
iYbQdBcScWhQdBeSf
输入样例2:
6900
输出样例2:
gQjB

这道题我没写对,没拿到满分,好像15分吧,我想纪念一下自己的代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{int num;int i,j,n,xing=0;char s[100];char str1[100],a=-1;int k=0;       //计算位数int flag=1;gets(s);int len = strlen(s);for(i=0;i<len;i++){num = s[i]-'0';if(num!=0){xing++;flag=0;}if(i==len-1 && num!=0)flag=1;}for(i=0;s[i]!='\0';i++){num = s[i]-'0';if(s[i]+=2)switch(num){case 0:str1[++a]='a';break;case 1:str1[++a]='b';break;case 2:str1[++a]='c';break;case 3:str1[++a]='d';break;case 4:str1[++a]='e';break;case 5:str1[++a]='f';break;case 6:str1[++a]='g';break;case 7:str1[++a]='h';break;case 8:str1[++a]='i';break;case 9:str1[++a]='j';break;}a++;k++;}/*for(i=0;i<k;i++)printf("%c",str1[i]);*/      //调试n=0;for(i=k*2-1;i>=0;){if(n==1 || n==5){str1[i]='S';}else if(n==2 || n==6){str1[i]='B';}else if(n==3 || n==7){str1[i]='Q';}else if(n==4){str1[i]='W';}else{str1[i]='Y';}n++;i-=2;}if(flag)for(i=0;i<k+k-1;i++)printf("%c",str1[i]);elsefor(i=0;i<k+k-1-xing*2+1;i++)printf("%c",str1[i]);
}

167、求矩阵的局部极大值 (15 分)

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

输入样例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
输出样例1:
9 2 3
5 3 2
5 3 4
输入样例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
输出样例2:
None 3 5

#include<stdio.h>
struct Love{int hang;int lie;int max;
}Max[200];
int main()
{int m,n;int i,j;int a[300][300];//int max[20],k=0;int k=0;int flag=0;scanf("%d%d",&m,&n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}for(i=0;i<m;i++){if(i==0)continue;if(i==m-1)break;for(j=0;j<n;j++){if(j==0||j==n-1)continue;if(a[i][j]>a[i-1][j] && a[i][j]>a[i+1][j] && a[i][j]>a[i][j+1] && a[i][j]>a[i][j-1]){Max[k].max=a[i][j];Max[k].hang=i+1;Max[k].lie=j+1;k++;flag=1;}}}if(flag!=0){for(i=0;i<k;i++){printf("%d %d %d\n",Max[i].max,Max[i].hang,Max[i].lie);}}else{printf("None %d %d\n",m,n);}
}

168、查询水果价格 (15 分)

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。

输入格式:
输入在一行中给出用户连续输入的若干个编号。

输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

输入样例1:
3 -1 0 2
输出样例1:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
输入样例2:
1 2 3 3 4 4 5 6 7 8
输出样例2:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20

#include<stdio.h>
int main()
{int i,j;int n;int x;printf("[1] apple\n");printf("[2] pear\n");printf("[3] orange\n");printf("[4] grape\n");printf("[0] exit\n");for(i=0;i<5;i++){scanf("%d",&x);if(x==0)break;if(x<0 || x>4)printf("price = 0.00\n");if(x==1)printf("price = 3.00\n");else if(x==2)printf("price = 2.50\n");else if(x==3)printf("price = 4.10\n");else if(x==4)printf("price = 10.20\n");}
}

169、混合类型数据格式化输入 (5 分)

本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。

输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。

输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70

#include<stdio.h>
int main()
{double a;int b;char c;double d;scanf("%lf%d %c%lf",&a,&b,&c,&d);printf("%c %d %.2lf %.2lf\n",c,b,a,d);
}

170、BCD解密 (10 分)

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!

现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

输入格式:
输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。

输出格式:
输出对应的十进制数。

输入样例:
18
输出样例:
12

#include<stdio.h>
int main()
{int n;int a[100000],k=0;int i,j;scanf("%d",&n);if(n==0){printf("0");return 0;}while(n!=0){a[k++]=n%16;n/=16;}for(i=k-1;i>=0;i--)printf("%d",a[i]);
}

171、串的模式匹配 (25 分)

给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。

本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:

数据0:小规模字符串,测试基本正确性;
数据1:随机数据,String 长度为 10
​5
​​ ,Pattern 长度为 10;
数据2:随机数据,String 长度为 10
​5
​​ ,Pattern 长度为 10
​2
​​ ;
数据3:随机数据,String 长度为 10
​5
​​ ,Pattern 长度为 10
​3
​​ ;
数据4:随机数据,String 长度为 10
​5
​​ ,Pattern 长度为 10
​4
​​ ;
数据5:String 长度为 10
​6
​​ ,Pattern 长度为 10
​5
​​ ;测试尾字符不匹配的情形;
数据6:String 长度为 10
​6
​​ ,Pattern 长度为 10
​5
​​ ;测试首字符不匹配的情形。
输入格式:
输入第一行给出 String,为由英文字母组成的、长度不超过 10
​6
​​ 的字符串。第二行给出一个正整数 N(≤10),为待匹配的模式串的个数。随后 N 行,每行给出一个 Pattern,为由英文字母组成的、长度不超过 10
​5
​​ 的字符串。每个字符串都非空,以回车结束。

输出格式:
对每个 Pattern,按照题面要求输出匹配结果。

输入样例:
abcabcabcabcacabxy
3
abcabcacab
cabcabcd
abcabcabcabcacabxyz
输出样例:
abcabcacabxy
Not Found
Not Found

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{char str1[1000001],str2[1000001];int i,n;gets(str1);scanf("%d",&n);getchar();for(i=0;i<n;i++){gets(str2);char *p=strstr(str1,str2);if(p!=NULL){for(;*p!='\0';p++)printf("%c",*p);printf("\n");}elseprintf("Not Found\n");}return 0;
}

172、Say Hello to Integers (5 分)

Say hello to integers? Yes! 你没看错! 现在我们来向整数说“你好~” 本题读入两个整数,然后输出对她们的问候语。

输入格式:
在一行中给出两个绝对值不超过32767的整数A和B,两数之间有一个空格

输出格式:
在一行中输出 “Hello, A and B!” (其中A和B用实际输入的整数代替)

输入样例:
1949 2015
输出样例:
Hello, 1949 and 2015!

#include<stdio.h>
int main(void)
{int n,m;scanf("%d%d",&n,&m);printf("Hello, %d and %d!\n",n,m);
}

173、PTA使我精神焕发 (5 分)

PTA使我精神焕发.jpg

以上是湖北经济学院同学的大作。本题就请你用汉语拼音输出这句话。

输入格式:
本题没有输入。

输出格式:
在一行中按照样例输出,以惊叹号结尾。

输入样例:

输出样例:
PTA shi3 wo3 jing1 shen2 huan4 fa1 !

#include<stdio.h>
int main()
{printf("PTA shi3 wo3 jing1 shen2 huan4 fa1 !\n");return 0;
}

174、温度转换 (5 分)

本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

输入格式:
本题目没有输入。

输出格式:
按照下列格式输出

fahr = 150, celsius = 计算所得摄氏温度的整数值

#include<stdio.h>
int main()
{int f=150;printf("fahr = 150, celsius = %d\n",5*(f-32)/9);return 0;
}

175、输出菱形图案 (5 分)

本题要求编写程序,输出指定的由“A”组成的菱形图案。

输入格式:
本题无输入

输出格式:
按照下列格式输出由“A”组成的菱形图案。

A
A A
A

#include<stdio.h>
int main()
{printf("  A\n");printf("A   A\n");printf("  A\n");
}

176、吃鱼还是吃肉 (10 分)



国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。

现在你要根据小宝宝的身高体重,给出补充营养的建议。

输入格式:
输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出一位宝宝的身体数据:

性别 身高 体重
其中性别是 1 表示男生,0 表示女生。身高和体重都是不超过 200 的正整数。

输出格式:
对于每一位宝宝,在一行中给出你的建议:

如果太矮了,输出:duo chi yu!(多吃鱼);
如果太瘦了,输出:duo chi rou!(多吃肉);
如果正标准,输出:wan mei!(完美);
如果太高了,输出:ni li hai!(你厉害);
如果太胖了,输出:shao chi rou!(少吃肉)。
先评价身高,再评价体重。两句话之间要有 1 个空格。

输入样例:
4
0 130 23
1 129 27
1 130 30
0 128 27
输出样例:
ni li hai! duo chi rou!
duo chi yu! wan mei!
wan mei! shao chi rou!
duo chi yu! shao chi rou!

#include<stdio.h>
int main()
{int a,s,h,w;scanf("%d",&a);while(a--){scanf("%d %d %d",&s,&h,&w);switch(s){case 1: if(h==130) printf("wan mei! ");else if(h<130) printf("duo chi yu! ");else if(h>130) printf("ni li hai! ");if(w==27) printf("wan mei!\n");else if(w<27) printf("duo chi rou!\n");else if(w>27) printf("shao chi rou!\n");break;case 0:if(h==129) printf("wan mei! ");else if(h<129) printf("duo chi yu! ");else if(h>129) printf("ni li hai! ");if(w==25) printf("wan mei!\n");else if(w<25) printf("duo chi rou!\n");else if(w>25) printf("shao chi rou!\n");break;}}return 0;
}

原创不易,有用请点个赞,感谢各位!

PTA 程序设计天梯赛(161~180题)相关推荐

  1. PTA 程序设计天梯赛(41~60题)

    文章目录 41.整除光棍 (20 分) 42. 装睡 (10 分) 43.矩阵A乘以B (15 分) 44. 倒数第N个字符串 (15 分) 45.打折 (5 分) 46. 2018我们要赢 (5 分 ...

  2. PTA程序设计天梯赛 L2题解报告(40/40)

    目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? L2-005 集合相似度 (25 分) L2-00 ...

  3. PTA 程序设计天梯赛【day2】

    L1 - 019 谁先倒下 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家 ...

  4. 团体程序设计天梯赛 L1-014 简单题

    L1-014 简单题(5 分) 这次真的没骗你 -- 这道超级简单的题目没有任何输入. 你只需要在一行中输出事实:This is a simple problem. 就可以了. 输入样例: 无 输出样 ...

  5. 团体程序设计天梯赛--个人总结

    这是本人对于打代码的一个总结. 团体程序设计天梯赛--5分题_星河欲转.的博客-CSDN博客 团体程序设计天梯赛--10分题_星河欲转.的博客-CSDN博客 团体程序设计天梯赛--15分题_星河欲转. ...

  6. PTA|团体程序设计天梯赛-练习题库集

    文章目录 关于爬取脚本的编写 L1-001 Hello World! (5 分) L1-002 打印沙漏 (15 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5 分) ...

  7. PTA团体程序设计天梯赛篇(五)---- 难题篇一(30分题目)

    PTA团体程序设计天梯赛 数据结构类型 L3-002 特殊堆栈(树状数组) L3-003 社交集群(并查集) 搜索 L3-004 肿瘤诊断(三维bfs) 确保bfs只遍历一次的方法 图论 L3-005 ...

  8. PTA团体程序设计天梯赛-练习集(3)

    PTA团体程序设计天梯赛-练习集 L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句"Hello World!"就可以 ...

  9. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  10. PTA团体程序设计天梯赛-练习集Level-1(参考代码C语言/Python版)

    本题目集截止到2022年天梯赛 受个人水平限制,<PTA团体程序设计天梯赛-练习集>中暂时只能把Level-1的题目做出来(也许有些Level-2的题可以写出来?)-我不是专门搞竞赛的,参 ...

最新文章

  1. python百度网盘-bypy-百度网盘Python客户端 linux
  2. Nginx学习笔记(三)
  3. vue路由跳转 返回上一级 this.$router.go(-1) 和返回到指定页面this.$router.push('/home')...
  4. 在你的andorid设备上运行netcore (Linux Deploy)
  5. 如何在一分钟内搞定面试官
  6. Word 模板 - 新建向导
  7. php db2 页面乱码_DB2代码页设置乱码的处理方法
  8. 产品固件(系统)升级——curl/wget
  9. Pod--初始化容器
  10. MATLAB下载安装
  11. sql 不允许保存更改 解决办法
  12. 使用java解压GZip文件
  13. (完美解决)Word标题的编号出现一条黑色竖线
  14. MHDD修复UNC和TIMEOUT
  15. 2022鲁大师评测沟通会开启汽车评测新赛道
  16. RVM怎么下载和管理ruby版本 - 猿码设计师 ruby rvm
  17. vue高德地图JS API 实现海量点标记展示
  18. 《数字图像处理》冈萨雷斯版 读书笔记(二)
  19. Win 10 宽带拨号,连接失败,提示错误1058
  20. react中使用AlipayJSBridge 支付宝支付调用接口在H5网页的应用

热门文章

  1. 轻重搭配 模拟 贪心
  2. spring 监听器
  3. weex入门指南--华岭
  4. AIO 开始不定时的抛异常: java.io.IOException: 指定的网络名不再可用
  5. 《构建之法》 第5.5 第6 第7章
  6. PAT:1013. 数素数 (20) AC
  7. SSH整合所需的jar包
  8. JAVA和JAVAC 命令行
  9. 好想看故乡夏夜的天空
  10. 英语六级修炼记录(不定时更新)