湖南省计算机二级上机题库.pdf
下列给定程序中,函数fun的功能是:计算5=11)+(叶 1)+.+耳 0)+改1)+人 2)+.1?(11)的值。例如,当 n 为 5 时,函数值应为10.407143o f(x)函数定义如下:f(x)=请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#incl ude#include#include f(double x)(if(x=0.0llx=2.0)return 0.0;else if(x0.0)return(x-l)/(x-2);elsereturn(x+l)/(x-2);)double fun(int n)(int i;double s=0.0,y;fbr(i=-n;i=n;i+)y=f(1.0*i);s+=y;/*,*nd*/return s)void main()systemCTLS);printf(M%fnM,fun(5);)【参考答案】(1)错误:double x)正确:double f(double x)(2)错误:return s 正确:return s;t=l+l/2+l/3+l/4+.+l/m例如,若输入5,则应输出2.283333。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或册U 行,也不得更改程序的结构。试题程序:#include#include#include double fun(int m)(double t=1.0;int I;for(I=2;I=m;I+)/*不*,*und*,*/t+=l.O/k;/*found*/return I;)void main()int m;system(nCLSn);printf(MnPlease enter 1 integer number:);scanf(d”,&m);printf(nnThe result is%lfnH,fun(m);)【参考答案】(1)错误:t+=1.0/k;正确:t+=1.0/I;(2)错误:return I;正确:return t;下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串 s 输入:AaaaBBbl23CCccccd厕反输出结果:upper=5,lower=9。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或册lj行,也不得更改程序的结构。试题程序:#include#include/*Qund*/void fun(char*s,int a,int b)while(*s)/*found*/if(*s=*A&*sv=Z)a+;/*R)und*/if(*s=a&*s=,z,)b+;s+;main()char s100;int upper=0Jower=0;printf(nplease a stringgets(s);fun(s,&upper,&lower);printf(nn upper=%d lower=%dnn,upper,lower);)【参考答案】(1)错误:void fun(char*s,int a,int b)正确:void fun(char*s,int*a,int*b)(2)错误:a+;正确:(*a)+;错误:b+;正确:(*b)+;下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。输出应该是2 0,若输入202,则输出应该是0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include long fun(long num)例如,若输入252,则/*found*/long k;dok*=num%10;/*found*/num=10;while(num);retum(k);)main()int n;printf(MPlease enter a number:);scanf(ld”,&n);printf(,n%ldn,fun(n);)【参考答案】错误:long k;正确:long k=l;错误:num=10;正确:num/=10;下列给定程序中函数fun的功能是:计算n!。例如,给 n 输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或册U 行,也不得更改程序的结构。试题程序:#include#include double fun(int n)double result=1.0;/*f oun d*/if n=0return 1.0;while(n 1&nl 70)*found*/result=n;return result;)void main()(int n;printf(Input N:n);scanf(%d,&n);printf(Hnn%d!=%lAn;n,fun(n);)【参考答案】(1)错误:if n=0 正确:if(n=0)(2)错误:result=n-;正确:result*=n;下列给定的程序中,函数fun的功能是:计算并输出k 以内最大的10个能被13或 17整除的自然数之和。k 的值由主函数传入,若 k 的值为500,则函数的值为4622o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include int fun(int k)int m=O,mc=O,j;while(k=2)&(mc 10)/*found*/if(k%13=0)ll(k%17=0)m=m+k;mc+;k-;/*found*示*/return m;)void main()system(“CLS”);printf(u%dn,fun(500);)【参考答案】错误:if(k%13=0)ll(k%17=0)正确:if(k%l 3=0)ll(k%17=0)(2)错误:缺少大括号正确:加I 卜列给定程序中,函数fun()的功能是:根据整型形参m 的值,计算如下公式的值:请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include double fun(int m)double y=1.0;inti;/*found*/for(I=2;Im;I+4-)/*found*/return(y);)void main()int n=5;system(nCLS);printf(nThe result is%lfnH,fun(n);【参考答案】错误:for(i=2;ivm;i+)正确:for(i=2;i=m;i+)错误:y-=l/(i*i);正确:y-=1.0/(i*i);在主函数中从键盘输入若干个数放入数组中,用 0 结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例(II,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include double fun(int x)/*R)und*/int sum=0.0;int c=0,1=0;while(xI!=0)if(xI0)sum+=xI;C+;)I+;/*found*/sum=sumc;return sum;【参考答案】(1)错误:int sum=O.O;错误:sum=c;正确:double sum=0.0;正确:sum/=c;下列给定程序中,函数ftin的功能是:判断一个整数m 是否是素数,若是返回1,否则返回0。在main函数中,若 fun()返 回 1则输出YES,若 fun()返回0 则输出NO!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include int fun(int m)int k=2;while(k=m&(m%k)/字*found*/k+/*亭*found*不*/if(m=k)return 1;else return 0;void main()int n;system(CLSM);printf(nPlease enter n:);scanf(”d”,&n);if(fun(n)printf(HYESnH);else printf(nNO!n);)【参考答案】(1)错误:k+正确:k r;错误:if(m=k)正确:if(m=k)下列给定程序中,函数fun的功能是:按如下递归公式求函数值。例如,当给n 输 入 5 时,函数值为18;当给n 输入3 时,函数值为14。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun(n)int c;if(n=l)c=10;elsec=fun(n-l)+2;return(c);void main()int n;printf(Enter n:);scanf(d”,&n);printf(The result:%dnn,fun(n);)【参考答案】错误:int fun(n)正确:int fun(int n)(2)错误:if(n=l)正确:if(n=l)下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数列中第n 项的值。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,例如,若 给 n 输 入 7,该项的斐波拉契级数值为13。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include long fun(int g)/*found*/switch(g);case 0:return 0;/*found*/case 1;case 2:return 1;return(fun(g-l)+fun(g-2);void main()long fib;int n;printf(nInput n:u);scanf(n%dn,&n);printf(n=%dn,n);fib=fun(n);printf(,fib=%dnn,fib);)【参考答案】错误:sw itch(g);正确:去掉分号(2)错误:case 1 ;case 2:return 1;正确:case Lease 2:retum 1;下列给定程序小,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a0中的数对调、次最大数和a l 中的数对调。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#define N 20/*,*,*found*不*不*不*/void fun(int*a,int n);int I,m,t,k;for(I=0;In;I+)/*0nd*/m=0;for(k=I+l;kam)m=k;t=aI;aI=am;am=t;)main()(int bN|=11,5,12,0,3,6,9,7,10,8),n=10,i;system(nCLSn);for(i=0;in;i+)printf(%dH,bi);printf(nH);fun(b,n);fbr(i=O;in;i+)printf(M%d,bi);printfCAn);)【参考答案】(1)错 误:void fun(int*a,int n);正4角:void fun(int*a,int n)错误:m=0;正确:m=i;下列给定程序中,函数fun的功能是:将十进制止整数m 转换成 进制数,并按位输出。例如,若输入8 和 2,则应输出1000(即十进制数8 转换成二进制表示是1000)o请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include void fun(int m jnt k);int aa20,i;for(i=0;m;i4-4-)/*found*不*/aai=m/k;m/=k;for(;i;i-)/*nd*/printf(n%d,aai);)main()(int b,n;printf(nnPlease enter a number and a base:nn);scanf(%d%d,&n,&b);fun(n,b);printf(nn );【参考答案】(1)错误:void fun(int m,int k);1E确:void fun(int m,int k)(2)错误:aai=m/k;正确:aai=m%k;错误:printf(d”,aai);正确:printf(”%d”,aai-l);下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(xy)+(z+y)/(zy)的值。其中x和y不相等,z和y不等。例如,当x的值为9,y的值为l l,z的值为15时,函数值为3.50。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include#define FU(m,n)(m/n)float fun(float a,fl oat b,float c)float value;value=FU(a+b,a-b)+FU(c+b,c-b);/*found*/return(Value);)void main()float x,y,z,sum;printf(Input x y z:);scanf(n%f%f%f,&x,&y,&z);printf(x=%f,y=%f,z=%fn”,x,y,z);if(x=yl|y=z)printf(Data error!n);exit(O);)sum=fun(x,y,z);printf(The result is:%5.2fn n,sum);)【参考答案】(1)错误:#define FU(m,n)(m/n)正确:#define FU(m,n)(m)/(n)(2)错误:retum(Value);正确:return(value);下列给定程序中函数fun的功能是:先将在字符串s 中的字符按逆序存放到t 串中,然后把s中的字符按正序连接到t 串的后面。例如,当 s 中的字符串为ABCDE时,则 t 中的字符串应为EDCBAABCDEo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#incl ude#incl ude#include#include void fun(char*s,char*t)(int I,si;sl=strlen(s);for(I=0;Isl;I+)/*found*/tI=ssl-l;for(I=0;Isl;I+)tsl+I=sI;t2*sl=W;)void main()chars100,tI00;system(CLS);printf(HnPlease enter string s:);scanf(s”,s);fun(s,t);printf(The result is:%snt);)【参考答案】(1)错误:正确:下列给定程序中,函 数 fun的功能是:求三个数的最小公倍数。例如,给变量x l、x2、x 3 分别输 入 15、11、2,则输出结果应当是330。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun(int x,int y,int z)intj,t,n,m;/*found*/j=l;t=m=n=l;/*,*found*/while(t!=0&m!=0&n!=0)(j=j+l;t=j%x;m=j%y;n=j%z;)return j;void main()(int xl,x2,x3,j;printf(Input xl x2 x3:);scanf(,%d%d%d,&xl,&x2,&x3);printf(nxl=%d,x2=%d,x3=%dn,xl,x2,x3);j=fun(xl,x2,x3);printf(MThe minimal common multiple is:%dn,j);【参考答案】错误:j=l;正确:j=0;(2)错误:while(t!=0&m!=0&n!=0)正确:while(t!=0 II m!=0 II n!=0)下列给定程序中,函数fun的功能是:从n 个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8 名学生的成绩:80.5 60 72 90.5 98 51.5 88 64则低于平均分的学生人数为4(平均分为75.5625)o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#inckide#include#define N 20int fun(float*s,int n,float*aver)float ave,t=0.0;int count=0,k,i;fbr(k=0;kn;k+)/*tound*/t=sk;ave=t/n;fbr(i=0;in;i+)if(siave)count+;/*found*/*aver=&ave;return count;)void main()float s30,aver;int m,i;system(,CLSn);printf(nPlease enter m:);scanf(,%d,&m);printf(nPlease enter%d mark:nH,m);for(i=0;im;i+)scanf(n%f,s+i);printf(nnThe number of students:%dnM,fun(s,m,&aver);printf(MAve=%fn,aver);)【参考答案】错误:t=sk;正确:t+=sk;(2)错误:*aver=&ave;正确:*aver=ave;下列给定程序中,函数fun的功能是:在字符串的最前端加入n 个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79o请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include void fiin(char s,int n)char a80,*p;inti;/*fOU nd*,*/S=p;for(I=0;In;I+)aI=doaI=*p;/*found*/填空 while(*p);/*found*/aI=,0,;strcpy(s,a);)void main()int n;char s80J;system(CLS);printf(nnEnter a string:n);gets(s);printf(MnThe string:%sns);printf(MnEnter n(number of*):);scanf(d”,&n);fun(s,n);printf(nThe string after inster:%sn,s);)【参考答案】(1)错误:s=p;正确:P=s;应填 P+;或+p;或 p+=l;或 p=p+l;(3)错误:ai=O;正确:ai=,0;或 ai=0下列给定程序中,函数fun的功能是:删除字符串s 中所有空白字符(包括Tab符、回车符及换行符)。输入字符串时用#结束输入。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include fun(char*p)int i,t;char c80;for(i=0,t=0;pti;i+)if(!isspace(*(p+i)ct+=pi;/*fQund*/ct=,OM;strcpy(p,c);)void main()char c,s80;int i=0;printf(Input a string:);c=getchar();while(c!=#1)si=c;i+;c=getchar();)si=0;fun(s);puts(s);)【参考答案】错误:ct二 O;正确下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数ftm中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构。试题程序:#include void fun()int a33,sum;int i,j;/*found*/sum=l;for(i=0;i3;i+)for(j=0;j3;j+)/*found*/scanf(u%dM,ai|j);)for(i=0;i3;i+)sum=sum+aii;printf(MS um=%dn,sum);)void main()(fun();)【参考答案】(1)错误:sum=l;正确:sum=0;错 误:scanf(%d,aij);正确:scanf(%d,&ai|j);下列给定程序中函数fun的功能是:求出字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为abcdabfabcdx,t中的内容为a b 时,输出结果应是abcdx。当字符串中的内容为abcdabfabcdx.t中的内容为abd时,则程序输出未找到的信息Not found!%请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include#include char*fun(char*s,char*t)char*p,*r,*a;/*Qund*/a=Null;while(*s)p=s;r=t;while(*r)/*found*/if(r=p)r+;p+;else break;if(*r=O)a=s;s+;)return a;)void main()char s100,t100,*p;systemCCLS);printf(nnPlease enter string S:);scanf(%s,s);printf(nnPlease enter substring t:);scanf(%sn,t);p=fun(s,t);if(p)printf(MnThe result is:%sn M,p);else printf(nNot found!n);)【参考答案】错误:a=Null;正确:a=NULL;(2)错误:if(r=p)r+;p+;正确:if(*r=*p)r+;p+;下列给定程序中,函数fun的功能是:将字符串t t中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入Ab,cD,则输出AB,CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#includechar*fun(char tt)int I;/*found*/for(I=0;tt 1;1+)if(a,=ttI)ll(ttI=z1)/*/ttI+=32;retum(tt);)main()charsystem(CLSn);printf(MnPlease enter a string:);gets(tt);printf(nnThe result string is:n%sfun(tt);【参考答案】(1)错误:ll正确:&(2)错误:tti+=32 正确:tti-=32;下列给定程序中,函数fun的功能是:计算s 所指字符串中含有t 所指字符串的数目,并作为函数值返回。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include#include#define N 80int fun(char*s,char*t)int n;char*p,*r;n=0;/*found*/P=&s0;*r=t;while(*p)(if(*r=*p)(r+;if(*u=(y)(n+;/*次 1;)P+;)return n;)void main()char aN,bN;int m;system(,CLSn);printf(HnPlease enter string a:);gets(a);printf(nnPlease enter substring b:);gets(b);m=fun(a,b);m=printf(nnThe result is:m=%dn,m);【参考答案】(1)错 误 正 确:r=t;应填:r=t;或 r=&tO;下列给定程序中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t 中。高位仍在高位,低位仍在低位。例如当s 中的数为87653142时,t 中的数为7531。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#inckidevoid fun(long sjong*t)int d;long sl=l;/*字 不*nd*不*不*/t=0;while(s0)d=s%10;/*found*/if(d%2=0)*t=d*sl+*t;sl*=10;)s/=10;)void main()long s,t;system(,CLS,);printf(nPlease enter s:);scanf(“ld”,&s);fun(s,&t);printf(The result is:%ldn,t);【参考答案】(1)错误:t=0;正确:*t=0;(2)错误:if(d%2=0)正确:if(d%2!=0)下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给 a 和 b 分别输入60和 65,输出为:a=65b=60请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include/*jQund*字*示*/void fiin(int a,b)int t;/*fQund*/t=b;b=a;a=t;void main()int a,b;system(CLSn);printf(nEnter a,b:”);scanf(%d%d&a,&b);fun(&a,&b);printf(na=%d b=%dn M,a,b);)【参考答案】(1)错误:void fun(int a,b)正确:void fun(int*a,int*b)(2)错误:t=b;b=a;a=t;正确:t=*b;*b=*a;*a=t;下列给定程序中,函 数 fu n 的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5 位 8 进制数字。例如,若输入77777,则输出将是32767。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include int fun(char*p)int n;/*found*/n=*p-,o;P+;while(*p!=0)/*Qund*/n=n*7+*p-,o,;P+;)return n;)main()(chars 6;int i;int n;printf(Enter a string(octal digits):);gets(s);if(strlen(s)5)(printf(Error:string too longer!please input again!nnn);exit(O);)for(i=0;si;i+)if(si7,)(printf(Error:%c not is octal digits!nn!nnM,si);exit(O);)printf(The original string:);puts(s);n=fun(s);printf(nn%s is convered to intege number:%dnn,s,n);)【参考答案】错误:n=*p-o 正确:n=*p-O 错误:n=n*7+*p-o 正确:n=n*8+*p-*0下列给定程序也函数fun的功能是:用冒泡法对6 个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include#include#define MAXLINE 20/*nd*/fun(char*pstr6)int I,j;char*p;for(I=0;I5;I+)for(j=I+l;j0)p=*(pstr+I);/*fjund*/*(pstr+I)=pstr+j;*(pstr+j)=p;)void main()inti;char*pstr6,str6MAXLINE;system(LSM);fbr(i=0;i6;i+)pstri=stri;printf(nEnter 6 string(1 string at each line):n);fbr(i=0;i6;i-w-)scanf(%sH,pstri);fun(pstr);printfCThe strings after sortingAn);fbr(i=0;iO)正确:if(strcmp(*(pstr+i),*(pstr+j)0)错误:*(pstr+i)=pstr+j;正确:*(pstr+i)=*(pstr+j);下列给定的程序中,函数fun的功能是:用选择法对数组中的n 个元素按从小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#define N 20void fun(int a,int n)intl,j,t,p;for(j=0;jn-l;j+)*不*und*,*/p=jfor(I=j;In;I+)if(aIap)/*found*/p=j;t=apl;a|p|=a|j|;a|j=t;)void main()int aN=9,6,8,3,-l,i,m=5;printf(排序前的数据:);for(i=0;im;i+)printf(%dai);printf(nnM);fun(a,m);printf(排序后的顺序:”);for(i=0;ihi gh,查找结束。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#define N 10/*found*/void fiin(int a,int m)int low=0,high=N-l,mid;while(low=high)mi d=(l o w+hi gh)/2;if(m=amid)low=mid+l;else retum(mid);)retum(-l);)void main()inti,a|N=-3,4,7,9,13,24,67,89,100,180,k,m;printf(a数组中的数据如下:);for(i=0;i=0)printf(,m=%d,index=%dn,m,k);elseprintf(Not be found!nH);)【参考答案】(1)错误:void fun(int a|,int m)正确:int fun(int a,int m)(2)错误:else if(m=amid)1E确:else if(mamid)下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函 数 fu n 的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include typedef struct aa int data;struct aa*next;NODE;int fun(NODE*h)int sum=O;NODE*p;p=h-next;/*found*/while(p-next)if(p-data%2=0)sum+=p-data;/*亭*found*不*/p=h-next;)return sum;)NODE*creatlink(int n)(NODE*h,*p,*s;int i;h=p=(NODE*)malloc(sizeof(NODE);fbr(i=l;idata=rand()%16;s-next=p-next;p-next=s;p=p-next;)p-next=NULL;return h;)outlink(NODE*h)NODE*p;p=h-next;printf(Hnn The LIST:nn HEAD);while(p)printf(-%d,p-data);p=p-next;|printf(,nn);)void main()NODE*head;int sum;system(uCLS);he ad=cre atlink(lO);outlink(head);sum=fun(head);printf(HnSUM=%dn,sum);【参考答案】错误:while(p-next)正确:while(p!=NULL)(2)错误:p=h-next;正确:p=p-next;下列给定程序中,函数fun的功能是:求表达式s=aaaa.-aaaaa(此 处 aa.aa表 示 n 个 a,a和 n 的值在1至 9 之间)的值。例如a=3,n=6厕以上表达式为:s=333333-33333-3333-333-33-3其值是296298。a 和 n 是函数fun的形参,表达式的值作为函数值传回main函数。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include long fun(int a,int n)intj;/*萃*found*/long s=O,t=l;/*found*/for(j=0;j=n;j+)t=t*10+a;s=t;for(j=l;jn;j+)(/*fioun d*/t=t%10;s=s-t;)return(s);)main()(int a,n;printf(MnPlease enter a and n:);scanf(,%d%d,&a,&n);printf(MnThe value of function is%ldn,fun(a,n);)【参考答案】(1)错误:long s=O,t=l;正确 Jong s=0,t=0;(2)错误:for(j=O;j=n;j+)正确:for(j=O;jn;j+)(3)错误:t=t%10;正确:t=t/l 0;下列给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。例如,若 m 的值为5,则应输出:1.463611。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include double fun