有一个数据文件,其中存有一行字符串,将该字符串读到字符数组a中,然后将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。要求输出重新排序的整个字符串以及下标为偶数的元素。
编写一个程序,实现其功能。
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char ch,temp;
char a[10];
int i=0,j=0;
if((fp=fopen("filename","r"))!=NULL)
printf("能打开这个数据文件!\n");
else
printf("不能打开这个数据文件");
/*将数据文件的字符串输出,并读到数组a中*/
ch=fgetc(fp);
while(ch!=EOF)
{
a[j]=ch;
printf("%c\n",ch);
ch=fgetc(fp);
i++; //字符串中字符的个数
j++;
}
printf("字符个数为:i=%d\n",i);
for(j=0;j<i;j++)
printf("%2c",a[j]);
printf("\n");
/*将字符数组a中下标值为偶数的元素从小到大排列*/
for(int k=0;k<i;k=k+2)
{
for(int h=k+2;h<i+1;h=h+2)
if(a[k]>a[h])
{
temp=a[k];
a[k]=a[h];
a[h]=temp;
}
}
/*输出重新排序的整个字符串*/
for(k=0;k<i;k++)
printf("%2c",a[k]);
printf("\n");
/*下标为偶数的元素,第一个元素的下标为0*/
for(k=0;k<i;k=k+2)
printf("%2c",a[k]);
printf("\n");
fclose(fp);
return 0;
}
有什么不了解的可以继续问我哦 ^_^追问
#include<stdlib.h>
int main()
{
FILE *fp;
char ch,temp;
char a[10];
int i=0,j=0;
if((fp=fopen("filename","r"))!=NULL)
printf("能打开这个数据文件!\n");
else
printf("不能打开这个数据文件");
/*将数据文件的字符串输出,并读到数组a中*/
ch=fgetc(fp);
while(ch!=EOF)
{
a[j]=ch;
printf("%c\n",ch);
ch=fgetc(fp);
i++; //字符串中字符的个数
j++;
}
printf("字符个数为:i=%d\n",i);
for(j=0;j<i;j++)
printf("%2c",a[j]);
printf("\n");
/*将字符数组a中下标值为偶数的元素从小到大排列*/
for(int k=0;k<i;k=k+2)
{
for(int h=k+2;h<i+1;h=h+2)
if(a[k]>a[h])
{
temp=a[k];
a[k]=a[h];
a[h]=temp;
}
}
/*输出重新排序的整个字符串*/
for(k=0;k<i;k++)
printf("%2c",a[k]);
printf("\n");
/*下标为偶数的元素,第一个元素的下标为0*/
for(k=0;k<i;k=k+2)
printf("%2c",a[k]);
printf("\n");
fclose(fp);
return 0;
}
有什么不了解的可以继续问我哦 ^_^追问
运行有错误,哪里有问题。
追答我已经运行过了,在visual c++6.0运行的。没问题的
你在运行前:
得先建个名为filename的数据文件(文本文档),在里面输入几个字符,然后保存
还是不行,这真是个问题。
追答你是在哪里运行的,你可以把错误提示发给我
温馨提示:答案为网友推荐,仅供参考