#输入输出
编写一段代码,实现一个二维数组的输出,要求同一行元素之间用空格间隔,但最后一个元素后没有空格,输出完后没有多余的回车。
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 4;
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << arr[i][j];
if (j != cols - 1) {
cout << " ";
}
}
if (i != rows - 1) {
cout << endl;
}
}
return 0;
}
输入描述:
输入包括两个正整数a,b(1 <= a, b <= 1000),输入数据包括多组。输出描述:
输出a+b的结果
#include<iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a >> b)
cout << a + b << endl;
}
数据范围:数据组数满足 1≤t≤100 ,数据大小满足 1≤a,b≤1000
输入描述:
输入第一行包括一个数据组数t(1 <= t <= 100) 接下来每行包括两个正整数a,b(1 <= a, b <= 1000)输出描述:
输出a+b的结果
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a, b;
for (int i = 1; i <= n; i++)
{
cin >> a >> b;
cout << a + b << endl;
}
}
数据范围:数据组数满足 1≤t≤100 , 数据大小满足 1≤n≤100
输入描述:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入输出描述:
输出a+b的结果
#include<iostream>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) {
if (a == 0 && b == 0)
break;
else
cout << a + b << endl;
}
}
数据范围:数据组数满足 1≤t≤100 ,每组数据中整数个数满足 1≤n≤100 ,每组数据中的值满足 1≤val≤100
输入描述:
输入数据包括多组。 每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。 接下来n个正整数,即需要求和的每个正整数。输出描述:
每组数据输出求和的结果
#include<iostream>
using namespace std;
int main() {
int n, x;
while (cin >> n) {
if (n == 0)
break;
int sum = 0;
while (n--) {
cin >> x;
sum += x;
}
cout << sum << endl;
}
}
数据范围:数据组数满足 1≤t≤100,每组数据中的整数个数满足 1≤n≤100 ,每个数据大小满足 1≤val≤100
输入描述:
输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。 接下来t行, 每行一组数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来n个正整数, 即需要求和的每个正整数。输出描述:
每组数据输出求和的结果
#include<iostream>
using namespace std;
int main() {
int n, x;
cin >> n;
while (n--) {
int sum = 0;
int a;
cin >> a;
while (a--) {
cin >> x;
sum += x;
}
cout << sum << endl;
}
}
数据范围: 1≤n≤1000 , 所有数都满足 1≤val≤1000
输入描述:
输入数据有多组, 每行表示一组输入数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来n个正整数, 即需要求和的每个正整数。输出描述:
每组数据输出求和的结果
#include<iostream>
using namespace std;
int main() {
int n, x;
while (cin >> n) {
int sum = 0;
while(n--){
cin >> x;
sum += x;
}
cout << sum << endl;
}
}
输入描述:
输入数据有多组, 每行表示一组输入数据。 每行不定有n个整数,空格隔开。(1 <= n <= 100)。输出描述:
每组数据输出求和的结果
#include<iostream>
using namespace std;
int main() {
int x, sum=0;
while (cin >> x) {
sum+=x;
if(cin.get()=='\n'){ //cin.get作用:从标准输入吸收任何字符(包括回车和空格),优先吸收cin缓存
cout<<sum<<endl;
sum=0;
}
}
}
输入描述:
输入有两行,第一行n 第二行是n个字符串,字符串之间用空格隔开输出描述:
输出一行排序后的字符串,空格隔开,无结尾空格
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
string temp;
cin>>n;
vector<string> str(n);
for (int i=0; i<n; i++)
{
cin>>str[i];
}
sort(str.begin(), str.end());
for (int i=0; i<n; i++)
cout<<str[i]<<' ';
return 0;
}
输入描述:
多个测试用例,每个测试用例一行。 每行通过空格隔开,有n个字符,n<100输出描述:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std ;
int main(){
vector<string>res;
string temp;
while(cin>>temp){
res.push_back(temp);
if(cin.get()=='\n'){
sort(res.begin(),res.end());
for(int i=0;i<res.size();i++){
if(i==(res.size()-1)){
cout<<res[i];
}
else{
cout<<res[i]<<" ";
}
}
res.clear();
cout<<endl;
}
}
return 0;
}
输入描述:
多个测试用例,每个测试用例一行。 每行通过,隔开,有n个字符,n<100输出描述:
对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格
//用stringsteam+getline方法实现分隔符的字符串拆分
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cstdio>
#include<sstream>
using namespace std;
int main()
{
string s,u;
while(cin>>s)
{
stringstream ns(s);
vector<string> v;
while(getline(ns,u,','))
v.push_back(u);
sort(v.begin(),v.end());
for(int i=0;i<v.size()-1;i++)
cout<<v[i]<<",";
cout<<v.back()<<endl;
}
}
PTA | 程序设计类实验辅助教学平台天梯赛座位分配
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n; // 输入的总人数
int s[101]; // 每个人拥有的数字个数
int num[11]; // 记录每个数字出现的次数
int dif[11]; // 记录每个数字的差值
int main() {
// 读入输入数据
scanf("%d",&n);
for(int i = 1;i <= n;i ++) {
scanf("%d",&s[i]);
for(int j = 1;j <= s[i];j ++) {
num[j] ++; // 统计每个数字出现的次数
}
}
// 处理每个人的数字
for(int i = 1;i <= n;i ++) {
printf("#%d\n",i); // 输出每个人的编号
int d = i; // 初始化当前人的起始数字
for(int j = 1;j <= s[i];j ++) {
d += num[j - 1] * 10 + dif[j - 1]; // 计算当前数字
if(num[j] == 1) num[j] ++; // 如果当前数字只出现一次,则将其出现次数加1
for(int k = 0;k < 10;k ++) {
if(k) putchar(' '); // 输出数字之间的空格
printf("%d",d + k * num[j]); // 输出当前数字及其相关数字
}
putchar('\n'); // 输出换行
}
if(num[s[i] + 1] != 1) dif[s[i]] --; // 更新最后一个数字的差值
}
}
估值一亿的AI核心代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
cin.ignore();
int i,j;
string a[1010];
for(i=0;i<n;++i){
getline(cin,a[i]);
}
for(i=0;i<n;++i){
cout<<a[i]<<'\n';
string b=a[i];
int flag=0;
int pos=0;
int ans=0;
//把行首的空格全部删掉
for(j=0;j<=b.size();j++){
if(b[0]==' '){
b.erase(0,1);
j=-1;
}
}
//把行尾的空格全部删掉
j=b.size()-1;
while(b[j]==' '&&j!=0){
b.erase(j,1);
j--;
}
for(j=0;j<=b.size();j++){
//把相邻单词间的多个空格换成 1 个空格
if(b[j]==' '&&flag==0){
pos=j;
flag=1;
continue;
}
if(b[j]==' '&&flag==1){
ans++;
}
if(b[j]!=' '&&flag==1){
if(ispunct(b[j])==0)//非特殊字符的情况是保留一个空格
{
b.erase(pos,ans);
}
else//是特殊字符,删除所有空格
{
b.erase(pos,ans+1);
}
flag=0;
ans=0;
j=pos;
}
//把原文中所有大写英文字母变成小写,除了 I;
if(b[j]>='A'&&b[j]<='Z'&&b[j]!='I'){
b[j]+=32;
}
//把原文中所有的问号 ? 换成惊叹号 !;
if(b[j]=='?')
{
b[j]='!';
}
}
//把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;
int t=0;
while((t=b.find("can you",t))!=-1)
{
if(isalnum(b[t-1])==0&&isalnum(b[t+7])==0)
{
b.replace(t,7,"# can");//利用#代替I,防止后面再把I改成you
}
t++;
}
t=0;
while((t=b.find("could you",t))!=-1)
{
if(isalnum(b[t-1])==0&&isalnum(b[t+9])==0)
{
b.replace(t,9,"# could");//利用#代替I,防止后面再把I改成you
}
t++;
}
//这里要在后面改否则 原文 can I 变 can you ,can you 变 I can
//把原文中所有独立的 I 和 me 换成 you;
t=0;
while((t=b.find("I",t))!=-1)
{
if(isalnum(b[t-1])==0&&isalnum(b[t+1])==0)
{
b.replace(t,1,"you");
}
t++;
}
t=0;
while((t=b.find("me",t))!=-1)
{
if(isalnum(b[t-1])==0&&isalnum(b[t+2])==0)
{
b.replace(t,2,"you");
}
t++;
}
//把 # 改回来
t=0;
while((t=b.find("#",t))!=-1)
{
if(isalnum(b[t-1])==0&&isalnum(b[t+1])==0)
{
b.replace(t,1,"I");
}
t++;
}
cout<<"AI: "<<b<<endl;
}
return 0;
}
帅到没朋友:
https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805117167976448?type=7&page=0
#include <bits/stdc++.h>
using namespace std;
const int N = 100000;
int main()
{
int n;
int k;
cin >> n;
int id; //用于记录不帅,有朋友的ID
int x[N] = {0};
for(int i = 0; i < n; i ++)
{
cin >> k;
for(int j = 0; j < k; j ++)
{
cin >> id;
if(k != 1)
x[id] = 1;
}
}
int m;
cin >> m;
int idx;
int sum = 0;
for(int i = 0; i < m; i ++)
{
cin >> idx;
if(x[idx] == 0)
{
if(sum != 0)
{
printf(" %05d", idx);
}
else if(sum == 0)
{
printf("%05d", idx);
}
x[idx] = 1;
sum ++;
}
}
if(sum == 0)
cout << "No one is handsome";
cout << endl;
return 0;
}
#思维暴力
#include <cstdio>
#include <iostream>
using namespace std;
long long a,b,c,x,y,z,t;
char m;
int main()
{
cin>>a>>m>>b>>m>>c>>x>>m>>y>>m>>z>>t;
cout<<((x-a)*3600+(y-b)*60+(z-c))*t; //时分秒的转换兼输出
}