《二级C语言试题6.pdf》由会员分享,可在线阅读,更多相关《二级C语言试题6.pdf(117页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、填空题请补充fu n函数,fu n函数的功能是求m的阶乘。请勿改动主函数m a i n与其他函数中的任何内容,仅在fu n函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#i n c l u d e l o n g fu n(i n t m)i f(一1一)ret u rn (m*fu n (_ _ _ 2 _ _ _);ret u rn _ _ _ 3 _ _ _;)m a i n ()p ri n t f(8!=%l d nn,fu n (8);二、改错题下列给定程序的功能是:读入一个整数n (2 Wn W5 0 0 0),打印它的所有为素数的因子。例如,若输入整数1
2、 2 3 4,则应输出:2、6 1 7 o请修改程序中的错误,使程序能得出正确的结果。注意:不要改动m a i n函数,不能增行或删行,也不能更改程序的结构。#i n c l u d e#i n c l u d e/*erro r*/Pri m e(i n t m);i n t j,p;P=l;/*erro r*/fo r(j=2;j m;j+)i f!(m%j)p=0;b rea k;ret u rn(p);)m a i n ()i n t i,n;p ri n t f(Mn p l ea s e en t er a n i n t eger n u m b erb et ween 2 a
3、n d 5 0 0 0:);s c a n f(%d ,&n);p ri n t f(f,n n Th e p ri m e fa c t o r(s)o f%di s(a re):,n);fo r(i=2;i n;i+)i f(!(n%i)&(Pri m ed)p ri n t f(%4 d,”,i);p ri n t f(n );三、编程题数组p o i n i中存放着m个人的成绩,请编写函数fu n,它的功能是:返回高于平均分的人数,并将高于平均分的分数放在h i gh所指的数组中。例如,当p o i n t数组中的数据为5()、6()、6 5、7()、7 5、8()、8 8、9 0、9
4、 5时,函数返回的人数应该是5,h i gh中的数据应为7 5、8 0、8 8、9 0、9 5。请勿改动主函数m a i n与其他函数中的任何内容,仅在函数fu n的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#i n c l u d e#i n c l u d e#i n c l u d e i n t fu n(i n t p o i n t,i n t n,i n t h i gh)m a i n()i n t j,mz h i gh 9;i n t p o i n t 9=5 0,6 0,6 5,7 0,7 5,8 0,8 8,9 0,9 5);FILE*o u t;m=f
5、u n(p o i n t,9,h i gh);p ri n t f(n Hi gh t h e a vera ge p o i n t a re:);o u t=fo p en(o u t fi l e.d a tn,n w);fo r(j=0;j l (2)m-1 (3)1二、(1)Pri m e(i n t m)(2 )i f(!(m%j)三、i n t j,k=0z a vera ge=0;fo r(j=0;j n;j +)a vera ge+=p o i n t j ;/统计总分数a vera ge/=n;/求平均分fo r(j=0;j a vera ge)h i gh k=p o
6、i n t j;k+;/统计大于平均分的人数ret u rn k;一、填空题请补充fu n函数,该函数的功能是:判断一个年份是否为闰年。例如,2 0 0 7年不是闰年,2 0 0 8是闰年。请勿改动主函数m a i n与其他函数中的任何内容,仅在fu n函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#i n c l u d e#i n c l u d e i n t fu n(i n t n)i n t fl a g=0;i f(n%4=0)i f(_ _ _ 1 _ _ _)fl a g=l;i f(一2一)fl a g=l;ret u rn _ _ _ 3 _ _ _;
7、m a i n ()(i n t y ea r;p ri n t f(nIn p u t t h e y ea r:H);s c a n f(%dn,&y ea r);i f(fu n(y ea r)p ri n t f(n%d i s a l ea p y ea r.nM,y ea r);el s ep ri n t f(%d i s n o t a l ea p y ea r.nn,y ea r);)二、改错题下列给定程序中,fu n函数的功能是:根据形参n,计算如下公式的值。,111 12 3 4 n例如,若输入5,则应输出2.2 8 3 3 3。请修改程序中的错误或在横线处填上适当的内
8、容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include double fun(int n)double s=l.0;int i;/*error*/for(i=2;i=n;i+)s+=l.0/k;/*error*/一填空一)main()int n;printf(nnplease enter 1 integer numbers:n);scanf(n%d,&n);printf(nnnthe result is%lfn,fun(n);三、编程题请编写函数fu n,它的功能是:求出1到500之内能被7或11整除,但不能同
9、时被7和11整除的所有整数,并将它们放在b所指的数组中,通过m返回这些数的个数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include void fun(int*b,int*m)()main()int a 500,m,i;FILE*out;fun(a,&m);out=fopen(outfile.dat,w);for(i=0;im;i+)i f(i+1)%10=0)printf(n%5dnH,ai);fprintf(out,ndn,a i);else printf(n%5d,ai);fprintf(o
10、utz n%dzz a i);fclose(out);一、【答案及难度指数】(1)n%100!=0(2)n%400=0(3)flag二、【答案及难度指数】(1)s+=l.0/i;(2)return s;三、【答案及难度指数】int j,k=0;for(j=2;j500;j+)/循环条件if(j%7=0|j%ll=0)&j%77!=0)bk+=j;/将结果放入数组b*m=k;/将累加器值赋值给m一、填空题函数fun的功能是:从三个形参x、y、z中找出中间的那个数,作为函数值返回。例如,当x=12L y=456,z=333时,中间的数为333。请勿改动主函数main与其他函数中的任何内容,仅在fu
11、n函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include int fun(int a,int b,int c)int temp;temp=(ab)?(bc?b:(ac?c:_ 1_):(ac)?_ 2_ :(bc)?c:_ 3_);return temp;main()int x=121,y=456,z=333,mid;mid=fun(x,y,z);printf(nThe middle number is:%dnH,mid);二、改错题下列给定程序中,函数fun和quest的功能是:用二分法求方程2xL4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。例如
12、,若给m输入-5 0,给n输入3 0,则函数求得的一个根值为2.000。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include double quest(double x)return(2*x*x*x-4*x*x+3*x-6);double fun(double m,double n)/*error*/int r;r=(m+n)/2;/*error*/while(fabs(n-m)0.001)if(quest(r)*quest(n)0)m=r;elsen=r;r=(m+n)/2;)return r;main()(d
13、ouble mz n,result;printf(Please input m n:nn);scanf(H%lf%lfnz&m,&n);result=fun(m,n);printf(result=%6.3fn,result);三、编程题请编写函数void fun(int y,int b 它的功能是:求出能整除y且是奇数的各整数,并按从小到大的顺序放在b所指的数组中,这些除数的个数通过形参m返回。例如,若y中的值为9 0,则有4个数符合要求,它们是1、3、5、9、15、45o请勿改动主函数main与其他函数中的任何内容,仅在函数ftin的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#
14、include#include void fun(int y,int b r int*m)main()int yz a 500,m,j;FILE*out;printf(nnPlease input an integer number:n);scanf(n%d,&y);fun(y,a,&m);for(j=0;jm;j+)printf(n%d n,aj);printf(nnn);fun(730,a,&m);out=fopen(outfile.dat,w);for(j=0;j0.001)【答案及难度指数】int j=l,i=0,k=0z*s=b;for(j=0;j=y;j+)i f(j%2!=0)s
15、i=j;i+;for(j=0;j#include#include#define M 60void fun(char*t)int j,m=strlen(t)-l;char s;for(j=0;jm;j+,_ 1_)s=t j;一2一;一3一;)main()char bM;printf(MInput a string:n);gets(b);printf(The original string is:);puts(b);fun(b);printf(nn);printf(The reversal string:);puts(b);二、改错题下列给定程序中,函数fun的功能是:判断字符ch是否与s所指串
16、中的某个字符相同,若相同,则什么也不做;若不同,则将其插在串的最后。请修改程序中的错误,使它能得出正确的操作。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#include void fun(char s,char c)while(*s&*s!=c)s+;i f(*s=*c*)s0=c;s 1=,0 1;main()(char str81,ch;printf(n Please enter a string:nn);gets(str);printf(nn Please enter the characterto search:;ch=getch
17、ar();fun(str,ch);printf(HnThe result is%sn*,str);三、编程题请编写函数fu n,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为:3 5 7 99 9 9 49 9 9 8则函数值为72。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#define M 3#define N 4int fun(int bMN)main()int aM N=3,5,7,9,9,9,9,4,9,9,9,8;
18、int i,j,sum;FILE*out;printf(The original data is:nf,);for(i=0;iM;i+)for(j=0;jN;j +)printf(%6dza(i j);printf(nnH;sum=fun(a);printf(nnThe sum:%dnH,sum);printf(unH);out=fopen(outfile.dat,w);fprintf(out,sum);fclose(out);【答案及难度指数】(1)m (2)t j =t m(3)t m=s【答案及难度指数】(1)void fun(char*s,char c)(2)if(*s=101)(3)
19、sl=,0,;【答案及难度指数】int i,j,s=0;for(j=0;jN;j+)/统计行元素 s+=b0j;s+=bM-lj;for(i=l;i=M-2;i+)/统计列元素s+=bi0;s+=biN-l;return s;一、填空题请补充main函数,该函数的功能是:从键盘输入个长整数,如果这个数是负数,则取它的绝对值,并显示出来。例如,输入:-666,结果为:666o仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#include main()long int a;printf(MEnter the data:n);scanf
20、(_ 1_);printf(The origial data is%ldnn,a);if(a0)_ 2_;printf(n);printf(_3_);二、改错题下列给定程序中函数fun的功能是:求出在字符串中最后次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为abcdabfabcdx,t 中的内容为ab时,输出结果应是:abcdxo当字符串中的内容为abcdabfabcdx,t 中的内容为abd时,则程序输出未找到信息not found!。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不
21、能增行或删行,也不能更改程序的结构。#include#include#include char*fun(char*str,char*t)(char*pz*rz*s;/*error*/S=NuLL;while(*str)p=str;r=t;while(*r)/*error*/if(r=p)r+;p+;elsebreak;if(*r=0)s=str;str+;return s;main()char str100,t100,*p;printf(nnplease enter string s:);scanf(%s H,str);printf(nplease enter substring t:u);s
22、canf(H%s,t);p=fun(str,t);if(p)printf(nthe result is:%snH,p);elseprintf(Mnnot found!nn);三、编程题编写函数int fun(int mm,int bM AX),该函数的功能是求出小于或等于mm的所行索数,并放在b数组中,该函数返回所求出的素数的个数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#define MAX 100int fun(int mm,int b MAX)main()int m,i,sum;
23、int bMAX;FILE*OUt;printf(input a data:nn);scanf(%d,&m);sum=fun(m,b);for(i=0;isum;i+)if(i%10=0&i!=0)printf(nnH);printf(%5dzbi);sum=fun(28,b);o u t=f o p e n(o u t f i l e.d a t ,w );f o r(i=0 ;i l;i-)f o r (j=2;j =i)/若是素数,将其存入b b k=i;k+;r e t u r n k+;一、填空题请补充函数f u n,它的功能是:计算并输出m (包括m)以内能被2 或5 整除的所有自
24、然数的倒数之和。例如,在主函数中从键盘给m输入2 1 后,输出为:s=1.7 3 1 1 5 1 o请勿改动主函数m a i n 与其他函数中的任何内容,仅在f u n 函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#i n c l u d e d o u b l e f u n(i n t m)i n t j;d o u b l e t o a l=0.0;f o r (j=l;_ _ _ 1 _ _ _ _;j +)i f(j%2=0 _ _ _2 _ _ _ j%5=0)t o a l+=_ _ _3 _ _ _/j;r e t u r n t o a l;m a i
25、 n ()i n t m;d o u b l e f;p r i n t f(n l n p u t m:n);s c a n f(%d ,&m);f=f u n(m);p r i n t f(n n n s=%f nn,f);二、改错题下列给定程序中,函数f t m 的功能是:按以下递归公式求函数值。1 0 (n=l)f u n(n)=f u n(n-l)+2 (nl)例如,当给n输入6 时,函数值为2()。请修改程序中的错误,得出正确的结果。注意:不要改动ma i n函数,不能增行或删行,也不能更改程序的结构。#i nc l u d e /*e r r or*/i nt f u n(n)i
26、 nt m;/*e mor*/i f (n=l)m=1 0;e l s em=f u n(n-1)+2;r e t u r n(m);ma i n()i nt n;pr i nt f (*Ent e r n:n);s c a nf (1 1%d ,&n);pr i nt f(Th e r e s u l t:%d n nn,f u n(n);三、编程题请编写函数f u n,对长度为7 个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。例如,原来的字符串为Ju s t a b c,则排序后输出为Ju l s b a c。请勿改动主函数ma i n与其他函数中的任何内容,仅在函
27、数f u n的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#i nc l u d e#i nc l u d e#i nc l u d e#i nc l u d e v oi d f u n(c h a r *s t r,i nt n)ma i n()c h a r s t r 1 0 ;FILE*ou t;pr i nt f (i npu t s t r i ng wi t h s e v e n c h a r a c t e r s :n);g e t s (s t r);f u n(s t r,7);pr i nt f(n%sn,s t r);ou t=f ope n(nou
28、 t f i l e.d a tn,Mw);s t r c py(s t r,Ju s t s d f );f pr i nt f(ou t,n%sn,s t r);f c l os e(ou t);【答案及难度指数】(1)j =m(2)|(3)1.0【答案及难度指数】(1 )i nt f u n(i nt n)(2 )i f(n=l)【答案及难度指数】c h a r t;i nt i,j;f or (i=l;i n-2;i +)/对n个元素进行循环选择f or(j=i+l;j n-l;j+)i f(s t r i s t r j )t=s t r i ;s t r i =s t r j ;s
29、 t r j =t;一、填空题请补充f u n函数,该函数的功能是把从键盘输入的3个整数按从大到小输出。例如,输入1 1 6 5 1 3,结果输出6 5 1 3 1 1。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#i nc l u d e#i nc l u d e ma i n()i nt a,b,c,t;pr i nt f (nInpu t a,b,c nT,);s c a nf(n%d%d%d ,&a,&b,&c);i f (_ _ _ 1 _ _ _ _)t=a;a=b;b=t;i f (_ _ _ 2 _ _ _ _)t=c;c=a;
30、a=t;i f (一3一)t=b;b=c;c=t;pr i nt f(nTh e r e s u l t nn);pr i nt f (nf r om b i g t o s ma l l:%d%d%d n,a,b,c);二、改错题下列给定程序中,计算如下公式的值:2x2 3x3 mx m函数fun的功能是:根据整型形参m的值,计算上面公式。例如,若m的值为1 0,则应输出:0.450232o请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#i nc l u d e#i nc l u d e d ou b l e f u n(i nt m)
31、d ou b l e c=l.0;i nt k;/*e r r or*/f or(k=2;k m;k+)/*e r r or*/c-=l/(k*k);r e t u r n(c);ma i n()i nt pa r a=1 0;pr i nt f(n nTh e r e s u l t i s%l f n,f u n(pa r a);三、编程题请编写一个函数fu n,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串:9 9 9,则函数把它转换为整数值:999。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入
32、所编写的若干语句。注意:部分源程序给出如下。#i nc l u d e#i nc l u d e l ong f u n(c h a r *s t r)()ma i n()c h a r s 1 0 ;l ong n;FILE*ou t;c h a r *t =,1 2 3z 7 8 9 ,M7 1 0 2w,n-4356M);pr i nt f(Ent e r a s t r i ng:nn);g e t s (s);n=f u n(s);pr i nt f (,Id Xn n);ou t=f ope n(nou t f i l e.d a tn,w);f or (n=0;n 4;n+)f
33、pr i nt f(ou t,%l d nz f u n(t n);f c l os e(ou t);【答案及难度指数】(1 )a b (2 )a c (3)b c【答案及难度指数】(1 )f or(k=2;k=m;k+)(2 )c-=l.0/(k*k);【答案及难度指数】l ong s=0,t;i nt 1=0r j,n=s t r l e n(s t r)z k/s i;i f (s t r 0 =-)i +;f or(j=i;j =n-l;j+)t=s t r s l=1 0;f or(k=j;k n-l;k+)t*=s l;s+=t;i f(s t r 0 =-)r e t u r n
34、-s;e l s er e t u r n s;一、填空题给定程序的功能是分别统计字符串中大写字母和小写字母的个数。例如,给字符串str输入:sfd34ddfoFFDEsd23sdf,则输出结果应为:cap=4,min二 13请勿改动函数中的其他内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#i nc l u d e v oi d f u n(c h a r *s t r,i nt *xz i nt *y)wh i l e(*s t r)(i f(*s t r=A&*s t r=*a *&*s t r =z )_ _ _2 _ _ _;s t r+;ma i n()c
35、h a r s t r 1 0 0 ;i nt c a p=0,mi n=0;pr i nt f (n nPl e a s e a s t r i ng t o c ou nt :*);g e t s (s t r);f u n(s t r,&c a p,&mi n);pr i nt f (n n c a p=%d mi n=%d n,_ _ _ 3_ _ _);二、改错题下列给定程序中,函数fun的功能是:根据以下公式求冗值,并作为函数值返回。n,1 1 2 3 1 2 3 4=+4-X X +X X X +2 3 3 5 7 3 5 7 9例 如,给 指 定 精 度 的 变 量eps输 入
36、0.0005时,应 当 输 出Pi=3.140578 o请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#i nc l u d e#i nc l u d e#include double fun(double eps)double r,temp;int m=l;r=0.0;/*error*/temp=0;/*error*/while(temp=eps)r+=temp;temp=(temp*m)/(2*m+l);m+;return(r*2);main()double x;printf(HnPlease enter a precisio
37、n:H);scanf(%1f n,&x);printf(neps=%lfz Pi=%lfnnz x,fun(x);三、编程题请编写一个函数fun,它的功能是:比较两个字符串的长度(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入beijing和shanghai两个字符串,函数将返回shanghai。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如卜;#include char*fun(char*str,char*t)main()char a 20fb 10,*p
38、z*q;int i;FILE*out;printf(Input one string:n);gets(a);printf(Input another string:);gets(b);printf(sXn,fun(a,b);out=fopen(Moutfile.datn,nwn);fprintf(out,n%s,fun(hunan,changsha”);fclose(out);【答案及难度指数】(1)(*x)+(2)(*y)+(3)cap,min【答案及难度指数】(1)temp=l.0;(2)while(temp=eps)【答案及难度指数】char*p,*s l=s t r;int n=0,m
39、=0;while(*sl)/计算串str的长度n,其中si为临时指针 n+;sl+;while(*tl)/计算串t的长度m,其中为临时指针 m+;t1+;if(n=m)/比较m和n的值,设置p指向较大的指针p=str;elseP=t;return p;一、填空题给定程序的功能是求1/4的圆周长,函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:L=n d,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的直径值:19.527,输出为:15.3364 57。请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#incl
40、ude double fun(double d)return 3.14159*_1_/4.0;main()double z;printf(Input the d of the round:);scanf(n%1 f,&_ 2_);print f(n L=%lfn n,fun(_ 3_);二、改错题下列给定程序中函数fbn的功能是:计算正整数m的各位上的数字之积。例如,若输入202,则输出应该是0。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include long fun(long n)/*error*/long r;
41、dor*=n%10;/*e r r o r*/n=10;while(n);return(r);)main()long m;printf(nplease enter a number:n);s c a n f&m);printf(n%ldn,fun(m);三、编程题请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组b中,通过n返回这些数的个数。例如,若传送给m的值为2 0,则程序输出7 11 14。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#defi
42、ne N 100void fun(int m,int*b,int*n)main()int aN,n,i;FILE*out;fun(20,a,&n);for(i=0;in;i+)i f(i+1)%20=0)printf(%4dnn,a i);elseprintf(H%4dl,ai);printf(nnH);out=fopen(outfile.dat“,;fun(100,a,&n);for(i=0;in;i+)if(i+l)%10=0)fprintf(out,n%4dnn,a i);elsefprintf(out,a i);fclose(out);【答案及难度指数】(1)d(2)z(3)z【答案及
43、难度指数】(1)long r=l;(2)n/=10;【答案及难度指数】int i,j=0;*n=0;for(i=l;i=m;i+)if(i%7=0|i%ll=0)bj=i;j+;*n=j;一、填空题函数fun的功能是:统计长整数te s t的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回生函数。例如,当 test=89431676 时,结果应该为:sum5=0 sum6=2sum7=lo请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include int sum5,sum6,s
44、um7;void fun(long test)sum5=sum6=sum7=0;while(test)switch(_ 1_)case 5:sum5+;_ 2_;case 6:sum6+;_ 3_;case 7:sum7+;)test/=10;)main()long test=89431676L;fun(test);printf(MnThe count result:nH);printf(Mtest=%ld sum5=%d sum6=%dsum7=%dnH z test,sum5,sum6,sum7);二、改错题下列给定程序中,函数fun的功能是:将字符串str中的小写字母都改为对应的大写字母
45、,其他字符不变。例如,若输入asAS”,则输出ASAS。请修改程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#include#include#include string.hchar*fun(char str)int i;/*error*/for(i=0;stri;i+)if(stri=aT)|(stri=z1)str i+=32;return(str);main()char str81;printf(nnPlease enter a string:);gets(str);printf(nThe result stringis:n%sn
46、,fun(str);三、编程题请编写个函数f u n,它的功能是:找出一维整型数组元素中最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中a是数组名,n是a中的数据个数,min存放最小值,flag存放最小值所在元素的下标。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#include string.hvoid fun(int b,int nz int*minz int*d)main()int i,a20,min,flag,n=10;FILE*
47、out;for(i=0;i=,a,)&(s t r i =,z1)(2 )s t r i -=3 2;【答案及难度指数】i n t i;*m i n=b 0 ;/设置最小值初值*d=0;/设置最小值标志位初值f o r(i=0;i n;i+)i f (b i *m i n)*m i n=b i ;*d=i;一、填空题请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为-1时结束。例如,输入96 121 23 343 232 54 89 365 89-1时,最大的数为 365。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意
48、:部分源程序给出如下。#i n c l u d e#i n c l u d e#d e f i n e N U M 1 0 0m a i n ()i n t n N U M ;i n t i=-l;i n t M A X=-1;p r i n t f (n I n s e r t i n t e g e r w i t h t h e 1-11 a s e n d:n”);d o i+;p r i n t f(nn%d =,i);s c a n f _ _ _1 _ _ _);M A X=_ _ _2 _ _ _n i :M A X;w h i l e (3-);p r i n t f(T h
49、 e M A X=%d nn,M A X);二、改错题下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其数值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字。例如,若输入11111,则输出将是468 n请修改程序中的错误,使它能得出正确结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。#i n c l u d e#i n c l u d e#i n c l u d e i n t f u n(c h a r *s)i n t n;/*e r r o r*/n=*s-o1;s+;/*e r n o r*/w h i l e(*s!=
50、0)n=n*7+*p-1o s+;r e t u r n n;m a i n()c h a r s t r 6 ;i n t i;i n t n;p r i n t f(E n t e r a s t r i n g (o c t a l d i g i t s):“);g e t s (s t r);i f(s t r l e n(s t r)5)p r i n t f(E r r o r:s t r i n g t o o l o n g e r!n nn);e x i t (0);)f o r(i=0;s t r i ;i+)i f (s t r i 7)p r i n t f(E r