『壹』 我,亂寫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]='