1. 程式人生 > >智慧車第一次任務

智慧車第一次任務

2、 初試排序 輸入不超過 100 個整數,

排序並去除重複數字之後輸出。

輸入格式:第一行為輸入的數字個數,第二行為全部數字(使 用空格間隔)

輸出格式:直接輸出全部數字(使用空格間隔) 要求: 排序使用氣泡排序和快速排序實現,提交兩份程式碼

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3  int main()
 4  {
 5      int i, j, a[100], t;
 6      int n;
 7      scanf("%d",&n);
 8      for(i = 0; i < n; i++)
9 scanf("%d",&a[i]); 10 for(i = 0; i < n-1; i++) 11 for(j = 0; j < n-i-1; j++) 12 if(a[j] > a[j+1]) 13 { 14 t = a[j]; 15 a[j] = a[j+1]; 16 a[j+1] = t; 17 } 18 for(i = 0; i < n; i++) 19 for(j = i+1; j < n; j++)
20 if(a[i] == a[j]) 21 a[i] = 0; 22 for(i = 0; i < n; i++) 23 if(a[i]) 24 printf("%d ",a[i]); 25 26 }

快排

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     void quicksort(int a[], int p, int q);
 6     int
n, a[100], i; 7 scanf("%d",&n); 8 for(i = 0; i < n; i++) 9 scanf("%d",&a[i]); 10 quicksort(a,0,n-1); 11 for(i = 0; i < n; i++) 12 printf("%d ",a[i]); 13 14 } 15 void quicksort(int *a, int p, int q) 16 { 17 int i = p, j = q; 18 int temp = a[p]; 19 while(i < j) 20 { 21 while(a[q] >= temp && i < j) 22 j--; 23 if(i < j) 24 { 25 a[i] = a[j]; 26 i++; 27 } 28 while(a[p] <= temp && i < j) 29 i++; 30 if(i < j) 31 { 32 a[j] = a[i]; 33 j--; 34 } 35 } 36 a[i] = temp; 37 if(p < i-1) quicksort(a,p,i-1); 38 if(j+1 < q) quicksort(a,j+1,q); 39 }

 5、 遞迴初試 使用遞迴演算法計正整數 n 和 m 的最大公約數。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     int f(int m,int n);
 6     int n,m;
 7     scanf("%d %d",&m,&n);
 8     printf("%d",f(m,n));
 9     return 0;
10 
11 }
12 int f(int m,int n)
13 {
14     if(n == 0 && m >n)
15         return m;
16     else if(m > n)
17         return f(n,m%n);
18     else
19         return f(n,m);
20 
21 }

1、句子反轉 給定一個句子(只包含字母和空格),

將句子中的單詞位置反 轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。

比如:(1)“hello xiao mi”-> “mi xiao hello” 輸入描述: 輸入資料有多組,每組佔一行,包含一個句子(句子長度小於 1000 個字元)

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 int main()
 5 {
 6     char a[10][10], b[10];
 7     int i, j, n;
 8     scanf("%d",&n);
 9     for(i = 1; i <= n; i++)
10         scanf("%s",a[i]);
11     i = 1; j = n;
12     while(j > i)
13     {
14         strcpy(b,a[i]);
15         strcpy(a[i],a[j]);
16         strcpy(a[j],b);
17         i++;j--;
18         for(int x=0;x < 10 ;x++)
19             b[x] = '\0';
20     }
21         for(i = 1; i <= n; i++)
22             printf("%s ",a[i]);
23 }

 

輸出描述: 對於每個測試示例,要求輸出句子中單詞反轉後形成的句子