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

{if (s[i]>='0'&& s[i]<='9') n=n*16+s[i]-'0';

if (s[i]>='a' && s[i]<='f') n=n*16+s[i]-'a'+10; if (s[i]>='A' && s[i]<='F') n=n*16+s[i]-'A'+10; }

return(n); } 7-17

#include <> int main()

{ void convert(int n); int number;

printf(\ scanf(\ printf(\ if (number<0)

{putchar('-');putchar(' '); /* 先输出一个‘-’号和空格 */ number=-number; }

convert(number); printf(\ return 0; }

void convert(int n) { int i;

if ((i=n/10)!=0) convert(i);

putchar(n+'0'); putchar(32); } 7-18

#include <> int main()

{int sum_day(int month,int day); int leap(int year);

int year,month,day,days;

printf(\

scanf(\ printf(\

days=sum_day(month,day); /* 调用函数sum_day */ if(leap(year)&&month>=3) /* 调用函数leap */ days=days+1;

printf(\ return 0; }

int sum_day(int month,int day) /* 函数sum_day:计算日期 */ {int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i; for (i=1;i

day+=day_tab[i]; /* 累加所在月之前天数 */ return(day);

} /* 函数leap:判断是否为闰年 */

int leap(int year) {int leap;

leap=year%4==0&&year0!=0||year@0==0; return(leap); }

第8章善于利用指针220 指针是什么220 指针变量222

使用指针变量的例子222 怎样定义指针变量223 怎样引用指针变量224 指针变量作为函数参数226 通过指针引用数组230 数组元素的指针230

在引用数组元素时指针的运算231 通过指针引用数组元素233 用数组名作函数参数237 通过指针引用多维数组245 通过指针引用字符串255 字符串的引用方式 255 字符指针作函数参数259

使用字符指针变量和字符数组的比较263 指向函数的指针266 什么是函数指针266

用函数指针变量调用函数266

怎样定义和使用指向函数的指针变量268

用指向函数的指针作函数参数270 返回指针值的函数274 指针数组和多重指针277 什么是指针数组 277 指向指针数据的指针280

指针数组作main函数的形参282

动态内存分配与指向它的指针变量285 什么是内存的动态分配285 怎样建立内存的动态分配285 指针类型 287

有关指针的小结288 习题291 8-1

#include <> int main()

{ void swap(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3;

printf(\ scanf(\ p1=&n1; p2=&n2; p3=&n3;

if(n1>n2) swap(p1,p2); if(n1>n3) swap(p1,p3); if(n2>n3) swap(p2,p3);

printf(\ return 0; }

void swap(int *p1,int *p2) {int p;

p=*p1; *p1=*p2; *p2=p; }

#include <> #include <> int main()

{void swap(char *,char *);

char str1[20],str2[20],str3[20]; printf(\ gets(str1);

gets(str2); gets(str3);

if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); printf(\

printf(\ return 0; }

void swap(char *p1,char *p2) {char p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); } 8-3

#include <> int main()

{ void input(int *);

void max_min_value(int *); void output(int *); int number[10];

input(number); max_min_value(number); output(number); return 0; }

void input(int *number) {int i;

printf(\ for (i=0;i<10;i++)

scanf(\ }

void max_min_value(int *number) { int *max,*min,*p,temp; max=min=number;

for (p=number+1;p*max) max=p; else if (*p<*min) min=p;

temp=number[0];number[0]=*min;*min=temp; if(max==number) max=min;