华中科技大学_2006保研___考研计算机_复试上机

来源:互联网 发布:我的世界如何查看端口 编辑:程序博客网 时间:2024/05/17 00:16

1,排序

题目描述:

    对输入的n个数进行排序并输出。

输入:

    输入的第一行包括一个整数n(1<=n<=100)。
    接下来的一行包括n个整数。

输出:

    可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
    每组测试数据的结果占一行。

样例输入:
41 4 3 2
样例输出:
1 2 3 4 
总结:这个题目太简单了,实在想不到保研会考这种题目,当然我用的也是最简单的冒泡排序,而且还是没优化的,shame。

#include<iostream>using namespace std;int main(){int n,i,j;int swap;int arr[101];while(cin>>n){for(i=0;i<n;i++){cin>>arr[i];}for(i=0;i<n;i++){for(j=0;j<n-1-i;j++){if(arr[j] > arr[j+1]){swap=arr[j];arr[j]=arr[j+1];arr[j+1]=swap;}}}for(i=0;i<n;i++){cout<<arr[i]<<" ";}cout<<endl;}return 0;}

总结:感觉没什么,快速排序还是有些难度,但是掌握一前一后两个指针之后,也没什么。

#include<iostream>using namespace std;//快速排序的划分int partion_arr(int arr[],int i,int j){int x=arr[i];while(i<j){while(i<j && x <= arr[j]){j--;}if(i<j){arr[i]=arr[j];i++;}while(i<j && x >= arr[i]){i++;}if(i<j){arr[j]=arr[i];j--;}}arr[i] = x;return i;}//快速排序void quick_sort(int arr[],int i,int j){if(i<j){int a = partion_arr(arr,i,j);quick_sort(arr,a+1,j);quick_sort(arr,i,a-1);}}int main(){int n,i;int arr[101];while(cin>>n){for(i=0;i<n;i++){cin>>arr[i];}quick_sort(arr,0,n-1);for(i=0;i<n;i++){cout<<arr[i]<<" ";}cout<<endl;}return 0;}


2,IP地址

题目描述:

    输入一个ip地址串,判断是否合法。

输入:

    输入的第一行包括一个整数n(1<=n<=500),代表下面会出现的IP地址的个数。
    接下来的n行每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。

输出:

    可能有多组测试数据,对于每组数据,如果IP地址合法则输出"Yes!”,否则输出"No!”。

样例输入:
2255.255.255.255512.12.2.3
样例输出:
Yes!No!
提示:

合法的IP地址为:
a、b、c、d都是0-255的整数。

总结:这个一开始没有做出来,一直在string上思考,c++上做,原来用c的scanf读取,一下就好了,被秒了。

#include<stdio.h>int main(){int n;while(~scanf("%d",&n) && (n>=1 && n<=500)){int num[4];while(n--){bool flag = true;scanf("%d.%d.%d.%d",&num[0],&num[1],&num[2],&num[3]);for(int i=0;i<4;i++){if(!(num[i]>=0 && num[i]<=255)){flag = false;break;}}if(flag){printf("Yes!\n");}else{printf("No!\n");}}}return 0;}


0 0