收藏 分销(赏)

第二章例题.doc

上传人:s4****5z 文档编号:8095682 上传时间:2025-02-04 格式:DOC 页数:5 大小:51KB 下载积分:10 金币
下载 相关 举报
第二章例题.doc_第1页
第1页 / 共5页
第二章例题.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
1.1在下面的语句中错误的是 。 A、int n=5; int y[n] B、const int n=5; int y[n] C、in n=5; int *py=new int[n]; D、const int n=5; int *py=new int[n] 答:A ,选项中n是变量,int y[n]企图定义一动态数组是不可行的。B选项中n为常量,C、D选项均为用new动态操作内存从而可正确定义可调数组。 1.2在下列函数原型中错误的是 。 A、 int add(int X=3,int y=4,int Z=5) B、 int add(int x,int y=4,jint z) C、 int add(int x,int y=4,int z=5) D、 int add(int x,int y,int z=5) 答:B,带默认参数的缺省定义按从右到左顺序进行,在出现缺省定义后不可以再出现非缺省参数。 2.问答题 2.1下面是一个C程序,改写它,使它采用C++风格的I/O语句。 #include <stdio.h> main() { int a,b,c; int temp; printf("Enter a,b,c:"); scanf("%d%d%d",&a,&b,&c); temp=a; a=b; b=c; c=temp; printf("a=%d b=%d c=%d\n",a,b,c); } 解: #include <iostream.h> //C++风格得I/O语句是以流对象为特征的, //所以在选择头文件时应包含”iostream.h”。 void main() //C++的主函数一般要求在前面写上返回类型,若函数 //没有指出返回类型,C++默认该函数的返回类型为 //int。而本题中无返回值,应为void型。 { int a,b,c; int temp; cout<<"Enter a,b,c:"; //cin,cout,及运算符<<,>>在C语言中是没有的,它们正是 //C++提供得新得输入输出方式。其中cin称为标准输入流,cout是标 cin>>a>>b>>c; //准输出流,它们都是流对象;<<是输出运算符,>>是输入运算符。 temp=a; a=b; b=c; c=temp; cout<<"a="<<a<<" b="<<b<<" c= "<<c<<"\n"; //当需要连续输出不同变量值时, //注意使用进行分割,避免出现cout<<a ,b, c;这样的错误。 } 2.2C++中为什么提倡用const定义一个常量,这样做与用#define来定义有什么不同? 答:这两种写法得差别在于使用宏#define定义的常量没有数据类型,而使用const来定义的常量则有数据类型,当我们将这些常量当做函数得参数来传递时,可以帮助编译程序来检查参数间的数据类型是否正确。 2.3一个标识符的作用域指的是什么?作用域分为哪5种?试举例说明文件作用域。 答:一个标识符的作用域是出现中的一段区域,用于确定该标识符是否可用(可见性)。作用域分为:块作用域(局部作用域)、文件作用域(全局作用域)、函数原型作用域、函数作用域和类作用域。 具有文件作用域(全局作用域)的变量是在所有块、函数和类之外说明的标识符,其作用域从说明点开始到文件结束处结束。如果标识符出现在头文件的文件作用域中,则它的作用域扩展到包含了该头文件的程序文件中,直到该程序文件结束。例如: 1. #include "iostream.h" 2. int i; //全局作用域 3. void main() 4. { 5. i=5; //局部作用域 6. { 7. int i; 8. i=7; 9. cout<<"i="<<i<<endl; //输出“7” 10. } 11. cout<<"i="<<i<<endl; //输出“5” 12. } 第2行中的i(下面称为i2)为文件作用域(全局作用域),第7行中的i(下面称为i7)为块作用域(局部作用域),i7屏蔽外面的i2,这时在包含i7的复合语句(即7~10行)无法存取i2。 通过使用作用域运算符::可以在块作用域中存取被屏蔽的全局作用域中的i2。例如: 1. #include "iostream.h" 2. int i; //全局作用域 3. void main() 4. { 5. i=5; //局部作用域 6. { 7. int i; 8. i=7; 9. ::i=1; 10. cout<<"i="<<i<<endl; //输出“7” 11. } 12. cout<<"i="<<i<<endl; //输出“1” 13. } 变量可以在文件作用域中说明称为全局变量,在块作用域中说明为局部变量。 3.填空题 3.1在C++中,表达式cout<<endl还可表示为 。 解答:cout<<’\n’; cout<<’\12’,cout<<”\xA”或其他等价形式。 因为在C语言中曾讲过用‘\’引导转义字符。’\12’,’\xA’分别为十进制和十六进制。参看C语言课本。 3.2下列定义中,ptr所指向的地址可更改,但*ptr不可更改的是 。 ptr所指向的地址不可更改,但*ptr可更改的是 。 ptr所指向的地址可更改, *ptr也可更改的是 。 ptr所指向的地址不可更改, *ptr也不可更改的是 。 A、const int *ptr; B、int *const ptr; C、const int *const ptr ; D、int *ptr; 解:A,B,D,C 在辨别const与指针一起使用时,简单的方法是从右往左看,例如const int *ptr;首先ptr是指针(*),指向整型(int)的常量(const),得出ptr所指向的地址可更改,但*ptr是不可更改的;再如int *const ptr;首先ptr是常(const)指针(*),指向整型(int)变量,得出ptr所指向的地址不可更改,但*ptr是可更改的。 4.程序填空 4.1以下程序的功能是:输入两个字符串,把这两个字符串拼成一个新的字符串,输出拼接后的字符串. # include<iostream.h> char *stringcat(char *to,char *from) { char *p= 1 ; while (*to++); 2 ; while( 3 =*from++); to='\0'; return p; } void main(void) { char s1[200],s2[100]; cout<<"输入第一个字符串:"; cin.getline(s1,100); cout<<"输入第二个字符串:"; cin.getline(s2,100); cout<<"拼接后的字符串为:"<<stringcat( 4 )<<'\n'; } 解析: 1. to 使得指针p指向第一个字符串的首部 2. to— 使得指针指向第一个字符串得结束符'\n' 3. *to++ 完成拼接 4. s2,s1 用实参调用函数 5.改错与读程 5.1分析下列程序的输出结果 #include "iostream.h" void main() X 200 Num { int num=200; int &x=num; //为num定义一个引用变量x, X 300 Num cout<<x<<endl; x=x+100; //对引用变量x的操作,因和num同地址 cout<<num<<endl; //num的值随之发生变化 X 350 Num num=num+50; //同样对num的操作,也反应在x上 cout<<x; } 输出为: 200 300 350 5.2分析下列程序的输出结果 #include "iostream.h" void swap(int &m,int &n) { int temp; temp=m;n=m=y;n=temp; } void main() { int x=10,y=20; swap(x,y); cout<<"x="<<x<<",y="<<y<<endl; } 解答:x=10,y=10 在传递参数时使得m为x的引用,n为y的引用。则在函数中对m,n的操作等同于对主函数中的x,y进行操作,随着函数的结束,作为局部变量m,n失去作用,但x,y的值已经发生互换。这里的函数调用采用引用方式,其效果与传地址方式是相同的,但使用引用更加简洁直观。 6.编程题 6.1下面是使用带参宏定义完成求平方的功能。 #include "iostream.h" #define sq(x) x*x int main() { for(int k=2;k<=3;k++) cout<<k<<" square is "<<sq(k)<<endl; cout<<"1+3 square is "<<sq(1+3)<<endl; return 0; } 程序输出结果为 2 square is 4 3 square is 9 1+3 square is 7 请使用内置函数替代宏定义进行正确的运算。 解: #include "iostream.h" inline int sq(int x) //内置函数消除了#define得不安全因素 {return x*x} int main() { for(int k=2;k<=3;k++) cout<<k<<" square is "<<sq(k)<<endl; cout<<"1+3 square is "<<sq(1+3)<<endl; return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服