从坐牢到入门的程序设计(6)
开始时间2023-06-25 10:34:16
结束时间2023-06-25 14:48:42
前言:今天高考出成绩了,有什么想问的可以随时咨询我!
L1-025 正整数A+B
一、题目编号及题目说明
二、程序功能测试及说明
给两个输入,如果都是整数输出它们的和,若出现一个非整数该位置为?结果也为?。
三、程序设计思路及结构说明
声明字符串a,b,整型a1,b1,设置标志物flag和nb分别置为1,做循环处理a,若字符串中字符出现0~9之外的东西将标志物flag置为0并结束循环,将该字符转为整型累加如a1,同理对b进行操作,需要格外注意测试点3,测试点三为123 123 auioedfhawduifn,这种情况不做处理会出现123+123=246,但结果应该是123+?=?,所以针对字符串b的操作吸收时应该用getline函数,当然循环次数要多设置一次以判断后一个数。当两个标志物都是1,这时没有?按照标准求和即可,当有一个标志物为0对应位置应该置为?,其他情况?+?=?。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { string a,b; cin>>a; getline(cin,b); int a1=0,b1=0; int flag=1,nb=1,t=1; for (int i = a.length()-1; i>=0; i--) { if (a[i] < '0' || a[i] > '9') { flag = 0; break; } else { a1 += t * (a[i] - '0'); t *= 10; } } if (a1 > 1000 || a1 < 1) { flag = 0; } t = 1; for (int i = b.length()-1; i>=1; i--) { if (b[i] < '0' || b[i] > '9') { nb = 0; break; } else { b1 += t * (b[i] - '0'); t *= 10; } } if (b1 > 1000 || b1 < 1) { nb = 0; } //printf("%d %d\n",a1,b1); if (flag == 1 && nb == 1) { printf("%d + %d = %d", a1, b1, a1 + b1); } else if (flag==0&&nb==1) { printf("? + %d = ?", b1); } else if (flag==1&&nb==0) { printf("%d + ? = ?", a1); } else { printf("? + ? = ?"); } printf("\n"); return 0; }
五、题目评分
L1-026 I Love GPLT
一、题目编号及题目说明
二、程序功能测试及说明
功能是隔行输出一句话。
三、程序设计思路及结构说明
用printf输出话就行。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { printf("I\n \nL\no\nv\ne\n \nG\nP\nL\nT"); return 0; }
五、题目评分
L1-027 出租
一、题目编号及题目说明
二、程序功能测试及说明
由所给电话号码给出两个字符串。
三、程序设计思路及结构说明
首先定义一个函数,功能是从大到小排序并剔除重复数字,并将该数组赋值。主函数内以字符串的形式吸收电话号码,用字符串a吸收由函数操作的字符串,并按格式输出,最后输出换行。接着分别处理每一个字符串中的字符,从第一个字符开始若与字符串a某字符相同输出该字符的下标。最后输出换行。
四、程序源代码
#include<bits/stdc++.h> using namespace std; std::string sortAndRemoveDuplicates(const std::string& input) { std::vector<char> chars(input.begin(), input.end()); std::sort(chars.rbegin(), chars.rend()); // 从大到小排序 auto last = std::unique(chars.begin(), chars.end()); // 去重 chars.erase(last, chars.end()); std::string result(chars.begin(), chars.end()); // 转换回字符串 return result; } int main() { string s; cin>>s; int i=0,b[11]; string a = sortAndRemoveDuplicates(s); cout <<"int[] arr = new int[]{"; for(i=0;i<a.length();i++) { printf("%c",a[i]); if(i<a.length()-1) { printf(","); } }cout <<"};"<<endl; cout <<"int[] index = new int[]{"; int j=0; for(i=0;i<s.length();i++) { for(j=0;j<a.length();j++) { if(s[i]==a[j]) { printf("%d",j); if(i<s.length()-1) { printf(","); } } } }cout <<"};"<<endl; return 0; }
五、题目评分
L1-028 判断素数
一、题目编号及题目说明
二、程序功能测试及说明
第一行给出一个整数,以该整数为个数输出几个整数并进行判断,若是素数输出yes,反之输出No。
三、程序设计思路及结构说明
以n吸收所给整数,以n为循环上限做循环,内层循环以a吸收一个整数,定义一个0值的标志物flag,若a小于2将标志物置为1,若a不为素数将标志物置为1,判断完毕后,当标志物为1输出No,其他情况输出Yes。循环结束return 0.
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; for(int i=0;i<n;i++) { int a; cin>>a; int flag=0; if(a<2) { flag=1; } for(int j=2;j<sqrt(a);j++) { if(a%j==0) { flag=1; break; } } if(flag==1) { printf("No\n"); } else printf("Yes\n"); } return 0; }
五、题目评分
L1-029 是不是太胖了
一、题目编号及题目说明
二、程序功能测试及说明
由所给数字进行相应操作,输出标准体重。
三、程序设计思路及结构说明
首先吸收该数n,声明一个浮点数a,用n进行相关运算并将结果赋值给a,最后以.1的形式输出。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; float a; a=(n-100)*0.9*2; printf("%.1f\n",a); }
五、题目评分
L1-030 一帮一
一、题目编号及题目说明
二、程序功能测试及说明
用于实现一个配对的功能。用户输入一些学生信息,包括性别和姓名,在一对一的基础上进行配对,并输出配对结果。
三、程序设计思路及结构说明
- 首先,通过
#include <bits/stdc++.h>
引入了标准C++库的所有头文件。 - 接下来,定义了一个名为
stu
的结构体,用于存储学生的性别、身份标识和姓名等信息。 - 在
main
函数中,首先声明了变量n
存储学生数量,以及s
数组用于存储学生信息。 - 然后,用户输入学生数量
n
。 - 使用
for
循环遍历n
次,分别读取学生的性别和姓名,并将身份标识设置为初始值0。 - 接下来,使用另一个
for
循环进行配对操作。循环从第一个学生开始,输出其姓名并将身份标识设置为1。然后,从最后一个学生开始向前遍历直到达到数组的中间位置,找到与当前学生性别不同且未配对的学生,并输出其姓名。然后将该学生的身份标识设置为1,并跳出内层循环。 - 最后,程序返回0,结束执行。
四、程序源代码
#include<bits/stdc++.h> using namespace std; struct stu { int sex, iden;//性别、访问标识 char str[9];//姓名 }; int main() { int n; stu s[51]; cin >> n; for (int i = 0; i < n; i++) { cin >> s[i].sex >> s[i].str; s[i].iden = 0; } for (int j = 0; j < n / 2; j++) { cout << s[j].str << " "; s[j].iden = 1; for (int k = n - 1; k >= n / 2; k--) { if (s[k].iden == 0 && s[k].sex != s[j].sex) { cout << s[k].str << endl; s[k].iden = 1; break; } } } return 0; }