《C语言程序设计》课后习题答案(第四版)谭浩强 下载本文

if (strcmp(*(s+j),*(s+j+1))>0) {temp=*(s+j); *(s+j)=*(s+j+1); *(s+j+1)=temp; } } 8-16

#include int main() {

char str[50],*pstr;

int i,j,k,m,e10,digit,ndigit,a[10],*pa; printf(\ gets(str);

pstr=&str[0]; /*字符指针pstr置于数组str 首地址*/ pa=&a[0]; /*指针pa置于a数组首地址*/ ndigit=0; /*ndigit代表有多少个整数*/ i=0; /*代表字符串中的第几个字符*/ j=0;

while(*(pstr+i)!='\\0') {if((*(pstr+i)>='0') && (*(pstr+i)<='9')) j++; else

{if (j>0)

{digit=*(pstr+i-1)-48; /*将个数位赋予digit*/ k=1;

while (k

*pa=digit; /*将数值赋予数组a*/ ndigit++;

pa++; /*指针pa指向a数组下一元素*/ j=0; } } i++; }

if (j>0) /*以数字结尾字符串的最后一个数据*/ {digit=*(pstr+i-1)-48; /*将个数位赋予digit*/ k=1;

while (k

for (m=1;m<=k;m++)

e10=e10*10; /*e10代表位数所应乘的因子*/

digit=digit+(*(pstr+i-1-k)-48)*e10; /*将该位数的数值累加于digit*/ k++; /*位数K自增*/ }

*pa=digit; /*将数值赋予数组a*/ ndigit++; j=0; }

printf(\ j=0;

pa=&a[0];

for (j=0;j