对于如下程序:  #include <st

题目

对于如下程序:  #include    main( )  {    FILE *fp;    fp=fopen(“file.txt”,“w”);    fprintf(fp,“%s”,“xyz”);    fclose(fp);  }  若文件file.txt中原有的内容为good,则运行该程序以后,文件file.txt中的内容为()

参考答案和解析
正确答案:xyz
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下程序 include include using namespace std; cla

有如下程序 #include <iostream> #include <iomanip> using namespace std; class MyClass { public: MyClass() { cout<<'A'; } MyClass(char c){ cout<<c; } ~MyClass(){ cout<<'B'; } }; int main( ) { MyClass p1,*p2; p2=new MyClass('X'); delete p2; return 0; } 执行这个程序屏幕上将显示输出

A.ABX

B.ABXB

C.AXB

D.AXBB


正确答案:D
解析:本题主要考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。本例的main()函数中,第1条语句定义了一个MyClass对象和一个MyClass类型指针,此时创建了1个对象,因为没有构造参数,故会调用默认构造函数,输出一个'A'。第2条语句通过new运算符动态创建了1个MyClass对象,此时传入了一个构造参数'X',所以会调用相应的构造函数,输出一个'X'。第3条语句使用delete运算符释放了1个对象,所以会调用1次析构函数,输出一个'B'。最后,当main()函数结束时,局部变量p1的生存期结束,故还要调用1次析构函数输出一个'B'。因此,最终输出结果是AXBB,应该选择D。

第2题:

