C编程(西安邮电大学MOOC)

Posted goldenellipsis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C编程(西安邮电大学MOOC)相关的知识,希望对你有一定的参考价值。

1、最大与次大值

题目内容:编写程序,找出给定的n个数中的最大值及次大值。

输入格式:在第一行中输入一个正整数n(1<n10)。第二行输入n个整数,用英文逗号,隔开。

输出格式:在一行中输出最大值及次大值,中间用英文逗号,隔开。

输入样例:7

                 12,1,2,5,4,7,3

输出样例:12,7

 1 /*  
 2 与只求最大值的程序一样吗,
 3 好像是,但是不是,要排序! 
 4 */
 5 #include <stdio.h>
 6 #define N 100
 7 int main()
 8 {    
 9     int n, a[N] = {0};
10     scanf("%d",&n);
11     for(int i=0; i<n-1; ++i){
12         scanf("%d,",&a[i]);
13     }
14     scanf("%d",&a[n-1]);
15     /* 插入排序 */
16     for(int i = 0; i<n; ++i){
17         int min = a[i];
18         int index = i;
19         for(int j = i+1; j<n; ++j){
20             if(min>a[j]){ 
21                 min = a[j];
22                 index = j;
23             }                
24         }
25         if(index != i){
26             a[index] = a[i];
27             a[i] = min;
28         }
29     }    
30     printf("%d,%d
",a[n-1],a[n-2]);
31     return 0;
32 }

2、素数排序

题目内容:输入10个正整数到a数组中,对a[10]数组中的素数升序排序。

输入格式:在一行中输入10个用英文逗号,隔开的正整数。

输出格式:在一行中输出升序的素数序列,每个数之间用英文逗号,隔开,末尾没有多余的空格

输入样例:10,3,1,5,4,8,7,2,9,11

输出样例:2,3,5,7,11

输入样例:16,12,1,6,4,8,14,18,24,21

输出样例:Not found!

 1 /*  */
 2 #include <stdio.h>
 3 #define N 100
 4 /* 判断素数 */
 5 int isPrime(int key)
 6 {
 7     if(key<2)
 8         return 0;
 9     for(int i=2; i<key; ++i)
10         if(key%i==0)
11             return 0;
12     return 1;
13 }
14 /* 升序插入 */
15 void InsertArr(int *arr, int n, int key)
16 {
17     int j=n;
18     while(j>=0 && key>arr[j]){
19         arr[j+1]=arr[j];/*移动,向后赋值*/
20         j--;
21     }
22     arr[j+1]=key;/**/   
23 }
24 int main()
25 {    
26     int n=0, arr[N] = {0},a[N] = {0};    
27     
28     for(int i=0; i<9; ++i){
29         scanf("%d,",&a[i]);
30         if(isPrime(a[i])){
31             InsertArr(arr,n,a[i]);
32             n++;
33         }            
34     }
35     scanf("%d",&a[9]);
36     if(isPrime(a[9])){
37         InsertArr(arr,n,a[9]);
38         n++;
39     }    
40     if(n==0)
41         printf("Not found!");
42     else{
43         for(int i=n-1; i>0; --i){
44             printf("%d,",arr[i]);
45         }
46         printf("%d",arr[0]);
47     }
48     return 0;
49 }

 3、循环右移

题目内容:一个数组A中存有N>0个整数,将每个整数循环向右移M0个位置,即将A中的数据由(A0A1?AN−1

变换为(AN−M?AN−1A0A1?AN−M−1)(最后M个数循环移至最前面的M个位置)。

输入格式:第1行输入N(1N≤100)和M(0)中间用英文逗号,分隔

                 第2行输入N个整数,中间用英文 逗号,分隔。

输出格式:在一行中输出循环右移M位以后的整数序列,中间用英文逗号,分隔,序列结尾不能有多余空格。

输入样例:7,3

                  1,2,3,4,5,6,7

输出样例:5,6,7,1,2,3,4

输入样例:7,0

                  1,2,3,4,5,6,7

输出样例:1,2,3,4,5,6,7

 1 #include <stdio.h>
 2 #define N 100
 3 
 4 /* 头插入 */
 5 void InsertHead(int *arr, int index, int key)
 6 {    
 7     for(int j=index-1; j>=0; j--){
 8         arr[j+1]=arr[j];/*移动*/
 9     }
10     arr[0]=key;
11 }
12 int main()
13 {    
14     int n, m, arr[N] = {0};    
15     scanf("%d,%d",&n,&m);
16     
17     for(int i=0; i<n-1; ++i){
18         scanf("%d,",&arr[i]);        
19     }
20     scanf("%d",&arr[n-1]);
21     
22     while(m--)
23         InsertHead(arr,n-1,arr[n-1]);
24         
25     for(int i=0; i<n-1; ++i){
26         printf("%d,",arr[i]);
27     }
28     printf("%d",arr[n-1]);    
29     return 0;
30 }

 

以上是关于C编程(西安邮电大学MOOC)的主要内容,如果未能解决你的问题,请参考以下文章

智能视觉组参赛总结及体会- 西安邮电大学 - AI小布丁

计算机基础

西安邮电大学第三届网络安全技能大赛---PWN方向WP

2022年西安邮电大学第三届网络安全技能大赛|Crypto

西安邮电大学第五届ACM-ICPC校赛(同步赛) B(拓扑排序)

西安邮电大学第五届ACM-ICPC校赛(同步赛) B(拓扑排序)