2013~2014C语言程序设计1第一套一、改错题1.题目要求下列给定程序中函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,z和y的值不相等。例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#include#include#include/************found************/#defineFU(m,n)((m/n))floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/************found************/Return(Value);}main(){floatx,y,z,sum;printf("Inputxyz:");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%f\n",x,y,z);if(x==y||y==z){printf("Dataerror!\n");exit(0);}sum=fun(x,y,z);printf("Theresultis:%5.2f\n",sum);}2.算法分析①#defineFU(m,n)((m/n))错误这样定义FU(m,n)造成语句value=FU(a+b,a-b)+FU(c+b,c-b)执行为value=(a+b/a-b)+(c+b/c-b),所以应该将语句#defineFU(m,n)((m/n))改为#defineFU(m,n)(m)/(n)②语句Return(Value);错误C语言中大小写字母有不同的含义,此处希望执行返回value的值的操作,所以应该改为return(value);二、填空题1.题目要求下列给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:1234567892013~2014C语言程序设计2计算后结果为10065010149请在程序的下划线处填入正确的内容并把下划线删除。使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得改程序的结构!#include#defineN4voidfun(int(*t)___1___){inti,j;for(i=1;ivoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}2.算法分析(1)主要数据结构char*a(2)算法描述①记录第一个非*的符号的地址;②将包括第一个在内的非*字符串全部赋予另一个数组。3.实现代码2013~2014C语言程序设计4voidfun(char*a){char*p=a;while(*p=='*')p++;for(;*p!='\0';p++,a++)*a=*p;*a='\0';}4.程序调试及测试结果经运行程序调试,将出现的错误分析如下:(1)编译错误(2)连接错误(3)运行错误经过修改程序测试结果正确,符合要求。第二套一、改错题1.题目要求下列给定程序中,函数fun的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。请改...