实验十一 C的指针

指针编程

11.1

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a[10]={1,2,3,4,5,6,7,8,9,10},i,*p,sum=0;
 6 
 7     for(p=&a[0],i=0;i<10;i++,p++)
 8     {
 9         if(*p%2==0)
10             sum+=*p;
11     }
12 
13     printf("%d
",sum);
14 
15     return 0;
16 }

11.2

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int i=0,j=0,str=0;
 6     char a[100],*p;
 7     gets(a);
 8 
 9     for(p=&a[0];*p!='';p++)
10     {
11         if((*p)>=65&&(*p)<=90)
12             i++;
13         else if((*p)>=97&&(*p)<=122)
14             j++;
15 
16         str++;
17     }
18 
19     printf("大写:%d
小写:%d
总数:%d
其他:%d
",i,j,str,str-i-j);
20 
21     return 0;
22 }

11.3

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     char a[]="abcdefghijkl",*p;
 6 
 7     for(p=&a[0];*p!='';p=p+2)
 8     {
 9         printf("%c",*p);
10     }
11 
12     printf("
");
13 
14     return 0;
15 }

11.4

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a[15],*p,i;
 6 
 7     for(p=&a[14],i=0;i<15;i++,p--)
 8         scanf("%d",p);
 9     
10     for(p=&a[0],i=0;i<15;i++,p++)
11         printf("%d ",*p);
12 
13     printf("
");
14 
15     return 0;
16 }

11.5

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a[10],*p,i;
 6     double ave=0;
 7 
 8     for(p=&a[9],i=0;i<10;i++,p--)
 9     {
10         scanf("%d",p);
11         ave+=*p;
12     }
13     ave=ave/10.0;
14     
15     for(p=&a[0],i=0;i<10;i++,p++)
16     {
17         if(ave<(*p))
18             printf("%d ",*p);
19     }
20 
21     printf("
");
22 
23     return 0;
24 }

11.6

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a[4][5],*p,minij,maxij,sum=20,max,min;
 6 
 7     for(p=&a[0][0];sum>0;sum--,p++)
 8         scanf("%d",p);
 9     
10     p=&a[0][0];
11     max=min=a[0][0];
12 
13     for(sum=1;sum<=20;sum++,p++)
14     {
15         if(max<*p)
16         {
17             max=*p;
18             maxij=sum;
19         }
20 
21         if(min>*p)
22         {
23             min=*p;
24             minij=sum;
25         }
26     }
27 
28     printf("max=%d,行下标为%d,列下标为%d
",max,(maxij-1)/5,maxij-((maxij-1)/5)*5);
29     printf("min=%d,行下标为%d,列下标为%d
",min,(minij-1)/5,minij-((minij-1)/5)*5);
30 }

11.7

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     double a[10],*p,ave=0;
 6     int i,m,n;
 7 
 8     for(p=&a[0],i=0;i<10;p++,i++)
 9         scanf("%lf",p);
10 
11     scanf("%d%d",&m,&n);
12 
13     if(m+n>11)
14     {
15         for(p=&a[m-1],i=m;i<=10;i++,p++)
16             ave+=(*p);
17 
18         ave=ave/(11.0-m);
19     }
20     else
21     {
22         for(p=&a[m-1],i=0;i<n;i++,p++)
23             ave+=*p;
24 
25         ave=1.0*ave/n;
26     }
27 
28     printf("%f
",ave);
29 
30     return 0;
31 } 
原文地址:https://www.cnblogs.com/cdp1591652208/p/6840368.html