用天梯赛打开暑假生活的第十二天
从坐牢到入门的程序设计(12)
开始时间2023-07-06 08:09:47
结束时间2023-07-06 11:07:16
前言:不该一早上醒来就刷题的,一整个恶心住了。
L1-056 猜数字
一、题目编号及题目说明
二、程序功能测试及说明
先输入一个数据个数,后前为名字后为数字输出平均数的二分之一,和离该数最近的人名。
三、程序设计思路及结构说明
- 从标准输入中读取整数 n。
- 使用 getchar() 函数读取换行符。
- 声明一个大小为 10000 的整数数组 a 和一个大小为 10000 的字符数组 p。
- 使用循环依次读取 n 对字符串和整数,存储到 p 数组和 a 数组中。
- 计算数组 a 中所有元素的和,保存到 sum 变量中。
- 计算平均值 c,即 sum / n / 2。
- 初始化 min 和 mini 变量为数组 a 中的第一个元素和索引。
- 遍历数组 a,找到离平均值 c 最近的元素,并记录其值和索引。
- 使用 printf() 函数输出结果,格式为 "%d %s\n",依次为 c 和 p[mini]。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; getchar(); int a[10000]; char p[10000][9]; int i=0; for(i=0;i<n;i++) { scanf("%s %d",&p[i],&a[i]); } int c,sum=0; for(i=0;i<n;i++) { sum+=a[i]; } c=sum/n/2; int min=0,mini=0; for(i=0;i<n;i++) { if(abs(a[i]-c)<abs(min-c)) { min=a[i]; mini=i; } } printf("%d %s\n",c,p[mini]); }
五、题目评分
L1-057 PTA使我精神焕发
一、题目编号及题目说明
二、程序功能测试及说明
程序功能为直接输出字符串,
三、程序设计思路及结构说明
无输入,直接输出字符串。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { printf("PTA shi3 wo3 jing1 shen2 huan4 fa1 !\n"); return 0; }
五、题目评分
L1-058 6翻了
一、题目编号及题目说明
二、程序功能测试及说明
对输入的字符串进行处理,并进行相应的替换操作。
三、程序设计思路及结构说明
- 声明整数变量 p 和 cnt,用于记录字符串的索引和连续出现的字符个数。
- 声明字符串变量 s,使用 getline() 函数从标准输入读取一行字符串。
- 使用 find() 函数在字符串 s 中查找字符 '6' 的出现位置,将结果保存到 p 变量中。
- 进入一个循环,当 p 不等于 -1 时执行以下操作: a. 初始化 cnt 为 0。 b. 在内层循环中,判断 s[p + cnt] 是否为字符 '6',若是则增加 cnt 的值。 c. 根据 cnt 的大小进行不同的替换操作:
- 如果 cnt 大于 3 且小于等于 9,则使用 replace() 函数将字符 '6' 替换为字符 '9',并将 p 的值增加 1。
- 如果 cnt 大于 9,则使用 replace() 函数将 cnt 个字符 '6' 替换为字符串 "27",同时增加 cnt 的值 2。 d. 更新 p 的值,使用 find() 函数在字符串 s 中查找字符 '6' 的出现位置。
- 循环结束后,输出修改后的字符串 s。
- 返回 0,表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int p = 0, cnt = 0; string s; getline(cin, s); p = s.find('6', p); while (p != -1) { cnt = 0; while (s[p + cnt] == '6') cnt++; if (cnt > 3 && cnt <= 9) s.replace(p, cnt, "9"), p++; else if (cnt > 9) s.replace(p, cnt, "27"), cnt += 2; else p += cnt; p = s.find('6', p); } cout << s << endl; return 0; }
五、题目评分
L1-059 敲笨钟
一、题目编号及题目说明
二、程序功能测试及说明
读取输入的数据,并根据一定的规则进行处理和输出。
三、程序设计思路及结构说明
- 声明整数变量 n,使用 cin 操作符从标准输入读取一个整数。
- 使用 cin.ignore() 跳过换行符。
- 声明整数变量 i,并初始化为 0,用作循环计数器。
- 进入一个循环,循环次数为 n: a. 声明字符串变量 p,使用 getline() 函数从标准输入读取一行字符串。 b. 声明整数变量 j、k 和 flag,分别用作循环索引和计数以及标记。 c. 进入一个内层循环,循环条件是 j 小于字符串 p 的长度:
- 判断当前字符是否为逗号 ',',若是,则判断前三个字符是否为 "gno",如果是,则将 flag 值增加 1。
- 判断当前字符是否为句点 '.',若是,则判断前三个字符是否为 "gno",如果是,则将 flag 值增加 1。 d. 判断 flag 的值是否等于 2,如果是:
- 声明整数变量 count 并初始化为 0,用于记录空格出现的次数。
- 从字符串 p 的末尾开始向前遍历,当遇到空格时,将 count 增加 1。
- 当 count 的值等于 3 时,将 count 更新为 p 的长度减去当前位置,然后跳出循环。
- 使用循环遍历输出 p 字符串中去掉最后 count 个字符的部分。
- 输出字符串 " qiao ben zhong.\n"。 e. 如果 flag 的值不等于 2,则输出字符串 "Skipped\n"。
- 循环结束后,程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; cin.ignore(); int i=0; for(i=0;i<n;i++) { string p; int j=0,k=0,flag=0; getline(cin,p); //cout<<p<<endl; for(j=0;j<p.length();j++) { if(p[j]==',') { //printf("%c%c%c\n",p[j],p[j-1],p[j-2]); if(p[j-1]=='g'&&p[j-2]=='n'&&p[j-3]=='o') { flag+=1; } } if(p[j]=='.') { //printf("%c%c%c\n",p[j],p[j-1],p[j-2]); if(p[j-1]=='g'&&p[j-2]=='n'&&p[j-3]=='o') { flag+=1; } } } if(flag==2) { int count=0; for(k=p.length();k>0;k--) { if(p[k]==' ') { count++; } if(count==3) { count=p.length()-k; break; } } for(k=0;k<(p.length()-count);k++) { printf("%c",p[k]); } printf(" qiao ben zhong.\n"); } if(flag!=2) { printf("Skipped\n"); } } }
五、题目评分
L1-060 心理阴影面积
一、题目编号及题目说明
二、程序功能测试及说明
从标准输入读取两个整数 a 和 b,计算并输出两个数之差的一半与100的积。
三、程序设计思路及结构说明
- 声明整数变量 a、b,使用 cin 操作符从标准输入读取两个整数。
- 声明整数变量 s。
- 使用算术运算符计算 a 和 b 的差,然后乘以 100,再除以 2,将结果赋值给变量 s。
- 使用 printf 函数输出变量 s 的值,并换行。
- 返回整数值 0,结束程序。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int a,b; cin>>a>>b; int s; s=(a-b)*100/2; printf("%d\n",s); return 0; }
五、题目评分
L1-061 新胖子公式
一、题目编号及题目说明
二、程序功能测试及说明
从标准输入读取两个浮点数 a 和 b,计算并根据一定的条件输出结果。
三、程序设计思路及结构说明
- 声明浮点数变量 a、b,使用 cin 操作符从标准输入读取两个浮点数。
- 声明浮点数变量 c。
- 使用算术运算符计算 a 除以 (b的平方),将结果赋值给变量 c。
- 使用条件语句判断变量 c 是否大于 25:
- 如果 c 大于 25,则使用 printf 函数输出保留一位小数的 c 的值,并在后面添加字符串 "PANG\n"。
- 否则,使用 printf 函数输出保留一位小数的 c 的值,并在后面添加字符串 "Hai Xing\n"。
- 返回整数值 0,结束程序。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { float a,b; cin>>a>>b; float c; c=a/(b*b); if(c>25) { printf("%.1f\nPANG\n",c); } else{ printf("%.1f\nHai Xing\n",c); } return 0; }
五、题目评分
L1-062 幸运彩票
一、题目编号及题目说明
二、程序功能测试及说明
从标准输入读取一个整数 n,然后循环 n 次进行操作。
三、程序设计思路及结构说明
- 声明字符串变量 s,用于存储输入的字符串。
- 使用 cin 操作符从标准输入读取字符串 s。
- 声明两个整数变量 a 和 b,初始化为 0。
- 进入一个循环,循环条件是 i 小于字符串 s 的长度:
- 当 i 小于 3 时,将字符转换为数字并加到变量 a 上。
- 当 i 大于等于 3 时,将字符转换为数字并加到变量 b 上。
- 使用条件语句判断变量 a 是否等于变量 b:
- 如果相等,输出字符串 "You are lucky!"。
- 否则,输出字符串 "Wish you good luck."。
- 循环结束后,程序正常结束。
四、程序源代码
#include <bits/stdc++.h> using namespace std; int main() { string s; int n, a, b; cin >> n; while (n--) { cin >> s; a = 0, b = 0; for (int i = 0; i < s.size(); i++) { if (i < 3) a += s[i] - '0'; else b += s[i] - '0'; } if (a == b) cout << "You are lucky!" << endl; else cout << "Wish you good luck." << endl; } return 0; }
五、题目评分
L1-063 吃鱼还是吃肉
一、题目编号及题目说明
二、程序功能测试及说明
从标准输入读取一个整数 n,然后进行相关操作。
三、程序设计思路及结构说明
- 声明整数变量 n、s、t、a 分别表示循环次数、身高、体重和性别。
- 使用 scanf 函数从标准输入读取一个整数 n。
- 进入一个循环,循环条件是 n 大于 0:
- 使用 scanf 函数从标准输入读取三个整数 a、s 和 t。
- 使用条件语句判断变量 a 的值:
- 如果 a 等于 1,即男孩:
- 根据身高 s 的不同范围输出对应的字符串。
- 根据体重 t 的不同范围输出对应的字符串。
- 如果 a 等于 0,即女孩:
- 根据身高 s 的不同范围输出对应的字符串。
- 根据体重 t 的不同范围输出对应的字符串。
- 如果 a 等于 1,即男孩:
- 每次循环结束后,n 减 1。
- 程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n,s,t,a;//用a表示男女,s表示身高,t表示体重,n表示循环次数 scanf("%d",&n); while(n--) { scanf("%d %d %d",&a,&s,&t); if(a==1)//判断是不是男孩 { if(s<130) printf("duo chi yu! "); if(s==130) printf("wan mei! "); if(s>130) printf("ni li hai! "); if(t<27) printf("duo chi rou!\n"); if(t==27) printf("wan mei!\n"); if(t>27) printf("shao chi rou!\n"); } if(a==0)//判断是不是女孩 { if(s<129) printf("duo chi yu! "); if(s==129) printf("wan mei! "); if(s>129) printf("ni li hai! "); if(t<25) printf("duo chi rou!\n"); if(t==25) printf("wan mei!\n"); if(t>25) printf("shao chi rou!\n"); } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