1,排序
-
题目描述:
-
对输入的n个数进行排序并输出。
-
输入:
-
输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。
-
输出:
-
可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
每组测试数据的结果占一行。
-
样例输入:
-
4 1 4 3 2
-
样例输出:
-
1 2 3 4
- #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!”。
-
样例输入:
-
2 255.255.255.255 512.12.2.3
-
样例输出:
-
Yes! No!
-
提示:
-
合法的IP地址为:
a、b、c、d都是0-255的整数。
- #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;
- }