C语言题
1、有n个整数的数组,使其前面各数顺序向后移m个位置,最后m个数移到最前面
1 /*################################################################################################################## 2 # 3 # 有n个整数的数组,使其前面各数顺序向后移m个位置,最后m个数移到最前面 4 # 5 ###################################################################################################################*/ 6 7 #include "stdio.h" 8 #include "stdlib.h" 9 10 #define N 10 11 12 void move(int *a, int n, int m) 13 { 14 int *p,*q;//*p、*q指针变量 15 int temp;//零时变量 16 17 for(p=a+n-m; p<a+n; p++) 18 { 19 temp=*p; 20 21 for(q=p-1; q>=p+m-n; q--) 22 *(q+1)=*q; 23 24 *(q+1)=temp; 25 } 26 27 } 28 29 30 int main(void) 31 { 32 int a[N]; 33 int m,i; 34 35 printf("请输入%d个数:\n",N); 36 for(i=0; i<N; i++) 37 scanf("%d",&a[i]); 38 39 printf("请输入需要向右移动的位数:"); 40 scanf("%d",&m); 41 42 move(a, N, m); 43 44 printf("移动位置后数组元素的顺序:"); 45 for(i=0;i<N;i++) 46 printf("%5d",a[i]); 47 48 system("pause"); 49 50 return 0; 51 }
2、两个有序数组a和b,合并成为一个有序数组
1 /*################################################################################################################## 2 # 3 # 两个有序数组a和b,合并成为一个有序数组 4 # 5 ###################################################################################################################*/ 6 7 #include "stdio.h" 8 9 #define M 5 10 #define N 6 11 12 //--求两个数中较小的数--// 13 int min(int a,int b) 14 { 15 if(a<b) 16 return a; 17 else 18 return b; 19 } 20 21 22 //--数组输入函数--// 23 void Input(int *p, int n) 24 { 25 int i=0; 26 for(i=0;i<n;i++) 27 scanf("%d",p+i); 28 } 29 30 //--数组输出显示函数--// 31 void Output(int *p, int n) 32 { 33 int i=0; 34 35 for(i=0;i<n;i++) 36 printf("%3d",*(p+i)); 37 38 printf("\n"); 39 } 40 41 //--数组合并排序函数--// 42 int combin(int *a,int *b,int *c) 43 { 44 int *p1,*p2,*p3,n=0; 45 46 for(p1=a,p2=b,p3=c;p1<a+M && p2<b+N;) 47 { 48 if(*p1<*p2) 49 { 50 *p3++=*p1++;//将较小的放在p3中 51 n++; 52 } 53 else 54 { 55 *p3++=*p2++; 56 n++; 57 } 58 59 60 //退出时,若还没放进去的,放进去 61 while(p1<a+M) 62 { 63 *p3++=*p1++; 64 n++; 65 } 66 while(p2<b+N) 67 { 68 *p3++=*p2++; 69 n++; 70 } 71 } 72 return n; 73 } 74 75 76 77 //--主函数--// 78 int main(void) 79 { 80 int a[M],b[N],c[M+N],n; 81 82 printf("请输入数组a的%d个元素:\n",M); 83 Input(a,M); 84 85 printf("请输入数组b的%d个元素:\n",N); 86 Input(b,N); 87 88 printf("数组a的元素:"); 89 Output(a,M); 90 91 printf("数组b的元素:"); 92 Output(b,N); 93 94 n=combin(a,b,c); 95 96 printf("数组c的元素:"); 97 Output(c,n); 98 99 return 0; 100 }
3、输入任意5个国家的名字,按由小到大的顺序排序
1 //--输入任意5个国家的名字,按由小到大的顺序排序 2 3 #include "stdio.h" 4 #include "string.h" 5 6 #define M 5 //5个国家 7 #define N 10 //每个的字符空间 8 9 int main(void) 10 { 11 char s[M][N],str[M]; 12 int i,j; 13 14 for(i=0;i<M;i++)//依次输入 15 gets(s[i]); 16 17 //冒泡法 18 for(i=0;i<M-1;i++)//首先从第0个开始,依次和它后面的进行比较,最后一个因为后面没有了,所以不算 19 for(j=i+1;j<M;j++)//上面那个的后面的 20 { 21 if(strcmp(s[i],s[j])>0) 22 { 23 strcpy(str,s[i]); 24 strcpy(s[i],s[j]); 25 strcpy(s[j],str); 26 } 27 } 28 29 for(i=0;i<M;i++)//输出 30 puts(s[i]); 31 32 return 0; 33 34 }