输入一个字符串S中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串写入到D盘根据目录下新建的

文件“design.dat"。下面是我写的程序,可是老是出现错误,自己无法改,请帮帮忙……

#include<stdio.h>
#include<string.h>
void main()
{ FILE *p;char *s="634,.%@\\w|SQ2",c;
int i,j,k,n=strlen(s);
if((p=fopen("D:\\design.dat","w+"))==NULL)
{
printf("File could not be open!\n");
exit(0);
}
printf("input data:\n");
for(i=0;i<n;n++)
{ k=i;
for(j=i+1;j<n;j++)
if(s[j]<s[k])
k=j;
c=s[i];
s[i]=s[k];
s[k]=c;
}
for(i=0;i<n-1;i++)
fputc(s[i],p);
fclose(p);
}

#include<stdio.h>
#include<string.h>
int main()
{
FILE *p;
char s[128];//定义一个数组,用来存储从键盘输入的字符
char c;
int i,j,n;

if((p=fopen("D:\\design.dat","w"))==NULL)
{
printf("File could not be open!\n");
exit(0);
}
printf("input data:\n");
//输入字符串
for( i=0;i<128;i++ )
{
s[i]=getchar();
if ( s[i]=='\n' )
break;
}
s[i]='\0'; //保证串尾是'\0'
n=i;

//冒泡排序
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(s[j]<s[j-1])
{
c=s[j-1];
s[j-1]=s[j];
s[j]=c;
}
}
}
for(i=0;i<n;i++)
fputc(s[i],p);
fclose(p);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-25
#include<stdio.h>
#include<string.h>
int main()
{
FILE *p;
char s[128];//定义一个数组,用来存储从键盘输入的字符
char c;
int i,j,n;

if((p=fopen("D:\\design.dat","w"))==NULL)
{
printf("File could not be open!\n");
exit(0);
}
printf("input data:\n");
//输入字符串
for( i=0;i<128;i++ )
{
s[i]=getchar();
if ( s[i]=='\n' )
break;
}
s[i]='\0'; //保证串尾是'\0'
n=i;

//冒泡排序
for(i=0;i<n;i++)
{
for(j=1; j<n-i; j++) //***这里,总要从头冒,不是每次都到尾
{
if(s[j]<s[j-1])
{
c=s[j-1];
s[j-1]=s[j];
s[j]=c;
}
}
}
for(i=0;i<n;i++)
fputc(s[i],p);
fclose(p);
return 0;
}
//copy二楼的回复,只修正了一行,汗
第2个回答  2011-12-25
#include<stdio.h>
#include<string.h>
int main()
{
FILE *p;
char s[128];//定义一个数组,用来存储从键盘输入的字符
char c;
int i,j,n;

if((p=fopen("D:\\design.dat","w"))==NULL)
{
printf("File could not be open!\n");
exit(0);
}
printf("input data:\n");
//输入字符串
for( i=0;i<128;i++ )
{
s[i]=getchar();
if ( s[i]=='\n' )
break;
}
s[i]='\0'; //保证串尾是'\0'
n=i;

//冒泡排序
for(i=0;i<n;i++)
{
for(j=1; j<n-i; j++) //***这里,总要从头冒,不是每次都到尾
{
if(s[j]<s[j-1])
{
c=s[j-1];
s[j-1]=s[j];
s[j]=c;
}
}
}
for(i=0;i<n;i++)
fputc(s[i],p);
fclose(p);
return 0;
相似回答