实验十二 指针的应用

1.

 1 #include<stdio.h>
 2 
 3 static int x,y,c,d;
 4 
 5 void change(int *a,int *b);
 6 void change1();
 7 
 8 int main()
 9 {
10     int a,b;
11 
12     scanf("%d%d",&a,&b);
13 
14     change(&a,&b);
15     printf("%d %d
",a,b);
16 
17     scanf("%d%d",&x,&y);
18 
19     change1(x,y);
20     printf("%d %d
",x,y);
21 
22     return 0;
23 }
24 
25 void change(int *a,int *b)
26 {
27     int t;
28 
29     t=*a;
30     *a=*b;
31     *b=t;
32 }
33 
34 
35 void change1()
36 {
37     int t;
38 
39     t=x;
40     x=y;
41     y=t;
42 }         

2.

 1 #include<stdio.h>
 2 
 3 void Delete(char s[]);
 4 
 5 int main()
 6 {
 7     char s[]="abs16cac45ecXACWE";
 8 
 9     Delete(s);
10 
11     printf("%s
",&s);
12 
13     return 0;
14 }
15 
16 void Delete(char s[])
17 {
18     int i,j;
19     for(i=0;s[i]!='';i++)
20     {
21         if(s[i]>=48&&s[i]<=57)
22         {
23             for(j=i+1;s[j-1]!='';j++)
24                 s[j-1]=s[j];
25 
26             i--;
27         }
28     }
29 }

3.

 1 #include<stdio.h>
 2 
 3 int cnum1(char *p, char c);
 4 void cnum2(char *p, char c, int *n);
 5 
 6 int main()
 7 {
 8     char s[]="acfwef1646BICSxaA",c='a';
 9     int sum,n=0;
10 
11     sum=cnum1(s,c);
12     cnum2(s,c,&n);
13 
14     printf("sum=%d,n=%d
",sum,n);
15 
16     return 0;
17 }
18 
19 int cnum1(char *p, char c)
20 {
21     int i,sum=0;
22 
23     for(i=0;p[i]!='';i++)
24     {
25         if(p[i]==c)
26             sum++;
27     }
28 
29     return sum;
30 }
31 
32 void cnum2(char *p, char c, int *n)
33 {
34     int i;
35 
36     for(i=0;p[i]!='';i++)
37     {
38         if(p[i]==c)
39             (*n)++;
40     }
41 }

4.

 1 #include<stdio.h>
 2 
 3 void swap(int a[],int N);
 4 
 5 int main()
 6 {
 7     int i,N,a[20];
 8     scanf("%d",&N);
 9 
10     for(i=0;i<N;i++)
11         scanf("%d",&a[i]);
12 
13     swap(a,N);
14     
15     for(i=0;i<N;i++)
16         printf("%d ",a[i]);
17 
18     return 0;
19 }
20 
21 void swap(int a[],int N)
22 {
23     int i,t;
24 
25     for(i=0;i<N/2;i++)
26     {
27         t=a[i];
28         a[i]=a[N/2+1+i];
29         a[N/2+1+i]=t;
30     }
31 }

5.

 1 #include<stdio.h>
 2 
 3 int baoshu(int n);
 4 
 5 int main()
 6 {
 7     int n,i;
 8     
 9     scanf("%d",&n);
10     
11     printf("%d
",baoshu(n));
12     
13     return 0;
14 }
15 
16 int baoshu(int n)
17 {
18     int a[n],*p,i,j=0,sum=0;
19     
20     for(i=0;i<n;i++)
21         a[i]=i+1;
22     
23     for(p=a,i=0;sum!=n-1;i++)//循环判断条件是保证只剩一个数 
24     {
25         if((*p)!=0)
26         {
27             j++;
28             if(j%5==0)//如果退出则置0 
29             {
30                 (*p)=0;
31                 sum++;
32             }
33         }
34         
35         //构成一个圈,如果此时是数组最后一个元素,则将i置为-1,因为后面还要i++    
36         if(i==n-1)
37         {
38             i=-1;
39             p=a;
40         }
41         else
42             p++;
43     }
44     
45     for(p=a,i=0;i<n;p++,i++)
46         if((*p)!=0)
47             return *p;
48 }

6.

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 #define N 15
 5 
 6 void px(int a[]);
 7 void sc(int a[],int m);
 8 void sr(int a[]);
 9 int js(int a[],int judge);//judge为1返回最大值,否则返回最小值 
10 
11 int main()
12 {
13     int a[N],m=5;
14     
15     sr(a);
16     sc(a,m);
17     printf("
");
18     px(a);
19     sc(a,m);
20     
21     printf("
max=%d,min=%d
",js(a,1),js(a,0));
22     
23     return 0;
24 }
25 
26 //输入随机数 
27 void sr(int a[])
28 {
29     int i;
30     
31     //赋值1-100随机数
32     for(i=0;i<N;++i)
33         a[i]=rand()%100+1; 
34         
35 }
36 
37 //输出 
38 void sc(int a[],int m)
39 {
40     int i;
41     
42     for(i=0;i<N;++i)
43     {
44         printf("%3d ",a[i]);
45         
46         if((i+1)%m==0)
47             printf("
");
48     }
49     
50 } 
51 
52 //排序 
53 void px(int a[])
54 {
55     int i,j,temp;
56     
57     for(i=0;i<N-1;++i)
58     for(j=0;j<N-i-1;++j)
59     {
60         if(a[j]>a[j+1])
61         {
62             temp=a[j];
63             a[j]=a[j+1];
64             a[j+1]=temp;
65         }
66     }
67 }
68 
69 //求最值
70 int js(int a[],int judge)
71 {
72     int i,max=a[0],min=a[0];
73     
74     for(i=0;i<N;i++)
75     {
76         if(a[i]>max)
77             max=a[i];
78             
79         if(a[i]<min)
80             min=a[i];
81     }
82     
83     if(judge==1)
84         return max;
85     else
86         return min;
87 } 
原文地址:https://www.cnblogs.com/cdp1591652208/p/6901424.html