实验十一 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\n",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!='\0';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\n小写:%d\n总数:%d\n其他:%d\n",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!='\0';p=p+2) 8 { 9 printf("%c",*p); 10 } 11 12 printf("\n"); 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("\n"); 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("\n"); 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\n",max,(maxij-1)/5,maxij-((maxij-1)/5)*5); 29 printf("min=%d,行下标为%d,列下标为%d\n",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\n",ave); 29 30 return 0; 31 }
浙公网安备 33010602011771号