1. 输入10个整数,将其中最小的数与第一个数对换,把最大的一个数与最后一个数对换。
#include <stdio.h> int main() { void in_num(int *x); void out_num(int *x); void exchange(int *x); int a[10]; in_num(a); exchange(a); out_num(a); return 0; } void in_num(int *x) { int i; for(i=0;i<10;i++) { scanf("%d",x+i); } } void out_num(int *x) { int j; for(j=0;j<10;j++) { printf("%d ",*(x+j)); } } void exchange(int *x) { void swap(int *p1,int *p2); int min,max,k,m,note_min,note_max; min=*x; for(k=0;k<10;k++) { if(*(x+k)<min) { min=*(x+k); note_min=k;//记住最小值在数组中的位置 } } swap(x+note_min,x); max=*x; for(m=0;m<10;m++) { if(*(x+m)>max) { max=*(x+m); note_max=m;//记住最大值在数组中的位置 } } swap(x+note_max,x+9); } void swap(int *p1,int *p2) { int tmp; tmp=*p1; *p1=*p2; *p2=tmp; }
2. 通过指针变量输出整型数组的10个元素。
要求:用指针变量指向数组元素,通过改变指针变量的值,先后指向数组各元素。
#include <stdio.h> int main() { int a[10],*p,i; p=&a[0]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(i=0;i<10;i++,p++) { printf("%d ",*p); } return 0; }
3. 将数组a中n个整数按相反顺序存放。
#include <stdio.h> int main() { void swap(int *p1,int *p2); int a[100],*p,i,note; p=&a[0]; for(i=0;i<100;i++) { scanf("%d",&a[i]); if(getchar()=='\n')//处理不定数组,若等于字符串\n时停下 { note=i+1;//标记数组长度 break; } } for(i=0;i<=note/2;i++) { swap(&a[i],&a[note-1-i]);//交换索引之和为n-1的元素对 } for(i=0;i<note;i++) { printf("%d ",*(p+i)); } return 0; } void swap(int *p1,int *p2) { int tmp; tmp=*p1; *p1=*p2; *p2=tmp; }
4. 用指针方法对10个整数按由大到小排序。(附前缀代码)
//StudybarCommentBegin #include <stdio.h> int main() { void input(int *p); void sort(int *p); void output(int *p); int a[10],*p=a; input(p); sort(p); output(p); return 0; } //StudybarCommentEnd void input(int *p) { int i; for(i=0;i<10;i++) { scanf("%d",p+i); } } void sort(int *p) { int i,j,tmp; for(j=0;j<9;j++)//冒泡排序,避免索引i,j写反,及终止条件为n-1 { for(i=0;i<9-j;i++) { if(*(p+i)<*(p+i+1)) { tmp=*(p+i); *(p+i)=*(p+i+1); *(p+i+1)=tmp; } } } } void output(int *p) { int i; for(i=0;i<10;i++) { printf("%d ",*(p+i)); } }
-END
标签:10,int,void,num,整型,数组,指针 From: https://www.cnblogs.com/peitongshi/p/16768517.html