班级: 学号: 姓名: 2.交换两个整数的值,保证调用函数中实参的值交换。
void exchang(int *p1, int *p2) {
int p;
*p = p1; p1 = p2; p2 = *p; }
三、编程(40分)
1. 编写程序输出3到10000内的可逆素数。可逆素数是指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。如157和751均为素数,它们是可逆素数。
要求:使用子函数实现,至少两个子函数。其它自便。(21分)
2. 编写程序实现将一个文本文件TAB.TXT中的制表符'\\t'(ASCII码为0x09)换为8个空格并存入SPACE.TXT文本文件中。(19分)
5 班级: 学号: 姓名:
参考答案与评分标准
一、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(40分,评分标准:每空2分,正确得2分,错误扣2分)
1. 下面的程序计算5!。
#include
float fun(int n) { static float f = 1.0; f *= n; return f; }
int main() {
int i; float s;
for (i = 1; i <= 5; i ++) s = fun(i);
printf(\return 0; }
2.下面程序运行的结果如下, 请填空实现这个结果。
#include
char *s = \
int v1 = 0,v2 = 0,v3 = 0; while (*s) {
switch (*s) {
default:
v3++; case '1':
v1++; break; case '2':
v2++; } s++; }
printf(\}
输出结果: 5,2,3
3. 下面的程序在CodeBlocks8.02下输出结果如下,请填空以实现这个结果,并且把输出填写完整。
6 班级: 学号: 姓名: #include
int main() {
int n1 = 1382; short n2; char c = 'a';
double d1 = 8.503; double d2; n2 = c; printf(\ c = n1;
printf(\ n1 = d1;
printf(\ d2 = n1;
printf(\ return 0; }
输出结果:
c = a, n2 = 97 c = f, n1 = 1382 n1 = 8
d2 = 8.000000
Process returned 0 (0x0) execution time : 0.078 s Press any key to continue.
4. 以下子程序用快速排序算法实现整型数的从小到大排序。
int Partition(int r[],int first,int end) {
int i, j; i = first; j = end;
while (i while (i j--; 或者 i++; 和下面的对列配对 if (i int temp; 7 班级: 学号: 姓名: temp = r[i]; r[i] = r[j]; r[j] = temp; i++; 或者 j--; } while (i i++; 或者j--; if (i int temp; temp = r[i]; r[i] = r[j]; r[j] = temp; j--; 或者 i++; } } return i; } void QuickSort(int r[],int first,int end) { int pivot; if (first pivot = Partition(r,first,end); QuickSort(r,first,pivot-1 ); QuickSort(r,pivot+1 ,end); } } 二、在下面给出的2个程序中,有10处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。(20分,评分标准:每找对1个错误,加1分,每修改正确1个错误,再加1分。) 1. 统计字符数。判断一个由0 ~ 9 这10个字符组成的字符串中哪个字符出现的次数最多。 8

