C编程(西安邮电大学MOOC)
Posted goldenellipsis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C编程(西安邮电大学MOOC)相关的知识,希望对你有一定的参考价值。
1、最大与次大值
题目内容:编写程序,找出给定的n个数中的最大值及次大值。
输入格式:在第一行中输入一个正整数n(1<n≤10)。第二行输入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个整数,将每个整数循环向右移M≥0个位置,即将A中的数据由(A0A1?AN−1)
变换为(AN−M?AN−1A0A1?AN−M−1)(最后M个数循环移至最前面的M个位置)。
输入格式:第1行输入N(1≤N≤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)的主要内容,如果未能解决你的问题,请参考以下文章