有如下程序: include using namespace std; class Sample{ public:

有如下程序: #include<iostream> using namespace std; class Sample{ public: Sample()<) ~Sample(){cout<<'*';} }; int main(){ Sample temp[2],*pTemp[2]; return 0; } 执行这个程序输出星号(*)的个数为( )。

A.1

B.2

C.3

D.4


正确答案:B
解析:此题考查的是构造函数和析构函数。构造函数在对象被创建时由系统自动调用,而析构函数在对象的生存期即将结束时由系统自动调用。此题中,主程序在创建Sample类的对象temp[2]数组时,调用Sample类的默认构造函数,在主函数退出时,调用析构函数清除对象temp[2],输出字母*,因为对象是包含两个元素的数组,所以调用两次析构函数,即输出两个*。

第3题:

有如下程序: include using namespace std; class TestClass{ int k; public: TestCla

有如下程序:

include<iostream>

using namespace std;

class TestClass{

int k;

public:

TestClass(int x=1):k(x){}

~TestClass O{cout<<k;}

};

int main(){

TestClass a[]={TestClass(3),TestClass(3),TestClass(3)};

TestClass *p=new TestClass[2];

delete []p;

return ():

}

这个程序的输出结果是______。


正确答案:11333
11333 解析:定义TestClass型数组a时,将导致TestClass的构造函数被执行三次,每次执行时,其传入参数为3,定义TestClass指针p时,将执行两次默认构造函数,其参数为1,执行"delete []p"时,将执行TestClass的构造函数,输出p[0].k,p[1].k(两者均为1) ,在程序运行结束后,将释放局部变量,从而导致数组a中的三个元素被析构,输出a[0],a[1],a[2]中的值(均为3) 。

第4题:

有如下程序:include include using namespace std;int main(){cout.fill('

有如下程序:#include <iostream>#include <iomanip>using namespace std;int main(){cout.fill('*');cout<<left<<setw(4)<<123<< "OK"<<end1;return 0;}执行这个程序的输出结果是( )。

A.123*OK

B.123*OK**

C.*123OK

D.*123**OK


正确答案:A

第5题:

执行如下程序后的输出结果是【】。include include using namespace std;int ma

执行如下程序后的输出结果是【 】。

include <iostream>

include <fstream>

using namespace std;

int main ( )

{

char s[25];

ofstream fl("data.txt");

f1<<"C++ Programming";

f1.close ();

ifstream f2 ("data.txt");


正确答案:C++
C++ 解析:程序先在当前目录下建立一个data文本文件,并写入“C++ Programming”。然后打开该文件,将其中的数据输入到变量s中,由于采用提取符“>>”读时遇到空格终止,所以最后字符数组s中存放的是“C++”。

第6题:

有如下程序 include using namespace std; class Base { protected:

有如下程序 #include <iostream> using namespace std; class Base { protected: Base( ){cout<<'A'; } Base(char c) { cout<<c; } }; class Derived: public Base { public: Derived(char c){ cout<<c; } }; int main( ){ Derived d1 ('B'); return 0; } 执行这个程序屏幕上将显示输出

A.B

B.BA

C.AB

D.BB


正确答案:C
解析:本题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序如下:
  (1) 执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右):
  (2) 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下):
  (3) 执行派生类的构造函数。
  所以本题在建立派生类Derived的对象d1时会先调用基类Base的构造,由于派生类中没有通过初始化列表显式构造基类对象,所以调用的是基类的默认构造函数,会输出一个'A'。然后调用自身的构造函数,输出传入的构造参数'B'。故程序输出的结果是:AB。所以应该选择C。

第7题:

有如下的程序: include include using namespace st

有如下的程序: #include<cstring> #include<iostream> using namespace std; class MyString { public: MyString(const char*s); ~MyString(){delete[]data;} Protected: unsigned len; char*data; }; MyString::MyString(const char*s) { len=strlen(s); data=new char[len+1]; strcpy(data,s); } int main() { MyString a("C++Programing"); MyString b(a); return 0; } 在运行上面的程序时出错,出错的原因是

A.构造函数的实参不允许是本类的对象

B.没有定义实现深层复制(深拷贝)的拷贝构造函数

C.构造对象a时实参与形参类型不符

D.系统不能生成缺省的拷贝构造函数


正确答案:B

第8题:

有如下程序 include include using namespace std; int main(

有如下程序 #include<iostream> #include<iomanip> using namespace std; int main(){ cout<<setprecision(3)<<fixed<<setfill('*')<<setw(8); cout<<12.345<<_______<<34.567; return 0; } 若程序的输出是: ** 12.345**34.567 则程序中下划线处遗漏的操作符是

A.setprecision(3)

B.fixed

C.setfill('*')

D.setw(8)


正确答案:D
解析:本题考查的是输出的格式控制。本例中,操作符setprecision的作用是设置浮点数的精度;操作符fixed的作用是让浮点数按定点格式输出;操作符setfill的作用是设置填充字符;操作符setw的作用是设置输入输出的宽度。宽度设置setw是所有格式设置中惟一的一次有效的设置,即设置的宽度只对其后的一次输入输出操作有效,而其余操作符设置后会一直有效,直到再次设置时为止。因此,若下划线处什么也不填,则输出的结果应该为**12.34534.567。和要求的输出相比较,只缺少两个填充字符'*'。由此可知,下划线处应该填一个让34.567的输出宽度为8的操作符,即setw(8)。故应该选择D。

第9题:

有如下程序: include using namespace std; int main() { char st

有如下程序: #include <iostream> using namespace std; int main() { char str[100], *p; cout<<"Please input a string:"; cin>>str; p=str; for (int i=0; *p!='\0'; p++,i++); cout<<i<<endl; return 0; }运行这个程序时,若输入字符串为 abcdefgabcd则输出结果是

A.7

B.12

C.13

D.100


正确答案:A
解析:本题考查的知识点是:默认的输入格式。C++流所识别的输入数据的类型及其默认的输入格式包括:
short、int、long(signed、unsigned).与整型常量同
float、double、long double:与浮点数常量同
char(signed、unsigned):第一个非空白字符
char*(signed、unsigned):从第一个非空白字符开始到下一个空白字符结束
void*:无前缀的16进制数
bool:VC6.0中把0识别为false,其他的值均识别为true
注意其中空白字符和非空白字符的概念。空白字符是指空格、Tab符、回车换行等无显示的字符,否则就是非空白字符。本题的输入数据类型为char*,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abcd,其中abcdefg后有一个空格(空白字符)。所以输入后str中为字符串"abcdefg”,主函数中接下来for语句的作用是计算字符串p的长度。故最终输出的结果是"abcdefg”的长度7,本题应该选择A。

第10题:

有如下的程序: include include using namespace std; int main() { ofstr

有如下的程序:

include <iostream>

include <fstream>

using namespace std;

int main()

{

ofstream outf("D:\\temp.txt",ios_base::trunc) ;

outf<<"World Wide Web";

outf.close();

ifstream inf("D:\\temp.txt");

char s[20];

inf>>s;

inf.close();

cout<<s;

return 0;

}

执行后的输出结果是【 】。


正确答案:World
World 解析:提取运算符>>在读取数据时遇到空格、Tab符号以及回车符时将结束此次相关操作。

更多相关问题