填空题 下列给定程序中,函数proc()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。
例如,输入opdye,则应输出deopy。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
//****found****
int proc(char str[])
{
char c;
unsigned i,j;
for(i=0;i<strlen(str)-1;i++)
for(j=i+1;j<strlen(str);j++)
if(str[i]>str[j])
{
c=str[j];
{|****found****
str[j]=str[i++];
str[i]=c;
}
}
void main()
{
char str[81];
system("CLS"):
printf("/nPlease enter a character
string:");
gets(str);
printf("/n/nBefore sorting:/n%S",str);
proc(str);
printf("/nAfter sorting decendingly:n%S",str);
}
【正确答案】
【答案解析】错误:int proc(char str[])
正确:void proc(char str[])
错误:str[j]=str[i++];
正确:str[j]=str[i]; [解析] 由主函数中的函数调用可知,函数proc()没有返回值。因此,“int proc(char str[])”应改为“void proc(char str[])”;由函数proc()可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str[i++];”应改为“str[j]=str[i];”。