四川大学c语言真题及答案新课标,四川大学C语言2003年真题_跨考网

一、分析下面的 程序,写出程序执行结果。(每小题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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值