智能车第一次任务

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 }

输出描述: 对于每个测试示例,要求输出句子中单词反转后形成的句子

猜你喜欢

转载自www.cnblogs.com/jizhaoyang/p/10052951.html