C Primer Plus
第五版
第十章 函数和数组
程序清单10.1#include<stdio.h>
#define MONTHS 12
int main(void)
{
int days[MONTHS]=
{31,28,31,31,30,31,31,30,31,30,31,31};
int index;
for(index=0;index<MONTHS;index++)
{
printf("Month %d has %2d days\n",index
+1,days[index]);
}
return 0;
}
程序清单10.2
#include<stdio.h>
#define SIZE 4
int main(void)
{
int no_data[SIZE];
int i;
printf("%2s %14s\n","i");
for(i=0;i<SIZE;i++)
{
printf("%2d%14d\n",no_data[i]);
}
return 0;
}
程序清单10.3
#include<stdio.h>
#define SIZE 4
int main(void)
{
int some_data[SIZE]={12,21};
int i=0;
for(i=0;i<SIZE;i++)
printf("%d\n",some_data[i]);
return 0;
}
程序清单10.4
#include<stdio.h>
int main(void)
{
const int day[ ]={1,2,3,4,5,6,67,12,32};
int index;
for(index=0;index<sizeof(day)/sizeof(day
[0]);index++)
printf("%d\n",day[index]);
return 0;
}
程序清单10.5
#include<stdio.h>
#define MONTHS 12
int main(void)
{
int days[MONTHS]={31,28,[4]=31,30,31,[5]=8,9,[8]
=10};
int i;
for(i=0;i<MONTHS;i++)
{
printf("%d\n",days[i]);
}
return 0;
}
程序清单 10.6
#include<stdio.h>
#define SIZE 4
int main(void)
{
int value1=44;
int arr[SIZE];
int value2=88;
int i;
printf("value1=%d,value2=%d",value1,value2);
for(i=-1;i<=SIZE;i++)
arr[i]=2*i+i;
for(i=-1;i<7;i++)
printf("%2d %d\n",i,arr[i]);
printf("value1=%d,value2=%d",value1,value2);
return 0;
}
程序清单10.7 残篇
#include<stdio.h>
#define MONTHS 12
#define YEARS 2
int main(void)
{
const float rain[YEARS][MONTHS]=
{{1,2,3,4,5,6,7,8,9,12,12,3,4},
{1,2,32,4,545,4,64,575,132,232,3}
};
int year,month;
float subtot,total;
printf("Year RAINFALL\n");
for(year=0,total=0;year<YEARS;year++)
{
for(month=0,subto0;month<MONTHS;month++)
su
}
}
程序清单10.8
#include<stdio.h>
#define SIZE 4
int main(void)
{
short dates[SIZE];
short *pti;
short index;
double bills[SIZE];
double * ptf;
pti=dates;
ptf=bills;
printf("%23s %10s\n","short","double");
for(index=0;index<SIZE;index++)
printf("pointers+%d: %p %10p\n",index,pti
+index,ptf+index);
return 0;
}
程序清单10.9
#include<stdio.h>
#define MONTHS 12
int main(void)
{
int index;
int days[MONTHS]={1,2,3,4,2,3,4,5,6,12,34,34};
for(index=0;index<MONTHS;index++)
printf("Month has %2d: has %d\n",index+1,*
(days+index));
return 0;
}
程序清单10.10
#include<stdio.h>
#define SIZE 10
int sum(int ar[],int n);
int main(void)
{
int index;
int marbles[SIZE ]={1,2,3,4,2,3,4,5,6,12};
long answer;
answer=sum(marbles,SIZE);
printf("The total number of marbles is %ld.
\n",answer);
printf("The size of marbles is %2d bytes.
\n",sizeof marbles);
return 0;
}
int sum(int ar[],int n)
{
int i,total=0 ;
printf("%d %d\n",i,total);
for(i=0;i<n;i++)
total+=ar[i];
printf("The size of ar is %2d bytes.\n",sizeof
ar);
return total;
}
程序清单10.11
#include<stdio.h>
#define SIZE 10
int sum(int *ar ,int *end);
int main(void)
{
int index;
int marbles[SIZE ]={1,2,3,4,2,3,4,5,6,12};
long answer;
answer=sum(marbles,marbles+SIZE);
printf("The total number of marbles is %ld.
\n",answer);
printf("The size of marbles is %2d bytes.
\n",sizeof marbles);
return 0;
}
int sum(int *ar ,int* end)
{
int i,total=0 ;
for(i=0;ar+i<end;i++)
total+=*(ar+i);
// printf("The size of ar is %2d bytes.\n",sizeof
ar);
return total;
}
程序清单10.12
#include<stdio.h>
int data[2]={100,200};
int moredata[2]={300,400};
int main(void)
{
int *p1,*p2,*p3;
p1=p2=data;
p3=moredata;
printf(" *p1=%d, *p2=%d, *p3=%d
\n",*p1,*p2,*p3);
printf(" *p1++=%d, *++p2=%d, (*p3)++=%d
\n",*p1++,*++p2,(*p3)++);
printf(" *p1=%d, *p2=%d, *p3=%d
\n",*p1,*p2,*p3);
return 0;
}
10.13
#include<stdio.h>
int main(void)
{
int urn[5]={100,200,300,400,500};
int *ptr1,*ptr2,*ptr3;
ptr1=urn;
ptr2=&urn[2];
printf("ptr1=%p,*ptr1=%d, &ptr1=%p
\n",ptr1,*ptr1,&ptr1);
ptr3=ptr1+4;
printf("ptr1+4=%p,*(ptr4+3)=%d
\n",ptr1,*ptr1,&ptr1);
ptr2--;
printf("ptr2=%p,*ptr2=%d,&ptr2=%p
\n",ptr2,*ptr2,&ptr2);
return 0;
}
10.14
#include<stdio.h>
int main(void)
{
int zippo[4][2]={{2,4},{6,8},{1,3},{5,7}};
printf("zippo=%p zippo+1=%p \n",zippo,zippo+1);
printf("zippo[0]=%p zippo[0]+1=%p \n",zippo
[0],zippo[0]+1);
printf("zippo[0][0]=%d \n ",zippo[0][0]);
printf("*zippo[0] =%d \n",*zippo[0] );
return 0;
}