下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:

题目

下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:

参考答案和解析
正确答案:

【解析】由主函数的调用可知,函数proc()没有返回值。因此,“proc(char*pstr[6])”应改为“voidproe(char*pstr[6])”。题目中要求按字符串由小到大的顺序进行排序,需要比较每一个字符串的大小,因此,“if(strcmp(*(pstr+i),pstr+j)>0)”应改为“if(strcmp(*(pstr+i),*(pstr+j))>O)”。顺序不对的2个字符串要互换其指针所指向的地址,赋值的两个变量其类型应该相同,因此,“*(pstr+i)=pstr+j;”应改为“*(pstr+i)=*(pstr+j);”。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

给定程序MODll.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)char*fun(char*schar*t)(2)ss++; (3)tt++;
(1)char*fun(char*s,char*t)(2)ss++; (3)tt++; 解析:本题中函数的功能是比较两个字符串,将长的那个字符串的首地址作为函数值返回。解题思路是对调试过程中产生的错误提示进行跟踪,也就是题干中给出的错误标识符号下的语句。

第2题:

给定程序MODll.C中函数fun的功能是:计算n!。

例如,给n输入5,则输出120.000000。

请改正程序中的错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)if (n==0) (2)result *=n--;
(1)if (n==0) (2)result *=n--; 解析:本题中函数的功能是计算阶乘,其中,阶乘的计算公式分为参数n是1和大于1两种情况,例如,1的阶乘1!=1;5的阶乘5!=5×4×3×2×1。

第3题:

给定程序MODll.C中函数fun的功能是:根据整型形参n,计算如下公式的值。

例如,若n=10,则应输出:0.617977。

请改正程序中的语法错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)float fun(int n)(2)for(i=2;i<=n;i++)
(1)float fun(int n)(2)for(i=2;i<=n;i++) 解析:本题中函数的功能是计算公式的值。其中,每一项的分母是前一项的值加1。

第4题:

给定程序MODll.C中函数fun的功能是:根据整型形参m,计算如下公式的值。

例如,若m中的值为:5,则应输出:1.463611。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)for(i=2; i=m; i++)(2)y+=1.O/(i*i);
(1)for(i=2; i=m; i++)(2)y+=1.O/(i*i); 解析:该题中函数功能是计算公式的值。其中,公式中涉及在循环中对各项的计算及累加求和。从已给定源程序的main主函数开始入手,“printf(〝\nThe result is%1f\n〞,fun(n));”语句中调用fun函数,计算公式的值。

第5题:

给定程序MODll.C中函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。

例如,若输入:edcba,则应输出:abcde。

请改正程序中的错误,使它能统计出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])
(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1]) 解析:本题中函数的功能是读入一个字符串(长度20),将该字符串中的所有字符按ASCII码升序排序后输出。本题思路是利用字符串长度作为循环的控制条件,然后在循环过程中将字符按.ASCII码排序。

第6题:

给定程序MODll.C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但z转换为A,z转换为a),其他字符不变。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)while(*s)或while(*s!=ˋ\0ˊ)或while(*s!=0) (2)s++;
(1)while(*s)或while(*s!=ˋ\0ˊ)或while(*s!=0) (2)s++; 解析:本题中函数的功能是将字符串中的字母改为该字母序列的后续字母。首先判断字母是否为字母,如果是字母则进行转换。

第7题:

下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!


正确答案:
(1)fh(j=i+1;j<6;j++)(2)*(pstr+i)=}(pstr+j);【考点分析】本题考查:冒泡排序算法;for循环语句格式;指针数组。【解题思路】(1)此处考查for语句的格式,各表达式之间应用“;”隔开。(2)此处考查用指针表示数组元素的方法,}(pstr+I)表示pstr所指向数组的第1个元素,同理}(pstr+j)表示pstr所指向数组的第j个元素。【解题宝典】冒泡排序算法,其基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。依次类推,完成排序。用代码实现数组s[N]的升序排列为:for(i=0;i<N;i++)for(j=i十1;j<N;j++)if(s[i]>s[j]){t-s[i];s[i]=s[j]s[j]=t;}

第8题:

给定程序MODll.C中fun函数的功能是:求出以下分数序列的前n项之和。

和值通过函数值返回main函数。

例如,若n=5,则应输出:8.391667。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


正确答案:(1)double fun(int n)(2)c=a;a+=b;b=c;
(1)double fun(int n)(2)c=a;a+=b;b=c; 解析:本题中函数的功能是求出分数序列的前n项之和。首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的和。每一项的分母是前一项的分子,分子是前一项分子和分母的和。

第9题:

给定程序MODll.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。

例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.141480。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。


正确答案:(1)t=1; (2)return(2*s);
(1)t=1; (2)return(2*s); 解析:该题中函数功能是根据公式计算π值。从已给定源程序的main.主函数开始入手,通过键盘输入制定精度,然后通过“printf“\neps=%lf,Pi=%lf\n\n”,x,fun(x));”语句来调用fun函数。

第10题:

下列给定程序中,函数proc()的功能是:将m(1≤m≤10)个字符串反着连接起来,组成一个新串,放入pt所指字符串中,例如,把“ab、cd、ef9”3个字符串反着串连起来,结果是efgcdab。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或者删行,也不得改变程序的结构!

试题程序:


正确答案:

(1)错误:for(k=-m;k>0;k——)
正确:for(k=m-1;k>=0;k——)
(2)错误:pt=j;
正确:pt-=j;


更多相关问题