全国2005年10月高等教育自学考试c语言程序设计试题 一、单项选择题 1. 下列 不属于 C 语言保留字的是 ( D ) A. char B. while C. typedef D. look 2. 下列关于 C 语言的叙述 错误的是 ( A ) A. 英文字母大小写不加以区分 B. 不同类型的变量可以出现在同一个表达式中 C. 在赋值表达式中赋值号两边的类型可以不同 D. 某些运算符在不同的场合可以有不同的含义 3. 下列转义字符中 错误的是 ( C ) A. ′ \000 ′ B. ′ \14 ′ C. ′ \x111 ′ D. ′ \2 ′ 4. 执行语句 printf( ″ %x ″ , -1) ;后输出结果是 ( D ) A. -1 B. -ffff C. 1 D. ffff 5. 设 float a=2, b=4, c=3 ;,以下 C 语言表达式与代数式 (a+b)c 计算结果 不一致的是( B ) A. (a+b)*c/2 B. (1/2)*(a+b)*c C. (a+b)*c*1/2 D. c/2.0*(a+b) 6. 设 int a=10, b=20, c=30; 条件表达式 a long fun(int n) { long s; if(n<=2)s=2; else s=n+fun(n-1); printf( ″ %d\t ″ , s); return s; } main( ) { fun(5); printf( ″ \n ″ ); } 答案:2 5 9 14 33. struct porb { char *name; int age; } s [ ] ={ ″ LiHua ″ , 18, ″ WangXin ″ , 25, ″ LiuGuo ″ , 21}; #define N (sizeof(s)/sizeof (s [ 0 ] )) void f (struct porb a [] , int n); main( ) { f (s, N); } void f (struct porb a [] , int n) { int i; for (i=0;i */ #include main( ) { char c; while ((c=getchar( ) )!= ′\n ′ ) switch(c-′0′ ) { case 0: case 1:putchar(c+2); case 2:putchar(c+3);break; case 3:putchar(c+4); default:putchar(c+1);break; } printf( ″ \n ″ ); } 答案:5523 四、程序填充题 ( 本大题共 3 小题,每小题 6 分,共 18 分 ) 给出下列程序,将横线处缺少的部分补上,使其能正确运行。 36. 一个三位整数 (100 ~ 999) ,若各位数的立方和等于该数自身,则称其为“水仙花数” ( 如: 153=13+53+33), 找出所有的这种数。 main( ) { int n, a, b, c;/*n 、 a 、 b 和 c 分别为三位数自身及其个位、十位和百位 */ for(c=1;c<=9;c++) for (b=0; b<=9;b++) for(_a=0;a<=9__;a++) /* 第一空 */ { n=__a+b*10+c*100__; /* 第二空 */ if(a*a*a+b*b*b+c*c*c==___n___) /* 第三空 */ printf( ″ %d\n ″ , n); } } 37. 输入一个数字 ( 范围在 0 ~ 9 之间,若不在此范围内显示输入错 ) ,输出对应的英文单词 (Zero, One, Two, ……, Nine) 。 main( ) { int i; char *digit [ 10 ] ={ ″ Zero ″ , ″ One ″ , ″ Two ″ , ″ Three ″ , ″ Four ″ , ″ Five ″ , ″ Six ″ , ″ Seven ″ , ″ Eight ″ , ″ Nine ″ }; scanf( ″ %d ″ , ___&i______); /* 第一空 */ printf( ″ %d →″ , i); if(_____i>=0&&i<=9___) /* 第二空 */ printf( ″ %s\n ″ , digit [ _i_ ] ); /* 第三空 */ else printf( ″ Input error! \n ″ ); } 38. 将一个文本文件 (ma. dat) 拷贝到另一个文本文件 (niu. dat) 中。 #include main( ) { FILE *ma, *niu; ma=fopen( ″ ma. dat ″ , __"r"____); /* 第一空 */ miu=fopen( ″ niu. dat ″ , ″ w ″ ); while(! feof(ma)) fputc(fgetc(ma), __mmiu______); /* 第二空 */ fclose(niu);___fclose(ma)____; /* 第三空 */ } 五、程序设计题 ( 本大题共 3 小题,第 39 小题 5 分,第 40 、 41 小题各 6 分,共 17 分 ) 39. 输入某学生的数学 (math) 、英语 (english) 和 C 语言 (C) 的成绩,输出该学生这三门课的成绩、总成绩 (sum) 和平均成绩 (aver) 。 40. 按下列要求分别写出两个函数 ( 不用写主函数 ) (1) 计算 n! 计算公式: n!=1 × 2 × 3 ×……× n 函数首部为 log fac(int n) (2) 调用上述函数计算 cmk 计算公式 : 函数首部为 long cmk(int m, int k) 41. 在一个二维数组 ( 定义为 int a [5][5] ;) 中形成并按下列形式输出矩阵各元素的值。 1 0 0 0 0 2 1 0 0 0 3 2 1 0 0 4 3 2 1 0 5 4 3 2 1