C語(yǔ)言練習(xí)


[例8.13] 將例8.12測(cè)字符串的長(zhǎng)度,改用字符指針?lè)绞酵瓿?br>
int StrLen(char *s)
{? int n=0;
? ?while(*s++)n++;
? ?return n;
}
main()
{ char str[]="China",*p;
int len;
p=str;
len=StrLen(p);
printf("%s的長(zhǎng)度:%d\n",p,len(p));
}

[例9.12] 使用函數(shù)將一個(gè)字符串復(fù)制到另一個(gè)字符串。
void StrCopy(char *str1,char *str2)
{
while((*str1=*str2)!='\0')
{? ?str1++;? str2++;
}
}
main()
{ char s1[80],s2[]="abc";
StrCopy(s1,s2);
printf("復(fù)制之后的字符串:%s\n",s1);
}?

[例9.13] 改寫字符串復(fù)制函數(shù)。
Char *StrCopy(char *str1,char *str2)
{? char *p=str1;
? ?while((*str1=*str2)!='\0')
? ?{? ?str1++;? str2++;
? ?}
? ?return p;
}
main()
{? char s1[80],s2[]="China";
? ?printf("原字符串:%s\n",s2);
? ?printf("復(fù)制之后的字符串:%s\n", StrCopy(s1,s2));
}

[9.14]將若干字符串輸出。
main()
{ char *str[]={"windows","office","media","internet","outlook"};
int i;
for(i=0;i<5;i++)
printf("%s\n",str[i]);
}

[例9.15]使用多級(jí)指針輸出多個(gè)字符串
main()
{ char *str[]={"windows","office","media","internet","outlook"};
char **p;
for(p=str;p<str+5;p++)
printf("%s\n",*p);
}

例10.1 結(jié)構(gòu)體變量的初始化
struct STUDENT
{ int num;
char name[10];
char sex;
int age;
float score;
}a={1001,"LiMing",'M',21,90.5}; /* 全局結(jié)構(gòu)體變量 */
main()
{ /* 局部結(jié)構(gòu)體變量 */
struct STUDENT b={1002,"ZhaoLi",'F',20,93.0};
printf("學(xué)生a:%d,%s,%c,%d,%f\n",a.num,a.name,a.sex,a.age,a.score);
printf("學(xué)生b:%d,%s,%c,%d,%f\n",b.num,b.name,b.sex,a.age,b.score);
}

例10.2 結(jié)構(gòu)體數(shù)組
struct STUDENT
{ int num;
char name[10];
float score;
};
main()
{ struct STUDENT stud[3];
int i;
for(i=0,i<3;i++)
scanf("%d,%s,%f",&stud[i].num, stud[i].name, &stud[i].score);
for(i=0,i<3;i++)
printf("%d,%d,%s,%f\n",i,stud[i].num, stud[i].name, stud[i].score);
}

[10.3] 使用結(jié)構(gòu)體指針
struct STUDENT
{ int num;
char name[10];
float score;
};
main()
{ struct STUDENT a={1002,"ZhaoLi",93.0},*p;
p=&a;
printf("%d,%s,%f\n",a.num,a.name,a.score);
printf("%d,%s,%f\n",(*p).num,(*p).name, (*p).score);
printf("%d,%s,%f\n",p->num,p->name,p->score);
}

