C++程序设计题目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++程序设计题目相关的知识,希望对你有一定的参考价值。
从键盘输入字符串,将其中的单词(两个空格之间的字符串)的第一个字母转换为其后一个字母(如第一个字母为a,则将其转换为b,如第一个字母为z,则将其转换为a),输出原始字符串及转换后的所有单词,直到输出“*”结束转换和输出。
要求:转换功能由单独的函数完成。
请给出完整程序,好加分。
或者写出主函数也行。
#include<iostream>
void main()
char f(char charName)
if ( (charName>='a')&&(charName<='z') )||( (charName>='A')&&(charName<='Z') )
if (charName=='z')
return 'a';
if(charName=='Z')
return 'A';
return charName+1;
return charName;
一、单选题 1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D ) A. 公有类型 B. 私有类型 C. 保护类型 D. 友元类型 2.下列关于多态性的描述,错误的是( C )
A. C++语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态绑定 3.在C++语言中,数据封装要解决的问题是( D ) A. 数据的规范化 B. 便于数据转换
C. 避免数据丢失 D. 防止不同模块之间数据的非法访问 4.使用private修饰的成员变量,以下说法正确的是( A ) A. 只能由本类中的函数使用,不能被外面的程序所访问。 B. 可以由本类中的函数使用,也可以被外面的程序所访问。 C. 只能由本类和派生类中的函数使用。 D. 可以在主函数中使用。
5.对类的构造函数和析构函数描述正确的是( A ) A. 构造函数可以重载,析构函数不能重载 B. 构造函数不能重载,析构函数可以重载 C. 构造函数可以重载,析构函数也可以重载 D. 构造函数不能重载,析构函数也不能重载
6.下面对静态数据成员的描述中,正确的是( A ) A. 静态数据成员是类的所有对象共享的数据 B. 类的每个对象都有自己的静态数据成员 C. 类的不同对象有不同的静态数据成员值 D. 静态数据成员不能通过类的对象调用
7.在VC++语言类体系中,不能被派生类继承的有( B ) A. 转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数 8.下面关于句柄正确的说法是( A )
A. 句柄是一个标识Windows资源和设备等对象的变量。 B. 句柄是用户程序自定义的数据类型。 C. 用户程序使用句柄时不需要定义。
D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。 9.下面关于动态链接库正确的说法是( B )
A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。 B. 动态链接库提供的函数,在运行阶段能够连接到应用程序中。 C. 动态链接库本身不能单独设计、编译和调试。 D. 动态链接库的使用使得程序缺乏灵活性。
10.下面关于MFC应用程序中InitInstance函数正确的说法是( D ) A. 该函数由用户定义。
B. 该函数不需要用户程序覆盖。
C. 该函数在WinMain函数内被显式调用。 D. 通过应用程序类的全局指针自动调用。
11.为了在程序中显示一个模式对话框,应使用CDialgl类的成员函数( C ) A. ShowWindow() B. Create()
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
2
C. DoModal() D. InvalidateRect()
12.为了在程序中显示一个无模式对话框,应使用CWnd类的成员函数( A ) A. ShowWindow(SW_NORMAL) B. Create() C. DoModal() D. InvalidateRect() 13.对于模式对话框的缺省按钮“OK(确定)”,下面哪种说法是正确的?( B ) A. 单击“OK”,系统认定用户在对话框中的选择或输入无效,对话框退出。 B. 单击“OK”,系统认定用户在对话框中的选择或输入有效,对话框退出。 C. 单击“OK”,对话框照常运行。 D. 单击“OK”,对话框暂停运行。
14.设有语句int i=MessageBox("MFC对话框","提问",MB_YESNO|MB_ICONQUESTION);,下面哪种说法是正确的?( C )
A. 消息对话框有两个按钮“确定”和“取消”,单击“确定”返回IDOK。 B. 消息对话框有一个按钮“确定”,单击“确定”返回IDOK。
C. 消息对话框有两个按钮“是”和“否”, 单击“是”返回IDYES。 D. 消息对话框有一个按钮“是”, 单击“是”返回IDYES。 15.一个无模式对话框在退出时,应写的代码是( C ) A. DestroyWindow(); B. delete this; C. DestroyWindow();delete this; D. CloseWindow();
16.在编辑框内用代码实现剪贴板功能,下面哪个说法是正确的( D ) A. 使用UNIT类型变量访问剪贴板函数 B. 使用CString类型变量访问剪贴板函数 C. 使用int类型变量访问剪贴板函数 D. 使用CEdit类型变量访问剪贴板函数
17.关于DDX/DDV技术,下面哪个说法是正确的。( D ) A. 用户只能为一个控件关联一个变量
B. 用户可以为同一个控件关联多个变量,变量名可以相同,类型必须不同。 C. 用户可以为同一个控件关联多个变量,类型可以相同,变量名必须不同。 D. 用户可以为同一个控件关联多个变量,但必须保证变量名不同且类型不同。 18.一个Button控件同时具有OnCommand和BN_CLICKED两个消息处理函数,下面哪个说法是正确的。( B )
A. 优先执行BN_CLICKED消息处理函数 B. 优先执行OnCommand消息处理函数 C. 同时执行 D. 编译错
19.关于函数CListBox:: GetText( int nIndex, LPTSTR lpszBuffer ),下面的说法哪个是正确的( C ) A. 取列表框中选中项的内容 B. 取列表框中选中项的索引
C. 取列表框中索引为nIndex的内容,送lpszBuffer D. 取列表框中内容为lpszBuffer的索引,送nIndex
20.关于函数CButton::SetCheck (1),下面的说法哪个是正确的( A ) A. 设置复选按钮为选中状态 B. 设置复选按钮为非选中状态 C. 设置复选按钮为不确定状态 D. 该函数不能设置复选按钮状态
21.关于对话框应用程序的初始化代码,下面哪个说法是正确的( B ) A. 初始化代码应放在WinMain()函数中
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
3
B. 初始化代码应放在OnInitDialog()函数中 C. 初始化代码应放在对话框类的构造函数中 D. 初始化代码应放在用户自定义函数中
22.关于函数CProgressCtrl::SetPos( int nPos ),下面的说法哪个是正确的( C ) A. 设置进展条的步长 B. 设置进展条范围的上限 C. 设置进展条初始位置 D. 返回进展条当前位置
23.关于函数CListBox::GetItemDataPtr( int nIndex ),下面的说法哪个是正确的( A ) A. 取出与索引nIndex的列表项相关联数据的指针,类型为void* B. 取出与索引nIndex的列表项相关联数据的指针,类型CString* C. 取出与索引nIndex的列表项相关联数据的指针,类型int* D. 取出索引nIndex的列表项字符串
24.关于函数SetSel(0,-1),下面的说法哪个是正确的( C ) A. 在编辑框内选中第0行文本 B. 在编辑框内未选中任何文本 C. 在编辑框内选中全部文本 D. 参数范围错
25.关于滚动条的WM_VSCROLL消息映射,下面的说法哪个是正确的( B ) A. 在CScrollBar类中进行 B. 在CDialog类中进行 C. 在CFrameWnd类中进行 D. 在CView类中进行
26.关于函数CProgressCtrl:: SteiIt(),下面的说法哪个是正确的( A ) A. 使进展条前进一个步长 B. 使进展条后退一个步长 C. 设置进展条初始位置 D. 返回进展条当前位置
27.关于函数CListBox:: GetCurSel( ),下面的说法哪个是正确的( B ) A. 取列表框中选中项的内容 B. 取列表框中选中项的索引 C. 删除列表框中的选中项 D. 在列表框中添加一项 28.关于函数UpdateData(),下面哪个说法是正确的( B ) A. 数据从相关联的成员变量向控件传输 B. 数据从控件向相关联的成员变量复制 C. 实现不同控件之间的数据交换
D. 实现与不同控件相关联变量的数据交换
29.关于函数CListBox:: ResetContent( ),下面的说法哪个是正确的( D ) A. 更新列表框中的内容 B. 删除列表框中的第1项 C. 删除列表框中的最后1项
D. 删除列表框中的所有项,即清空列表框
30.为使工具栏按钮与对应菜单项功能一致,下面哪个说法是正确的( B ) A. 工具栏按钮与对应菜单项的ID相同,工具栏按钮必须重写代码。 B. 工具栏按钮与对应菜单项的ID相同,工具栏按钮不用重写代码。 C. 工具栏按钮与对应菜单项的ID必须不同,工具栏按钮必须重写代码。 D. 工具栏按钮与对应菜单项的标题相同,工具栏按钮不用重写代码。 31.关于消息WM_CONTEXTMENU的说法,下面哪个说法是正确的( A ) A. 单击鼠标右键时发送 B. 单击鼠标左键时发送 C. 双击鼠标右键时发送 D. 双击鼠标左键时发送
32.关于消息BN_CLICKED的说法,下面哪个说法是正确的( B ) A. 单击鼠标右键时发送 B. 单击鼠标左键时发送 C. 双击鼠标右键时发送 D. 双击鼠标左键时发送 33.关与函数OnDraw,下面哪个说法是正确的( A ) A. 窗口首次生成时自动调用 B. 窗口生成后调用 参考技术A #include<iostream>
using namespace std;
void fun(char *b1, char *b2)
int c,i=0;
while(b1[i]==' ')
b2[i]=b1[i];
i++;
while(b1[i]!='\0')
c=b1[i];
if(c>='a' && c<='z')
b2[i]='a'+(c-'a'+1)%26;
else if(c>='A' && c<='Z')
b2[i]='A'+(c-'A'+1)%26;
else
b2[i]=c;
i++;
while(b1[i]!='\0' && b1[i]!=' ')
b2[i]=b1[i];
i++;
while(b1[i]!='\0' && b1[i]==' ') //单词之间的空格
b2[i]=b1[i];
i++;
b2[i]=0;
return;
int main()
char s1[200],s2[200];
gets(s1);
while(s1[0]!='*')
fun(s1,s2);
cout <<endl <<s1 <<endl <<s2 <<endl;
gets(s1);
return 0;
参考技术B #include"stdio.h"
#include<string.h>
void main()
char str[100];
gets(str);
int len = strlen(str);
for(int i=0;i<len;i++)
if(str[i]=='*') break;
str[i] = f(str[i]);
printf("%c",str[i]);
return;
追问
这个是C语言的,我要的是C++的,不好意思哈。
追答#include
#include
using namespace std;
void main()
char str[100];
gets(str);
int len = strlen(str);
for(int i=0;i<len;i++)
if(str[i]=='*') break;
str[i] = f(str[i]);
cout<<str[i];
return;
功能。可以写几个Initial函数来做个小选择菜单比较漂亮些。名字最好是英文。中文排序可能复杂点
XX网c++程序员面试题目
1. 逆序打印链表,不借助其他工具。
void PrintListReverse(ListNode *head)
{
if(head != nullptr)
{
if(head->next != nullptr)
{
PrintListReverse(head->next);
}
printf("%d \n",head->value);
}
}
2. Linux系统中cp和mv的区别。
cp: 将文件或者目录拷贝到另一个目录中。
mv: 将文件或者目录转移到另一个目录中。
从inode角度分析:
cp:只会复制数据不会复制inode索引节点上的文件元信息。
mv: 会将存储于inode索引节点上的文件元信息也转移到新文件中。
3. Linux系统中系统监控的相关命令大全。
内存:free:查看内存,包括物理内存和虚拟内存。
vmstat:对操作系统的虚拟内存、进程、CPU活动进行监控。
CPU:top:各个进程对资源的占用情况。
mpstat命令指令主要用于多CPU环境下,它显示各个可用CPU的状态。
网络:netstat:网络连接状态。
tcpdump:捕捉或过滤TCP/IP包。
iostat:手机设备的IO信息。
4. 为什么C++的析构函数设置成虚函数。
在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生,这样会引发内存的泄漏。但是当不存在继承和派生时,可以设置非虚函数。默认不是虚析构函数是因为如果析构函数为虚函数就需要编译器在类中增加虚函数表来实现虚函数机制,这样所需内存空间就更大了,因此没有必要默认为虚析构函数。
5. Linux中多线程编程的API有哪些。
线程相关:pthread_create(),创建一个线程;pthread_exit(),线程结束时调用;pthread_join(),一个进程中的多有线程都可以调用pthread_join函数来回收其他线程,等待其他线程结束;pthread_cancle(),异常终止一个线程。另外多线程编程涉及到线程的数据交换和同步,需要互斥锁、条件变量、读写锁、信号量等来进行同步。
6. 介绍一下Linux系统中的自旋锁。
自旋锁是Linux系统用来保护临界区资源的,在Linux系统中比较常见。自旋锁最多只能被一个可执行的线程持有,而一个试图获得自旋锁的线程则需要一直循环等待,这就是自旋的意思,从而可以看出,线程自旋时比较浪费处理器时间。
7. 非阻塞IO什么情况下可读可写。
对于非阻塞IO,操作成功与否都会返回,通过返回的错误码来判断是否可读可写。读,没有数据时立刻返回,有数据时采用有多少读多少。写,就是有多少写多少。能够写多少是根据本地网络拥塞情况为标准的,当网络拥塞严重的时候,网络层没有足够的内存来进行写操作,就会出现写不完的情况;这时候,阻塞写除非被中断,都会等到数据都写完;而非阻塞写,就是能写多少算多少。
8. 多客户端连接造成访问性能下降怎么排查。
此题理解上应该是大量并发造成的服务器性能下降该如何排查应对:(1)内存,查看系统内存情况,包括物理内存和虚拟内存,Linux系统命令free -m可以快速查看Linux的内存情况。(2)cpu:查看cpu是否一直运行在高负载的情况。(3)查看数据库是否存在访问瓶颈。(4)查看客户端和服务器之间是否存在大量的空连接,防止出现连接耗尽攻击,因为系统需要为每一个连接维护状态,就需要占用大量的资源。
9. 进程之间是怎么同步的。
进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程:临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问;互斥量为协调共同对一个共享资源的单独访问而设计的。互斥量跟临界区很相似,比临界区复杂,互斥对象只有一个,只有拥有互斥对象的线程才具有访问资源的权限;信号量,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目,互斥量是信号量的一种特殊情况,当信号量的最大资源数=1就是互斥量了;事件用来通知线程有一些事件已发生,从而启动后继任务的开始。
10. 建立TCP连接消耗哪些资源。
参考链接:
1.https://blog.csdn.net/hhhanpan/article/details/80624244。
2.https://blog.csdn.net/m0_38001814/article/details/90546111。
3.https://blog.csdn.net/qq_34777600/article/details/81948586。
4.https://blog.csdn.net/qj4522/article/details/84892762。
5.https://blog.csdn.net/zxx901221/article/details/83006453。
以上是关于C++程序设计题目的主要内容,如果未能解决你的问题,请参考以下文章
C语言题目:设计一个程序输入年月日 输出下一天的年月日 要C语言,不要C++