C++练习

题目 第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。 输入描述: 输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000)。 输出描述: 如果偶数比奇数多,输出NO,否则输出YES。
示例1
输入
5
1 5 2 4 3
输出 YES

#include <iostream>
    using namespace std;
    int main(){
        int n,m,k=0;
        cin>>n;
        while(cin>>m){    //避免new指针的麻烦 但也有新的问题
            if(m%2==0){
                k++;
                n--;
            }
        }
        k>n?cout<<"NO":cout<<"YES";
        return 0;
    }

总结:
1.while(cin>>n)免去new指针的麻烦 但是不能在输入数据个数不是预输入数据个数的时候报错 n–换作z=0 z++反而能在两者不等时候依然给出正确的return 但是同样没有检查二者是否相等
2.如果new 数组 一定要记得free 不然多组数据存储空间可能会不够
3.如果是多组数据输入 采用计数办法区分的话 还是一定要规定输入什么结尾代表前面是个数 然后用计数器检查每组数据 否则一组数据出现输入数据个数与预输入个数不等 所有的都乱套了 ——计算机网络 传输那部分 关于数据检验

题目描述
查找一个数组的第K小的数,注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。
输入描述:
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
输出描述:
输出第k小的整数。
示例1
输入
复制
6
2 1 3 5 2 2
3
输出
复制
3

#include <iostream>
using namespace std;
int main(){
    int n,k,l;
    //输入数据个数
    cin>>n;
    int *arr=new int[n];
    //输入数据
    for(int i=0;i<n;i++){
        cin>>arr[i];
    }
     //输出第几小的整数
    cin>>k;
    for(int i=0;i<n;i++){         //冒泡排序
       for(int j=i+1;j<n;j++){
           if(arr[i]>arr[j]){
               l=arr[i];
               arr[i]=arr[j];
               arr[j]=l;
           }
       }
    }
    l=0;
    for(;l<k-1;l++){ //k会挪到比所求更远一个 l在k-1的位置上 l 是所求
        if(arr[l]==arr[l+1])
            k++;
    }
    cout<<arr[l]<<endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值