2009年c语言试卷 下载本文

回-1。该程序思路:指针p、q初始均指向第一个结点,p指针先沿链表移动,当与q指针相差k个结点时,p、q指针同步移动。 struct node {

int data;

struct node *next; };

int KthBackNode( struct node *h, int k ) { ___(1)____; int count =0; p = q = h;

while ( p!=NULL && countnext;

___(2)____; }

while ( p!=NULL ) {

___(3)____;

q = q->next; }

if ( count < k ) return -1;

return ___(4)____;

, 2010年1月27日 /*h为表头指针*/

《程序设计基础及实验》课程期末考试试卷 13 / 8

}

2. 下列程序通过命令行参数方式(prog file1 file2)将两个文本文件中的两个从小到大的整数序列合并为一个从小到大的序列。注:fscanf()函数返回值为读入的整数个数;end1和end2分别用于标记两个文件的整数是否读完(值1代表读完)。例如:

如果file1和file2文件中的内容分别为: 1 2 3 和 0 2 5 6,则输出为:0 1 2 2 3 5 6。 #include

int main(int argc, char *argv[]) {

___(5)____;

int n, m, end1=0,end2=0;

if (___(6)____) {

printf(\ file1 file2\\n\ exit(0); }

if ((fp1=fopen(argv[1], \ (___(7)____)) {

printf(\

}

if (fscanf(fp1, \

《程序设计基础及实验》课程期末考试试卷, 2010年1月27日 14 / 8

if (fscanf(fp2, \while (___(8)____)

if (n>m) { printf(\

if (fscanf(fp2, \

} else {

printf(\ ___(9)____;

}

while (!end1) {

printf(\

}

while (!end2) {

printf(\ if (fscanf(fp2, \

}

___(10)____; /*关闭打开的文件*/

return 0;

}

《程序设计基础及实验》课程期末考试试卷, 2010年1月27日 15 / 8