您的位置:首页 > 理论基础

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

2014-04-21 14:58 453 查看
1,排序

题目描述:

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

输入:

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

接下来的一行包括n个整数。

输出:

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

每组测试数据的结果占一行。

样例输入:
4
1 4 3 2


样例输出:
1 2 3 4


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

[cpp] view
plaincopy





#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;

}

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

[cpp] view
plaincopy





#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!”。

样例输入:
2
255.255.255.255
512.12.2.3


样例输出:
Yes!
No!


提示:

合法的IP地址为:

a、b、c、d都是0-255的整数。

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

[cpp] view
plaincopy





#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: