C语言编程题 求解!! 下面图片中是题目 求冒泡排序或选择排序的代码!!!我自己编了很多次都不行! 5
已经给出的程序代码有#include<stdio.h>#include<ctype.h>#include<string.h>voidfun(char*s,intnum){...
已经给出的程序代码有
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void fun(char *s,int num)
{
int i,j,k;
char ch;
for(i=1;i<num-1;i++)
{
ch=s[i];
k=i;
for(j=i+1;j<num-1;j++)
{
if(s[j]>ch)
{
ch=s[j];
k=j;
}
}
if(k!=i)
{
s[k]=s[i];
s[i]=ch;
}
}
}
main()
{
void NONO( );
char s[10];
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
NONO();
}
void NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char s[10] ;
FILE *rf, *wf ;
int i = 0 ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
while(i < 10) {
fgets(s,10,rf) ;
s[7] = 0 ;
fun(s,7);
fprintf(wf, "%s\n", s) ;
i++ ;
}
fclose(rf) ;
fclose(wf) ;
}
········不好意思·······上面我把整个程序都贴出来了 fun函数本来应该是没有代码的·······
答案的解法感觉是个不规则的选择排序 但是用一般的冒泡和选择 为什么不行呢? 展开
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void fun(char *s,int num)
{
int i,j,k;
char ch;
for(i=1;i<num-1;i++)
{
ch=s[i];
k=i;
for(j=i+1;j<num-1;j++)
{
if(s[j]>ch)
{
ch=s[j];
k=j;
}
}
if(k!=i)
{
s[k]=s[i];
s[i]=ch;
}
}
}
main()
{
void NONO( );
char s[10];
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
NONO();
}
void NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char s[10] ;
FILE *rf, *wf ;
int i = 0 ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
while(i < 10) {
fgets(s,10,rf) ;
s[7] = 0 ;
fun(s,7);
fprintf(wf, "%s\n", s) ;
i++ ;
}
fclose(rf) ;
fclose(wf) ;
}
········不好意思·······上面我把整个程序都贴出来了 fun函数本来应该是没有代码的·······
答案的解法感觉是个不规则的选择排序 但是用一般的冒泡和选择 为什么不行呢? 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询