一、分析下面的 程序,写出程序执行结果。(每小题4分,共2分)
1、
#include〈stdio.h〉
void swap (int **p1,int **p2)
{ int *t;
t=*p1;
p1=p2;
*p2=t;
}
void main( )
{ int a=1、b=3、*p=&a、*q=&b;
swap(&p、&q);
printf('%d、5d、%d、%d\n"、a、b、*p、*q;
}
//因为在swap函数里交换的是两个参数的地址,所以参数使用的是两级指针,表示交换的是指针的地址,最终使p指向了b,q指向了a。
1,3,3,1
2.
# include
void merge (char *d、char sl、char、S2)
{ while (*sl!='\0' && *S2!='\0')
if (*sl
d++=*sl++;
else
d++=*s2++;
while (*sl!='\0) *d++=sl++;
while (*s2!='\0') *d++=s2++;
*d='\0',
}
void main( )
{ char sl="acdgh",s2="bcfhi",s3[20];
merge(s3,s1,s2);
puts(s3)
}
//将两个字符串合为一个按照字母顺序排列的串
abccdfghhi
二、按要求完成C函数。(每小题10分,共20分)
1.int maxsameChar(char *s);
该函数计算字符串s中最大连续相同的字符个数。例如,若s为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。
int maxSameChar (char *s)
{ int temp=1, max=0;
char c='\0';
while (*s)
{ if (c==*s)
tmpe++;
else
{ c=*s;
temp=1;
}
if (max
max=temp;
s++;
}
return max;
}
1. struct mode *reverse(struct mode *pHead);
其中,struct node定义如下:
struct node
{ int key ;
struct node *pNext;
};
此函数传入的pHead指向要处理的单向链表头,该链表以NULL指针结束。函数实现链表链接方向(包括pHead指向的原头节点)的反转,如图1所示。并将新链表头指针作为函数值返回。在完成此函数时,你只能利用原有链表节点,不能申请新节点空间。
struct node* reverse (struct node* pHead)
{ struct nodt *p,*q,*t;
if (pHead==NULL)
return NULL;
p=pHead;
q=p->pNext;
while (q! -NULL)
{ t =q->pNext;
q->pNext=p;
p=q;
q=t;
}
pHead->pNext=NULL;
pHead=p;
return pHead;
}
三、按要求完成简单的客车车次查询程序。(12分)
某车站需要一个简单的客车车次查询程序。说明如下:
1.客车车次数据文件checi.txt放在c:\data目录下,格式为:
T8成都 北京西09:30
1364成都 北京西14:20
K118攀枝花 北京西22:00
… … …
其中每行为一次车的信息,分为4个数据项:车次,始发站,终点站和离开本站时间。前三个数据项留的宽度为8字符,最后一项结束后即换行。数据项间一定有空格隔开,每一数据项内无空格。
2.你的程序对用户通过命令行参数指一的车次,在客车车次数据文件中查找相应车次信息并输出该次车的始发站,终点站和离开本站时间,如果未找到,则输出“找不到该次车信息!”。
3.你的程序可以使用标准的C库函数,可以不引用文件。程序中应给出必要的注释。
int main (int argc, char *argv [ ])
{ char info [4] [20];
FILE * fp;
int I,found=0;
if (argc!=2)
{ printf("参数个数不正确!\n");
return 1;
}
fp=fopen ("c:\\checi. txt ","r");
if (fp==NULL)
{ printf ("无法打开数据文件!\n");
return 1;
}
while (! feof (fp))
{ for (I=0;i<4; i++)
fscanf (fp,"%s",info[i]);
if (!stricmp (info[0],argv[1]))
{ found=1;
printf("始发站:%s\n",info [1]);
printf("始发站:%s\n",info [2]);
printf("离本站时间:%s\n",info [3]);
break;
}
}
if (! found )
printf("找不到该次车信息!\n");
return 0;
}