printf(\scanf(\
if ((n<=12) && (n>=1))
printf(\else
printf(\return 0; }
8-19-1
#include
#define NEWSIZE 1000 //指定开辟存区的最大容量 char newbuf[NEWSIZE]; //定义字符数组newbuf
char *newp=newbuf; //定义指针变量newp,指向可存区的始端
char *new(int n) //定义开辟存区的函数new,开辟存储区后返回指针
{if (newp+n<=newbuf+NEWSIZE) // 开辟区未超过newbuf数组的大小 {newp+=n; // newp指向存储区的末尾 return(newp-n); // 返回一个指针,它指向存区的开始位置 } else
return(NULL); // 当存区不够分配时,返回一个空指针 }
8-19-2
#include
#define NEWSIZE 1000 char newbuf[NEWSIZE];
char *newp=newbuf;
void free(char *p) //释放存区函数 {if (p>=newbuf && p< newbuf + NEWSIZE) newp=p; } 8-20
#define LINEMAX 20 /*定义字符串的最大长度*/ int main() {int i;
char **p,*pstr[5],str[5][LINEMAX];
for (i=0;i<5;i++)
pstr[i]=str[i]; /*将第i个字符串的首地址赋予指针数组 pstr 的第i个元素*/ printf(\ for (i=0;i<5;i++)
scanf(\ p=pstr; sort(p);
printf(\ for (i=0;i<5;i++)
printf(\}
sort(char **p) /*冒泡法对5个字符串排序函数*/ {int i,j;
char *temp; for (i=0;i<5;i++) {for (j=i+1;j<5;j++)
{if (strcmp(*(p+i),*(p+j))>0) /*比较后交换字符串地址*/ {temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } }
return 0; } 8-21
#include
{void sort(int **p,int n);
int i,n,data[20],**p,*pstr[20]; printf(\ scanf(\ for (i=0;i pstr[i]=&data[i]; //将第i个整数的地址赋予指针数组 pstr 的第i个元素 printf(\ for (i=0;i scanf(\ p=pstr; sort(p,n); printf(\ for (i=0;i printf(\ \ printf(\ return 0; } void sort(int **p,int n) {int i,j,*temp; for (i=0;i {if (**(p+i)>**(p+j)) //比较后交换整数地址 {temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } } 第9章用户自己建立数据类型293 9.1定义和使用结构体变量293 9.1.1自己建立结构体类型293 9.1.2定义结构体类型变量 295 9.1.3结构体变量的初始化和引用297 9.2使用结构体数组300 9.2.1定义结构体数组300 9.2.2结构体数组的应用举例301 9.3结构体指针303 9.3.1指向结构体变量的指针303 9.3.2指向结构体数组的指针304 9.3.3用结构体变量和结构体变量的指针作函数参数306 9.4用指针处理链表309 9.4.1什么是链表 309 9.4.2建立简单的静态链表310 9.4.3建立动态链表311 9.4.4输出链表315 9.5共用体类型317 9.5.1什么是共用体类型317 9.5.2引用共用体变量的方式318 9.5.3共用体类型数据的特点319 9.6使用枚举类型323 9.7用typedef声明新类型名326 习题330 9-1-1 #include { int year; int month; int day; }date; int main() {int days; printf(\ scanf(\ switch(date.month) { case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break; case 6: days=date.day+151; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break; case 9: days=date.day+243; break; case 10: days=date.day+273; break; case 11: days=date.day+304; break; case 12: days=date.day+334; break; } if ((date.year %4== 0 && date.year % 100 != 0 ||date.year % 400 == 0) && date.month >=3) days+=1; printf(\ return 0; } 9-1-2 #include { int year; int month; int day; }date; int main() {int i,days; int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; printf(\ scanf(\ days=0; for(i=1;i if((date.year%4==0 && date.year0!=0 || date.year@0==0) && date.month>=3) days=days+1; printf(\ return 0; } 9-2-1 #include { int days(struct y_m_d date1); printf(\ scanf(\ printf(\ } int days(struct y_m_d date1) {int sum; switch(date1.month) {case 1: sum=date1.day; break; case 2: sum=date1.day+31; break; case 3: sum=date1.day+59; break; case 4: sum=date1.day+90; break; case 5: sum=date1.day+120; break; case 6: sum=date1.day+151; break; case 7: sum=date1.day+181; break; case 8: sum=date1.day+212; break; case 9: sum=date1.day+243; break; case 10: sum=date1.day+273; break; case 11: sum=date1.day+304; break; case 12: sum=date1.day+334; break; } if ((date1.year % 4 == 0 && date1.year % 100!=0|| date1.year % 400 == 0) && date1.month >=3) sum+=1;
相关推荐: