简单题整理

#输入输出

编写一段代码,实现一个二维数组的输出,要求同一行元素之间用空格间隔,但最后一个元素后没有空格,输出完后没有多余的回车。

#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核心代码:

PTA | 程序设计类实验辅助教学平台

#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; //时分秒的转换兼输出
} 
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值