一、指出程序段中的错误:分析错误的原因,并进行修改。(每个5分,共10分)、
1、函数swap将两个字符串(字符数组作实参,长度不超过100)的内容进行交换。 Void swap(char *pa,char *pb) { char *temp; temp=pa; pa=pb; pb=temp; }
2、程序片段为: char pa[]=”ABCDE”; char *pb=”EFG”; pb[1]=’A’; pb=pa;
strcpy(pa,”ABCDEFGXYZ”); pb=”DU”;
二、简答题(共30分)
1、设arr为整型数组,num和item为整型变量,N=数组元素个数-1。需要查找item是否在数组中,如果程序片段为 for(num=N;arr[num]!=item;num--); printf(“%d\\n”,num); 可能导致的异常结果是什么?为什么?(8分)
2、设有递归函数: int value(int n) { int x; if(n==0)return0; else
{
scanf(“%d”,&x);
return(value(n-1)+x); }
}
如该函数被调用时,参数n值为4,输入的x的值依次为11,22,33,44,函数调用结束时返回值是多少?并用图描述函数递归执行过程。(10分)
3、数组作为函数参数有三种形式: 1)实参是数组元素; 2)形参是指针,实参是函数; 3)函数的形参和实参都是数组
分别是采用什么参数传递方式?(5分)
4、采用高度抽象概念有利于程序设计,C语言中循环语句
do s while(B);
对应的显示控制结构是什么?请使用伪代码形式(通过条件转移指令)表达。(7分)
三、程序设计(共45分,每题的算法50%,语法30%,完整20%)
1、编写完整程序:利用2个函数对输入的两个分数进行加、减、乘、除四则运算和输出用分数表示的结果。(注:输入格式为:%ld/%ld%c%ld/%ld,输出格式为%ld/%ld),例如:输入1/4+1/3,输出:7/12 (10分)
2、编写函数,将单链表进行逆序,即表头变表尾,表尾变表头(15分) 其中:节点定义为:struct node{int num, struct node *next };
函数原型为:void turn(struct node *head)
3、编写完整程序:接收从键盘输入的仅由数字字符构成的字符串(假设字符串的最大长度为50),统计并输出每个数字(0~9)的重复次数。(8分)
4、编写完整程序,采用结构数组和指向结构的指针,接收输入的100个学生信息(包括学号和C语言课程期末总成绩),输出最高、最低成绩和分别对应的学号(可能有多个同学都是最高分,可能有多个同学都是最低分)。(12分)
四、从程序执行效率方面考虑,请简述C语言采取的一些措施和原因。(15分)
因篇幅问题不能全部显示,请点此查看更多更全内容