void sort(int *,int) //函数声明时类型保持一致
int main()
{
int a[20]={0},i,n
printf("输入要输入数据的个数:\n")
scanf("%d",&n)
printf("输入数组中元素:\n")
for(i=0i<ni++)
scanf("%d",&a[i])
printf("输出排列好的数组:\n")
sort (a,n)
for(i=0i<ni++)
printf("%5d",a[i])
printf("\n")
}
void sort(int a[],int n)
{
int i,j,k,t
for(i=0i<ni++)
{
k=i
for(j=0j<nj++)
{
if(a[j]<a[k])
{
k=j
t=a[k]
a[k]=a[i]
a[i]=t
}
}
}
}
调用时不用加入函数返回值类型,顺便调试了一下程序,你是打算倒序排列后输出结果,在sort函数里面if 判断语句成立时应该加大括号,因为下面的3句都是if 需要执行的,还有for 也要加大括号,只有当for 、if 的语句体只有一句时才能省略大括号。。。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 20 /* 查找单词字符和输入替换单词少于20 */
#define MAXLEN 10000 /* 文章字符不大于10000 */
int main(void)
{
FILE *fp
int i, j
int flag/* 用于标记匹配单词 */
int countFlag/* 用于检查匹配计数 */
int countOne = 0/* 记录未改文章字符个数 */
int countTwo = 0/* 记录改后文章字符个数 */
char keyWords[SIZE]/* 查找单词 */
char copyWords[SIZE]/* 替换单词 */
char strOne[MAXLEN]/* 将未改文章的所有字符储存在里面 */
char strTwo[MAXLEN]/* 将改后文章的所有字符储存在里面 */
printf("请输入要查找的单词: ")
gets(keyWords)
printf("请输入要替换的单词: ")
gets(copyWords)
if (NULL == (fp = fopen("E:\\C++\\123.txt", "r")))/* 读文件 */
{
printf("文件打开失败!\n")
exit(0)
}
//用于测试代码找错
printf("打开成功!\n")
/*while (!feof(fp))// 读文件
{
//strOne[countOne++] = fgetc(fp)
putchar(fgetc(fp)) //用于测试
countOne++
}
printf("\n")
*/
while (!feof(fp))/* 读文件 */
{
strOne[countOne] = fgetc(fp)
countOne++
}
printf("\n")
//用于测试
countOne--/* 减去最后一个文件结束字符 */
printf("文章未改时的字符数是%d个!\n",countOne) //用于测试,显示字符数
/*
for(i = 0i <countOnei++) //测试字符是否写入到数组中去
{
printf("%c",strOne[i])
}
*/
for (i = 0i <countOnei++)
{
if (keyWords[0] == strOne[i])/* 判断查找单词第一个字符是否匹配 */
{
if ((' ' == strOne[i-1]) || ('\n' == strOne[i-1]) || (0 == i))/* 1.检查单词前的一个字符 */
{
flag = 1
countFlag = i + 1
for (j = 1keyWords[j]!='\0'j++)
{
if (keyWords[j] != strOne[countFlag++])/* 是否匹配 */
{
flag = 0
break
}
}
if ((' ' == strOne[countFlag]) || ('\n' == strOne[countFlag]) || (EOF == strOne[countFlag]))/* 2.检查单词后的一个字符 */
{
if (1 == flag)/* 若匹配,则进行拷贝 */
{
i = countFlag-1
for (j = 0copyWords[j]!='\0'j++)
{
strTwo[countTwo++] = copyWords[j]
}
}
}
else/* 另外 3*/
{
strTwo[countTwo++] = strOne[i]
}
}
else/* 另外 2 */
{
strTwo[countTwo++] = strOne[i]
}
}
else/* 另外 1*/
{
strTwo[countTwo++] = strOne[i]
}
}
fclose(fp)
if (NULL == (fp = fopen("E:\\C++\\123.txt", "w")))/* 写入文件 */
{
printf("文件打开失败!\n")
exit(1)
}
for (i = 0i <countTwoi++)/* 写入文件 */
{
fputc(strTwo[i], fp)
}
printf("写入成功!\n")
fclose(fp)
system("pause")
return 0
}
输入65时,只有字符'6'被接收,'5’被忽略,由于c1=
6,满条件循环语句的循环条件,接下来进入while循环,程序处于等待键盘输入状态........................。
事实上,该程序用于读入非大写英文字母的输入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)