‘壹’ 我,乱写c语言的小白,30行代码,int ee,数字1到10,只有8,9可以 22好像也不行,晕,求大神指点
要检查程序,首先要说明清楚程序要实现的功能。不说清楚要求达到的目的,只能帮你检查有无语法错误(这一点程序编译就可以完成的)和明显的逻辑错误。
以下是修改后的程序代码,实现的是产生zz个ee位的随机数字串,并输出到屏幕上,如果它不等于读取到的数字,就把它保存到另一个文件中。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int panan(char rr[2018])
{ FILE *p1;
char tt[2018];
p1=fopen("1.txt","r");
while(!feof(p1))
{ fgets(tt,2018,p1);
if(strcmp(tt,rr)==0)
return 1;
}
fclose(p1); //增添此2行
return 0;
}
int main (void)
{ srand((unsigned)time(NULL));
FILE *p2;
p2 = fopen("2.txt","w");
int qq,ww,ee,zz=0; //有改动
char ss[2018];
printf("请输入ee的值");
scanf("%d",&ee);
while(zz<150)
{
for(ww=0; ww<ee; ww++)
{ qq=rand()%10;
ss[ww]=qq+48;
}
ss[ww]='\0';
printf("%s\t",ss); //有改动
if(panan(ss)!=1)
{ fprintf(p2,"%s\n",ss);
zz++;
}
}
fclose(p2); //增添此2行
return 0;
}
‘贰’ 一个关于数列前几项和的简单c语言问题 5 自然常数ee可以用级数1+1/1!+1/2!+
#include"stdio.h"
intmain(intargc,char*argv[]){
inti,n;
doublee,t;
printf("Inputn(int0<=n<=1000)... n=");
if(scanf("%d",&n)!=1||n<0||n>1000){
printf("Inputerror,exit... ");
return0;
}
for(e=t=1.0,i=1;i<=n;e+=t/=i++);
printf("e≈%.8f ",e);
return0;
}
‘叁’ 我,乱写c语言的小白,30行代码,int ee,数字1到10,只有8,9可以 22好像也不行,晕,求大神指点
这段代码红色框位置有这问题,其中标数字的为主要问题,会导致程序无法实现功能。
第一处:
同一个文件不能在同一个程序多次打开;
解决方法:
可以从主函数里把文件指针传过去,同时主函数需要以读写模式打开。
int panan(FILE*p1, char rr[])
函数里p1的定义删除,同时文件打开换成rewind(p1);
第二处:
变量zz没有赋初值,
解决方法:
定义zz同时赋值,int zz=0。
第三处:
字符串需要添加结束符 ,同时在这之前要加 ,因为fgets函数会把换行读取到字符串中,不加换行后面的比较没有意义,因为一个有一个没有结果自然不会返回1。
三处框内增加下面语句:
ss[ww++]=' ';//写入文件是fprintf里就不要加 了。
ss[w]='