C++c语言改错题题库目

2014计算机二级考试C++上机考试试题[1]
【网络综合 - 计算机等级考试试题】无忧考网为大家收集整理了《2014计算机二级考试C++上机考试试题》供大家参考,希望对大家有所帮助!!!一、程序改错题  使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序通过运行。  程序输出结果为  5  a  1  注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error**  ****的下面。  试题程序:  #include(iostream)  template(classT>  //********error********  tmin(tX,ty)  {  return(x>y)?y:x;  }  voidmain()  {  intn=5:’  //********error********  charc="a":  intd=1:  //********error********  cout<  cout<  cout<  } 二、简单应用题  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(intn),使其实现以下功能:当i等于3时,则打印如下内容。  A  AA  AAA  注意:不能修改程序的其他部分,只能修改fun函数。  试题程序:  #include  voidfun(intn)  {  }  voidmain()  {    cout<<"请输入打印的行数:">n;  if(n<1)  {  cout<<"输入的行数必须大于0"<    }  fun(n);    } 三、综合应用题  使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。  (1)在类TC中定义name为字符串类型,age为int型,请在注释1之后添加语句。  (2)设置类TC0的基类为TC类的定义,请在注释2后添加语句。  (3)在类TC的派生类TC0的公有成员中定义析构函数TC0,请在注释3后添加语句。  (4)设置类TCl的基类为TC类的定义,请在注释4后添加语句。  程序输出结果为  TCclassconstructor  TC0classconstructor  TConclassconstructor  TClclassconstructor  TClclassconstructor  TCclassconstructor  TC0classconstructor  TCclassconstructor  注意:增加或者修改代码的位置已经用符号表示出来一请不要修改其他的程序代码。  试题程序:  #include  classTC  {  //********1********  public:  TC(){cout<<"TCclassconstructor"<  TC(){tout<<"TCclassconstructor"<  };  //********2********  {  char*    public:  TCO()  {cout<<"TCOclassconstructor"<  //********3********  {cout<<"TC0classconstructor"<  };  //********4********  {<华为C++笔试题(自己写的答案,如有错误,请指正,非常感谢)
WIN32sizeof(short) = _2___sizeof(int) = __4__sizeof(long) = __4__(3)
___3_b = __24__
htonl(aaa)
MAX_NUM 100+200
= MAX_NUM*10;
Temp = __2100__
char szTemp[1000] = "";&&&&&&&&&&&&&&&&&&&&&&
= sizeof(szTemp);& &
= strlen(szTemp);&&
strcpy(szTemp, "abc");&&&&&&&&
= sizeof(szTemp);&&
= strlen(szTemp);&&
nTemp[100];&&&&&
int *pTemp
= sizeof(pTemp)&&&
szResult[200] = "";&&&&&
sprintf(szResult, "%d,%d,%d,%d,d.", nLen1, nLen2, nLen3,
nLen4, nLen5);
szResult = 1000& 0&&
6MFCCCmdTargetCObjectCWinAppCWnd(2)_ CObject ___&&
ccc(int x)
char szTemp[10] = "";
sprintf(szTemp, "%d,", x);
afxDump && szT&&&
afxDumpprintf
if(x = 3)&&
&&&&&&&&&&&&&
int x = 4;
&&&&&&&&&&&&&
sprintf(szTemp, "%d,", x);
&&&&&&&&&&&&&
afxDump && szT
sprintf(szTemp, "%d,", x);
afxDump && szT
char szTemp[10] = "";
int x = 7;
sprintf(szTemp, "%d,", x);\
afxDump && szT
int *pa = NULL;
func2(pa);
func2(int *pb)
pb = new int(5);
func2(int *value)
*value = 2;
int *p = 0;
func1(int& b)
int bbb = 3;
func1(&bbb);
func1(bbb);
func2func1b
func1func2func1func1
1.CC++VCMFC(4)
CC++CCVCMFCC++API,CObject& CFrameWnd CView
Print(int a,int b)
CreateProcess()
CreateThread()
4.SendMessagePostMessage(4)
SendMessagePostMessagePostMessageSendMessage
5.WaitForSingleObjectm_pThrdCWinThread*WaitForSingleObject(m_pThrd-&m_hThread,
INFINITE);(4)
&m_pThrdCWinThread*WaitForSingleObjectINFINITEWaitForSingleObject
6. __stdcall__cdecl__pascal(4)& &
pascal&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
cdecl&&&&&
stdcall&&&
&&&&&&&&&&&&&&&&&&&&
MyWriteFile(CString strFileName, CString strText)
int nRet = 0;
If(NULL==myFile.Open(strFileName,CFile::modeWrite|CFile::shareExclusive|CFile::modeCreate,
//CFileExecptiontry catchNULLIF
int nLen = strText.GetLength();
myFile.Write((char*)(LPCSTR)strText, nLen);
Catch(CFileException &e)
Printf(“write error\n”);
myFile.Close();
8functtt (6)
int (*func)(int, int*);&&&&
xxx(int a, int *p)
return a + *p;
dowork(func aaa, int bbb, int *ccc)
return aaa(bbb, ccc);
dowork(&xxx, 3, &sss);
9: int operator+(…thisccc (6)
&&&&&&&&&&&&&
weight = 2;
Fruit(int w)
&&&&&&&&&&&&&
int operator+(Fruit f)
&&&&&&&&&&&&&
return this-&weight * f.
Fruit bbb(4);
int ccc = aaa +
int operator+(…):+
10.C++C(6)
template&typename
T sum(T a,
return (a + b);
11aaa.h(5)
!defined(AFX_MYSUDU_H__9B952BEA_A051__DA4__INCLUDED_)
AFX_MYSUDU_H__9B952BEA_A051__DA4__INCLUDED_
12CMemoryState(5)
&iostream&
virtual void print()
cout&& "base"
void DoPrint()
CChild1: public CBase
virtual void print()
cout&& "child1"
CChild2: public CBase
virtual void print()
cout&& "child2"
DoPrint(CBase *base)
base-&DoPrint();
CBase* base = new CBase();
CChild1* child1 = new CChild1();
CChild2* child2 = new CChild2();
DoPrint(child1);
DoPrint(child2);
DoPrint(base);
base = child1;
base-&print();
delete child1;
delete child2;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。等级:书童 |
您现在的位置:&>>&&>>&&>>&文章内容
C++上机改错题详细分析
日来源:233网校
1、给定程序MODI1.C中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加任何语句和表达式。例如变量a中的值原为10,b中的值原为20,程序运行后a中的值为20,b中的值为10。  请改正程序中的错误,使它能得出正确的结果。  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!  试题源程序如下:  #include<stdio.h>  /**********found***********/  void fun(int x,int y)  {  /**********found***********/   t=x; x=y;  /**********found***********/     }  main()  { int a,b;   printf("Enter a,b: ");scanf("%d%d",&a,&b);   printf("a=%d b=%d\n\n",a,b);   b=fun(&a,b);   printf("a=%d b=%d\n\n",a,b);  }分析1)当对以上程序进行编译时,给出的第一个出错信息是:void function may not return avalue。指出void类型的函数不可能返回一个函数值。从主函数可知,函数将返回值赋给整型变量b,因此,fun函数应当是int类型,在fun之前的void应改为int或删除void。  (2)改正以上错误的同时,考生会发现主函数中调用fun函数时,第一个实参和形参的类型不匹配,实参的类型是int变量的地址值,形参的类型是int类型变量,因此应该在fun函数的第一个形参x之前加一个*号,把x定义成一个能接受地址的指针。  (3)进行修改后的程序编译不再出错,运行程序时给a和b输入数据(注意输入的数据用空格隔开)。若给a输入10,给b输入20,从输出的结果看a和b的值都没有变,也就是说,在fun函数中并没有进行指定的交换操作,这就要求对fun函数中的语句进行检查。  (4)在函数内可以发现语句t=x;把地址值赋给了整型变量,这是不允许的,按题义应当把指针x所指a的值赋给t,因此语句应该是t=*x;同样语句x=y;应该改成*x=y;,这样就把主函数中变量b的值赋给了变量a;改变后再运行程序并给a和b分别输入10和20,观察输出结果可以看到a和b的值都为20,也就是说b的值已给了a,而b本身并没有改变。  (5)再审查程序应当看到在主函数中,b最后的值是通过fun函数的返回值赋给的,观察函数的return语句,返回的是函数中y的值,而这是主函数中b的原值,因此在逻辑上存在错误,按题义应该返回a的原值,而此时,a的原值已通过t=*x放在了fun函数的t中,所以return语句应改成:。再次运行程序,就的到了正确的结果。  (6)提示:  ①首先检查被调用函数的类型和形参的类型是否与主函数中的调用函数和实参的类型一致,如果不一致,应按主函数中的调用来进行修改。例如,实参为指针或数组名时,对应的形参一定应定义成基类型相同的指针。在主函数中返回的函数值赋给一个指针时,则函数的类型也一定是基类型相同的地址值。  ②若函数有返回值,应检查return语句中的表达式的类型是否与函数的类型一致。  ③若形参是指针类型,则在函数中应通过间址符(*)来引用主函数中的变量。
责编:daiy&&&
课程专业名称
原价/优惠价
¥150 / ¥100
¥150 / ¥100
¥150 / 100
¥150 / ¥100
¥150 / ¥100
¥150 / ¥100
¥150 / ¥100

我要回帖

更多关于 短文改错 的文章

 

随机推荐