级电子班C语言复习练习题(二) 2013.3.12
本次实验在第一次C语言基础练习的基础上侧重“函数”、“指针”、“结构体”内容的练习与复习,希望同学们在着手本次实验之前复习教材上的相关概念,做
好程序算法的规划,在完成每个程序过程中注重程序调试手段的使用。 一、通过调试程序,找出下列程序中的错误,并改为正确。
1. 调试下列程序,使之具有如下功能:fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数平均值。写出调试过程。 #include \"math.h\" main( )
{ int a=0,k; /* a保存素数之和 */
float av; /* av保存1000以内素数的平均值 */ for(k=2;k<=1000;k++)
if(fun(k)) /* 判断k是否为素数 */ a+=k;
av=a/1000;
printf(\"av=%f\\n\; }
fun(int n) /* 判断输入的整数是否为素数 */ { int i,y=0;
for(i=2;i 对于一个大型程序,如果仅需要对程序中的某一部分单步执行时,可设置一些断点,用连续执行命令\"Go\"执行程序到断点处,然后再单步执行程序。 2.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值。 要求用函数指针调用这两个函数,结果在主函数中输出。 main() { int a,b,c,(*p)(); scanf(\"%d,%d\; p=sum; *p(a,b,c); /*这句能否得到计算的c的值,该怎么改变?*/ p=swap; *p(a,b); /*这句能否起到交换a,b的作用,该怎么改?*/ printf(\"sum=%d\\n\; printf(\"a=%d,b=%d\\n\; } sum(int a,int b,int c) { c=a+b; } swap(int a;int b) { int t; t=a; a=b; b=t; } 调试程序时注意参数传递的是数值还是地址。 3、编写一个表示平面直角坐标系上点的结构体,并写出输入输出函数。程序例子如下: #include struct point { float x; float y; }; get_point(struct point *p) { float a,b; scanf(\"%f,%f\p->x=a; p->y=b; } } return 0; put_point(struct point a) { printf(\"%f,%f\\n\ return 0; main() { } 输入并调试上面程序。 struct point a; printf(\"Please input a point:\"); get_point(&a); printf(\"The Point you input is: \"); put_point(a); 二、编写程序 1、 编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如:153就是一个水仙花数: 153 = 13 + 53 + 33 2、 编写一个函数,对输入的整数k输出它的全部素数因子。例如:当k=126时,素数因子为:2,3,3,7。要求按如下格式输出:126 = 2 * 3 * 3 * 7。 3.输入一个3位数,计算该数各位上的数字之和,如果在1~12之内,则输出与和数相对应的月份的英文名称,否则输出***。 例如:输入:123 输出:1+2+3=6→ June 输入:139 输出:1+3+9=13→ *** 要求用指针数组记录各月份英文单词的首地址。 4.任意输入5个字符串,编写一个字符串比较大小的函数,调用该函数按从大到小顺序对字符串进行排序,在主函数中输出排序结果。 5.对数组A中的N(0 struct point sub(struct point a,struct point b) { } 7.基本要求:编写根据三角形三个顶点求面积的函数: float triangle(struct point a, struct point b, struct point c)。 扩展要求:利用上面的函数验证三角形的面积在三个顶点平移后不变。 struct point c; „ „ return c; struct point c; „ „ return c; 因篇幅问题不能全部显示,请点此查看更多更全内容