} }
【例4.46】下面程序的运行结果是 。
#include
int a[6][6],i,j; for(i=1;i<6;i++) for(j=1;j<6;j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++) {
for(j=1;j<6;j++)
printf(“-”,a[i][j]); printf(“\\n”); } }
【例4.47】下面程序的功能是从键盘上输入一个大写字母,要求按字母的顺序打印出3个相邻的字母,指定的字母在中间.若指定的字母为Z,则打印YZA;若指定的字母为A则打印ZAB.请填空.
#include
char a[3],c; int i;
c=getchar(); a[1]=c; if(c= =?Z?) {
a[2]=?A?;
; }
else if(c= =?A?) {
a[0]=?Z?;
; } else {
; ; }
for(i=0;i<3;i++) putchar(a[i]);
41
}
【例4.48】下面程序的运行结果是 .
#include
int i,r;
char s1[80]=”bus”; char s2[80]=”book”;
for(i=r=0;s1[i]!=?\\0?&&s2[i]!=?\\0?;i++) if(s1[i]==s2[i]) i++; else {
r=s1[i]-s2[i]; break; }
printf(”%d”,r); }
【例4.49】下面程序的运行结果是 .
#include
int a[9]={0,6,12,18,42,44,52,67,94}; int x=52,i,m,n=9; i=n/2+1; m=n/2;
while(m!=0) {
if(x { i=i-m/2-1; m=m/2; } else if(x>a[i]) { i=i+m/2+1; m=m/2; } else break; } printf(”The index is :%d”,i); } 【例4.50】下面程序的运行结果是 . #include char a[]=”morning”,t; int i,j=0; for(i=1;i<7;i++) 42 if(a[j] t=a[j]; a[j]=a[7]; a[7]=t; puts(a); } 【例4.51】下面程序的功能是将二维数组a中每个元素右移一列,最右一列换到最左一列,移后的数组存到另一数组b中,并按矩阵形式输出b。请填空。 #include int a[2][3]={4,5,6,1,2,3},b[2][3]; int i,j; printf(“array a:\\n”); for(i=0;i<=1;i++) for(j=1;j<3;j++) ; for( ; i++) b[i][0]=a[i][2]; printf(“array b:\\n”); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf(“]”,b[i][j]); ; } } 【例4.52】从键盘输入一行句子,统计其中单词的个数,补充程序使之完整。 #include char s[80]; int i,num=0; ; gets(s); while(s[i]!=?\\0?) { if((i==0)&&(s[i]!=? ?)) num++; else if( && ) num++; i++; } printf(“num=%d”,num); } 【例4.53】下列count函数用于计算子串substr在母串str中出现的次数。 43 int count(char *str,char *substr) { int x,y,z; int num=0; for(x=0;str[x]!= ; x++) for(y= ,z=0; substr[z]= =str[y]; z++,y++) if(substr[ ]= =?\\0?) { num++; break; } return( num ); } 【例4.54】下面程序的运行结果是 。 #include int i,j; static int a[10]={1,1,1,1,1,1,1,1,1,1}; for(i=0;i<10;i++) for(j=0;j 第五章 指 针 【要点归纳】 1、 指针变量 在C语言中允许用一个变量来存放指针,这种变量称为指针变量。 在C语言中,提供了两种指针运算符: ? *:取指针目标运算符 ? &:取地址运算符 2、 指针的说明和初始化 指针说明的一般形式如下: 数据类型 *指针名; 说明:与普通变量不同的是,说明指针时指定的数据类型并不是指针变量本身的数据类型,而是其目标的数据类型。无论目标数据类型如何,所有指针都是具有相同格式的地址量,随着机器硬件不同,地址量的数据长度也不同。 44