求助一个简单问题,接分!
// 在一个文件中输入两门课程的成绩,算出平均成绩输出到另一个文件
/*两个文件都在C:\下 ,输入文件 “student.txt” 内容为:
M 98 65
而输出文件 “average.txt ”中没有内容,是空白的。*/
# include <iostream>
# include <fstream>
using namespace std;
int main()
{
int test1, test2 ; // 两门课程的成绩,整型
double avergeScore ; // 平均成绩 浮点
char studentName ; // 学生名字的开头字母
ifstream inFile ; // 声明输入文件流变量
ofstream outFile ; // 声明输入文件流变量
inFile.open( "c:student.txt" ) ; //将 inFile变量和文件 student.txt关联
outFile.open( "c:average.txt" ) ; //将 outFile变量和文件 average.txt关联
inFile >> studentName ;
cout << studentName << endl ;
/*这一句为了监视输入的名字开头字母‘M ' 但是输出确是’X ' ????? */
outFile << "The student's name is: " << studentName << endl ;
inFile >> test1 >> test2 ;
outFile << test1 << test2 << endl ;
avergeScore = static_cast <double> ( test1 + test2 ) / 2.0 ;
/* 由于成绩是整型,平均成绩是浮点,所以强制类型转换*/
outFile << "Average score is: " << avergeScore << endl;
inFile.close() ;
outFile.close() ;
return 0 ;
}
编译成功(Dev C++ 4.9) 程序执行结果是average.txt中仍然没有内容,不知错误在哪里?
问题点数:20、回复次数:18Top
1 楼calabash_b(大菜鸟)回复于 2005-07-15 18:43:21 得分 2
晕,这两句改一下就行了
inFile.open( "c:\\student.txt" ) ; //将 inFile变量和文件 student.txt关联
outFile.open( "c:\\average.txt" ) ; //将 outFile变量和文件 average.txt关联
其他的代码全部正确.运行结果也正确.Top
2 楼llf_hust()回复于 2005-07-15 18:47:24 得分 2
同意Top
3 楼firstdreamer()回复于 2005-07-15 19:04:29 得分 1
楼主要注意基础学习啊!Top
4 楼firstdreamer()回复于 2005-07-15 19:05:00 得分 1
楼主要注意基础学习啊!Top
5 楼xiaoqing001(小晴)回复于 2005-07-15 19:27:48 得分 1
改过来了,编译成功。运行后仍然没有内容到average.txt中
而且
连cout << studentName << endl;这句也不显示输出了,怎么会这样。Top
6 楼calabash_b(大菜鸟)回复于 2005-07-15 20:15:36 得分 1
楼主确定?
我就改了那两句,在我机上运行成功啊,你仔细看是不是写成这样了?
inFile.open( "c\\:student.txt" )//错误
或者inFile.open( "c:\student.txt" )//错误
正确的写法是:
inFile.open( "c:\\student.txt" )//正确
或者
inFile.open( "c:/student.txt" )//正确(linux下面的写法)
仔细点啊,这种错误有时是很难发现的.Top
7 楼windking21(想玩玩WOW 真的那么难吗)回复于 2005-07-15 20:25:09 得分 1
路径不对c: 识别不了
Top
8 楼xiaoqing001(小晴)回复于 2005-07-15 22:18:29 得分 1
还是不行。虽然编译都通过!Top
9 楼calabash_b(大菜鸟)回复于 2005-07-15 22:21:06 得分 1
我无语了,把你的改过的代码全部贴出来,有这种怪事?Top
10 楼xiaoqing001(小晴)回复于 2005-07-16 07:01:45 得分 1
# include <iostream>
# include <fstream>
using namespace std;
int main()
{
int test1, test2 ; // 两门课程的成绩,整型
double avergeScore ; // 平均成绩 浮点
char studentName ; // 学生名字的开头字母
ifstream inFile ; // 声明输入文件流变量
ofstream outFile ; // 声明输入文件流变量
inFile.open( "c:\\student.txt" ) ; //将 inFile变量和文件 student.txt关联
outFile.open( "c:\\average.txt" ) ; //将 outFile变量和文件 average.txt关联
inFile >> studentName ;
cout << studentName << endl ;
outFile << "The student's name is: " << studentName << endl ;
inFile >> test1 >> test2 ;
outFile << test1 << test2 << endl ;
avergeScore = static_cast <double> ( test1 + test2 ) / 2.0 ;
/* 由于成绩是整型,平均成绩是浮点,所以强制类型转换*/
outFile << "Average score is: " << avergeScore << endl;
inFile.close() ;
outFile.close() ;
return 0 ;
}
编译成功,现在程序执行后,
连cout << studentName << endl ; 这句都不显示出来,说明输入流变量没有接受到字符'M"
到底问题在哪里?Top
11 楼ENOUGH_XU(苦点,累点->没关系)回复于 2005-07-16 08:11:25 得分 1
文件流我还没学,但是我觉得这里是不是你的inFile有问题啊,我把你的改了一点点,能把终端输入的东西输入到Average,就是不能输入到student.
关注中!!!!
# include <iostream.h>
# include <fstream.h>
# include <stdio.h>
int main()
{
int test1, test2 ; // 两门课程的成绩,整型
double avergeScore ; // 平均成绩 浮点
char studentName[10] ; // 学生名字的开头字母
ifstream inFile ; // 声明输入文件流变量
ofstream outFile ; // 声明输入文件流变量
inFile.open( "c:\\student.txt" ) ; //将 inFile变量和文件 student.txt关联
outFile.open( "c:\\average.txt" ) ; //将 outFile变量和文件 average.txt关联
scanf("%s",studentName);
inFile >> studentName ;
cout << studentName << endl ;
outFile << "The student's name is: " <<studentName << endl ;
cin>>test1;
cin>>test2;
inFile>>test1 ;
inFile>> test2 ;
outFile << test1 <<" "<< test2 << endl ;
avergeScore = static_cast <double> ( test1 + test2 ) / 2.0 ;
/* 由于成绩是整型,平均成绩是浮点,所以强制类型转换*/
outFile << "Average score is: " << avergeScore << endl;
inFile.close() ;
outFile.close() ;
return 0 ;
}Top
12 楼ENOUGH_XU(苦点,累点->没关系)回复于 2005-07-16 10:00:09 得分 1
这个程序应该能符合你的要求了:
# include <iostream.h>
# include <fstream.h>
# include <stdio.h>
int main()
{
int test1, test2 ; // 两门课程的成绩,整型
double avergeScore ; // 平均成绩 浮点
char studentName ; // 学生名字的开头字母
ifstream inFile ; // 声明输入文件流变量
ofstream outFile ; // 声明输入文件流变量
inFile.open( "c:\\student.txt" ) ; //将 inFile变量和文件 student.txt关联
outFile.open( "c:\\average.txt" ) ; //将 outFile变量和文件 average.txt关联
inFile>>studentName ;
cout << studentName << endl ;
outFile << "The student's name is: " <<studentName << endl ;
inFile >> test1>>test2 ;
outFile << test1 <<" "<< test2 << endl ;
avergeScore = static_cast <double> ( test1 + test2 ) / 2.0 ;
/* 由于成绩是整型,平均成绩是浮点,所以强制类型转换*/
outFile << "Average score is: " << avergeScore << endl;
inFile.close() ;
outFile.close() ;
return 0 ;
}Top
13 楼calabash_b(大菜鸟)回复于 2005-07-16 10:22:30 得分 1
我没话说了,楼主贴出的代码在我的机器上运行完全正确.
请楼主检查一下你的c 盘下面是不是有student.txt这个文件,这是最后的办法.Top
14 楼xiaoqing001(小晴)回复于 2005-07-17 22:44:10 得分 1
谢谢了,给分Top
15 楼K()回复于 2005-07-18 00:01:17 得分 1
xuexiTop
16 楼xufangrui(岁月如歌)回复于 2005-07-18 00:13:12 得分 1
我改成这样在TC3.0下运行正确:
#include<iostream.h>
#include<fstream.h>
//using namespace std;
int main()
{
int test1, test2 ; // 两门课程的成绩,整型
double avergeScore ; // 平均成绩 浮点
char studentName ; // 学生名字的开头字母
ifstream inFile ; // 声明输入文件流变量
ofstream outFile ; // 声明输入文件流变量
inFile.open( "c:student.txt" ) ; //将 inFile变量和文件 student.txt关联
outFile.open( "c:average.txt" ) ; //将 outFile变量和文件 average.txt关联
inFile >> studentName ;
cout << studentName << endl ;
/*这一句为了监视输入的名字开头字母‘M ' 但是输出确是’X ' ????? */
outFile << "The student's name is: " << studentName << endl ;
inFile >> test1 >> test2 ;
outFile << test1 << test2 << endl ;
avergeScore =(double)( test1 + test2 ) / 2.0 ;
/* 由于成绩是整型,平均成ㄊ歉〉悖郧恐评嘈妥?/
outFile << "Average score is: " << avergeScore << endl;
inFile.close() ;
outFile.close() ;
return 0 ;
}
结果:
The student's name is: M
8675
Average score is: 80.5
Top
17 楼xiaomagee(小马哥不在江湖)回复于 2005-07-18 10:25:16 得分 1
inFile.open( "c\\:student.txt" )//错误
或者inFile.open( "c:\student.txt" )//错误
要注意或者这个单斜杠,在vc中都是用双斜杠来标注路径的,单斜杠是错误的。而且是标在冒号的右面啊...
楼主加油学习啊Top
18 楼xiaoqing001(小晴)回复于 2005-07-18 11:18:13 得分 1
inFile.open( "c:student.txt" ) ; //将 inFile变量和文件 student.txt关联
outFile.open( "c:average.txt" ) ; //将 outFile变量和文件 average.txt关联
确实是这样,我的教材上是这样的格式,寒香子在TC3.0上通过了。
但是cout << studentName << endl ;这句的输出是8675,你知道是什么原因吗?
Top




