请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码值升序排列。 例如:原来的字符串为BdsihAd,则排序后输出为 BAdhisd。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中

admin2013-06-12  34

问题 请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码值升序排列。
   例如:原来的字符串为BdsihAd,则排序后输出为 BAdhisd。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   试题程序:
   #include <stdio.h>
   #include <ctype.h>
   #include <conio.h>
   int fun(char*s,int num)
   {
   }
   main()
   {
   char s[10];
   clrscr();
   printf("输入7个字符的字符串:");
   gets(s);
   fun(s,7);
   printf("\n%s",s);
   }

选项

答案int fun(char*s,int num) {char t; int i,j; for(i=1;i<num-2;i++) /*下标值从1开始,用循环依次取得字符串中的字符*/ for(j=i+1;j<num-1;j++) /*将字符与其后的每个字符比较*/ if(s[i]>s[j]) /*如果后面字符的ASCII码值小于该字符的ASCII码值*/ { t=s[i]; /*则交换这两个字符*/ s[i]=s[j]; s[j]=t; } }

解析 本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素s和s[j]进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码值,则交换这两个数组元素的值。
转载请注明原文地址:https://kaotiyun.com/show/lrJp777K
0

最新回复(0)