求解惑
题目就是这样,没有增加我个人的任何东西
我知道这是java的程序,也不理解为什么题目这样出,但要用c语言的方法解决问题
题目描述
已知一个文本文件,文件名为dict.dic。它是由下边的代码生成。
int a ;
boolean b = true ;
double c , f ;
String d ;
PrintWriter out = new PrintWriter("dict.dic");
Scanner cin = new Scanner(System.in);
for (int i = 0 ; i < 5 ; i ++ ) {
a = cin.nextInt() ;
f = Math.random() ;
if ( f > 0.5 ) b = true ;
else b = false ;
c = cin.nextDouble() ;
d = cin.next() ;
out.println(a) ;
out.println(b) ;
out.println(c) ;
out.println(d) ;
}
out.close(); // Remember this!
cin.close();
}
你的任务是写一段程序,将这些内容读出来。
输入:
为一个整数,只可能是1,2,3,4,5之一。
输出:
将dict.dic中的相关内容输出到屏幕上,如果输入是1,则输出那段代码第一次循环写入的内容,如果输入是2,则输出那段代码第二次循环写入的内容,依此类推。
形式如样例。double类型的不是保留一位小数,直接输出就可以了。
样例输入:
1
样例输出:
100
false
72.5
helloworld
struct sData{
int i;
char cb[100];
double d;
char c[100];
};
int ReadDataInfo(const char* filename, struct sData** pdata)
{
FILE *fp;
char ch;
int i=1,j;
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("cann't open the file");
exit(-1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
if(ch=='\n')
{
i++;
}
ch=fgetc(fp);
}
rewind(fp);
char buf[100]={0};
char *ptr;
*pdata=(struct sData*)malloc(sizeof(** pdata)*(i/4));
for(j=0;j<i/4;j++)
{
memset(*pdata+j,0,sizeof(struct sData));
fgets(buf,100,fp);
(*pdata+j)->i = atoi(buf);
fgets(buf,100,fp);
for (int m=0;m<strlen(buf)-1;m++)
{
(*pdata+j)->cb[m] = buf[m];
}
fgets(buf,100,fp);
(*pdata+j)->d = strtod(buf,&ptr);
fgets(buf,100,fp);
for (int m=0;m<strlen(buf)-1;m++)
{
(*pdata+j)->c[m] = buf[m];
}
}
fclose(fp);
return i/4;
}
int main ()
{
int i,count;
int m;
struct sData *list;
count=ReadDataInfo("c:\\1.txt", &list);
printf("Input the number");
scanf("%d", &i);
if(i>0 && i<=count)
{
printf("%d\n",list[i-1].i);
printf("%s\n",list[i-1].cb);
printf("%lf\n",list[i-1].d);
printf("%s\n",list[i-1].c);
}
free(list);
list = NULL;
return 0;
}
循环次数固定是5次?样例输出的内容应该是文件中的,而不是输入的吧。
这是java吧,你上面标签是c语言😂😂,通过switch语言分支把内容一一读出来就行啊
首先,你这是java程序,采用java的if进行判断
import java.util.*;
import java.io.*;
public class Socre {
public static void main(String[] args) throws Exception {
int a ;
boolean b = true ;
double c , f ;
String d ;
PrintWriter out = new PrintWriter("dict.dic");
Scanner cin = new Scanner(System.in);
for (int i = 0 ; i < 5 ; i ++ ) {
a = cin.nextInt() ;
f = Math.random() ;
if ( f > 0.5 ) b = true ;
else b = false ;
c = cin.nextDouble() ;
d = cin.next() ;
out.println(a) ;
out.println(b) ;
out.println(c) ;
out.println(d) ;
}
out.close(); // Remember this!
cin.close();
}
}