想问问为什么程序运行不起来,不知道哪有问题,编程要求编写程序,把10000以内个位数字的立方等于其本身的所有的数存入二进制文件中。从该二进制文件中读取数据,在显示器上输出。
程序没有从输入获取文件地址,然后也没有重新从文件读取输入的内容,所以输出不对;
可以先使用gets()读取一个文件地址到字符数组a,然后在写入文件后,重新读取并显示一下文件内容即可。
修改如下:
参考链接:
#include <stdio.h>
#include <stdlib.h>
int main(void){
char a[1000];
printf("请输入要保存的文件名");
gets(a); // 获取输入的文件名
FILE* fp= NULL;
// int j=0;
//
// while((a[j]=fgetc(fp))!=EOF){
// j++;
// }
fp = fopen(a,"w+");
for(int i=1;i<10000;i++){
int c=i%10;
if(c*c*c==i){
fprintf(fp,"%d ",i);
}
}
rewind(fp);
//printf("729");
int num;
// 从文件读取写入的结果
while(feof(fp)==0){
fscanf(fp,"%d",&num);
// 如果不需要重复输出最后的729,则使用这个if条件下的输出
// http://c.biancheng.net/c/feof.html
// https://blog.csdn.net/konghouy/article/details/80530937
// if(feof(fp)==0){
// printf("%d ",num);
// }
// 如果最后的729需要重复输出,直接使用这个printf打印语句即可
printf("%d ",num);
}
fclose(fp);
return 0;
}
不熟悉C语言,但是你这个代码第一眼看到的问题是:第8行执行时,fp应该还是空指针,应该先给指针赋值
【相关推荐】
#include <stdio.h>
//编程统计抛掷 10000 次,正面和反面出现的次数和概率。
int main()
{
double d = 0, u = 0;
int i, y;
double k;
//随机数
srand((unsigned)time(NULL));
for (i = 0; i < 10000; i++)
{
//利用奇数和偶数互为对立事件的性质
y = rand() & 2;
if (y == 0)
u++;
else
d++;
}
printf("正面出现 %g 次\n反面出现 %g 次\n", u, d);
k = (u / (u + d)) ;
printf("正面出现的概率为%g %\n",k);
printf("反面出现的概率为%g %\n", 1 - k);
}