完成任务:
编写一个程序,从文本文件中读取10个整数。该 必须先使用其他代码或使用创建文件 操作系统的设施。写下以下功能: - 按升序/降序对整数数组进行排序并显示结果 - 计算数组中偶数的数量并显示结果
我的代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <string>
void cresc(int citire[20]);
FILE *fpointer;
void main()
{
char fisier[12];
int i,citire[20];
printf("Dati un nume fisierului:");
scanf("%s", &fisier);
strcat(fisier, ".txt");
fpointer = fopen(fisier, "w");
fprintf(fpointer, "9865742031");
fclose(fpointer);
fpointer = fopen(fisier, "r");
for (i = 0;i < 9;i++)
fscanf(fpointer, "%d", &citire[i]);
fclose(fpointer);
fpointer = fopen(fisier, "a+");
fprintf(fpointer,"\nNumerele puse in ordine sunt: \n");
cresc(citire);
fclose(fpointer);
_getch();
}
void cresc(int citire[20])
{
int i,temp;
for (i = 0;i < 9; i++)
{
if (citire[i] > citire[i + 1])
{
temp = citire[i];
citire[i] = citire[i + 1];
citire[i + 1] = temp;
}
fprintf(fpointer, "%d", citire[i]);
}
}
有人可以帮助我吗?
我设法解决它,谢谢你的帮助。
如果有人需要,问题就解决了。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <string>
FILE *fpointer;
void cit(int citire[10]);
int paritate(int citire[10]);
void main()
{
char fisier[12];
int i, citire[10], trecere[10], nrpar;
printf("Dati un nume fisierului:");
scanf("%s", &fisier);
strcat(fisier, ".txt");
fpointer = fopen(fisier, "w");
fprintf(fpointer, "9 8 6 5 7 4 2 0 3 1");
fclose(fpointer);
fpointer = fopen(fisier, "r");
for (i = 0;i < 10;i++)
fscanf(fpointer, "%d", &citire[i]);
fclose(fpointer);
fpointer = fopen(fisier, "a");
fprintf(fpointer, "\nNumerele puse in ordine sunt: \n");
cit(citire);
nrpar = paritate(citire);
fprintf(fpointer, "\n\nSunt %d numere pare", nrpar);
fclose(fpointer);
_getch();
}
void cit(int citire[10])
{
int i,j, temp;
for (i = 0;i < 10; i++)
{
for (j = 0;j<9;j++)
if (citire[j] > citire[j + 1])
{
temp = citire[j];
citire[j] = citire[j + 1]; //9 8 6 5 7 4 2 0 3 1
citire[j + 1] = temp; //buble sort
}
}
for (i = 0;i < 10; i++)
fprintf(fpointer, " %d", citire[i]);
}
int paritate(int citire[10])
{
int i, par=0;
for (i = 0;i < 10; i++)
if (citire[i] % 2 == 0)
par ++;
return par;
}
答案 0 :(得分:0)
您需要将表示单个值的字符串写入文件,然后从文件中读取9
个整数,但只有一个值。您需要使用非数字字符分隔值,例如
fprintf(fpointer, "9 8 6 5 7 4 2 0 3 1");
然后阅读,改为执行此操作
while ((i < 9) && (fscanf(fpointer, "%d", &citire[i]) == 1))
++i;
修复您的cresc()
函数,使其将元素数量作为参数
void cresc(int *citire, int count);
和for loop
for (i = 0 ; i < count ; ++i)
在你的main()
电话cesc()
中
cresc(citere, i);