习题九参考答案
(1) C语言中在函数之间进行数据传递的方法除了通过返回值和全程变量(外部变量)外,还可以采用那一种方式,请以求两数之最大值为例,分别编程实现?
#include "stdio.h"
void  fnMax(int a, int b, int  *max);
void  fnMax(int a, int b, int  *max)
{
*max = a>b?a:b;
}
void main()
{
int  a,b,max;
scanf("%d%d",&a,&b);
fnMax(a,b,&max);
printf("%d",max);
getch();
enum c++
}
(2) 写出一通用函数,该函数从一个一维整型数组中寻指定的一个数,若到,返回该数在数组中的下标值,否则返回-1。
int fnOnenum(int a[], int n, int b)
{
int i;
for(i=0;i<n;i++)
if(a[i]==b)return i;
return (-1);
}
(3) 写出一通用函数,该函数从一个字符指针数组中寻指定的一个字符串,若到返回1,若不到返回0。
int fnOnenum(char *a[],int n, char *b)
{
int i;
for(i=0;i<n;i++)
if( strcmp(a[i],b)==0)return 1;
return 0;
}
(4) 利用链表,建立一个教师信息示意性检索程序。每个教师的信息包括:姓名、工作证号、所在系、性别、年龄和工龄等信息。要求:
①输入教师信息,并输出教师信息。
#include "malloc.h"
#include "stdio.h"
struct  node
{
char  chName[15];
char  chNO[15];
char chDepart[20];
int iAge;
int iWorkAge;
struct  node  *pNext;
};
struct  node *pHead;
void  fnCreat()
{
struct  node *pFront,*pBack;
int  i, iNum;
scanf("please input a number:");
scanf("%d", &iNum);
for(i=0;i<iNum;i++)
{
pFront = (struct  node *)malloc(sizeof(struct  node ));
if(i==0)
pHead = pFront;          /*第一个结点*/
else
pBack->pNext = pFront;        /*非第一个结点,链接到链表的最后*/
scanf("%s%s%s%d%d",pFront->chName, pFront->chNo, pFront->chDepart,&pFront->iAge,&pFront->iWorkAge);
pFront->pNext = NULL;              /*指针域赋空NULL*/
pBack = pFront;                      /*使pBack指向最后一个结点*/
}
}
void fnPrint()
{
struct  node *pFront;
pFront = pHead;
while(pFront != NULL)
{
printf("%s%s%s%d%d",pFront->chName, pFront->chNo, pFront->chDepart,pFront->iAge,pFront->iWorkAge);
pFront = pFront->pNext;  /*指向下一个结点*/
}
}
void main()
{
fnCreat();  /*创建链表*/
fnPrint();              /*输出链表*/
getch();
}
(5) 要求编一自定义函数sort,完成对n个字符串的降序排序,然后在main函数中调用sort 对“Beijing”,“Shanghai”,“Shenzhen”,“Nanjing”,“Dalian”,“Qingdao”6个字符串排序,要求用指针数组表示这6个字符串。
#include "stdio.h"
#include "string.h"
char name[][15]={"Beijing","Shanghai","Shenzhen","Nanjing","Dalian","Qingdao" };
void Sort(int N)
{
int i,j,k;
char temp[15];
for(k=1;k<=N-1;k++)
{ for(i=N-1;i>=k;i--)
if(strcmp(name[i],name[i-1])>0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[i-1]);
strcpy(name[i-1],temp);
}
}
}
void main()
{ int i;
Sort(6);
for(i=0;i<6;i++)printf("\n %s",name[i]);
getch();
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。