devc++训练题十
50道C++编程练习题及解答-c编程例题

50道C++编程练习题及解答-c编程例题C++作为一种广泛应用的编程语言,通过大量的练习可以帮助我们更好地掌握其编程技巧和逻辑思维。
以下是为您精心准备的 50 道 C++编程练习题及详细解答,希望能对您的学习有所帮助。
练习题 1:计算两个整数之和题目描述:编写一个 C++程序,输入两个整数,计算它们的和并输出。
```cppinclude <iostream>using namespace std;int main(){int num1, num2, sum;cout <<"请输入第一个整数:";cin >> num1;cout <<"请输入第二个整数:";cin >> num2;sum = num1 + num2;cout <<"这两个整数的和为:"<< sum << endl;return 0;}```练习题 2:判断一个数是否为偶数题目描述:编写一个 C++程序,输入一个整数,判断它是否为偶数。
```cppinclude <iostream>using namespace std;int main(){int num;cout <<"请输入一个整数:";cin >> num;if (num % 2 == 0) {cout << num <<"是偶数" << endl;} else {cout << num <<"不是偶数" << endl;}return 0;}```练习题 3:打印 1 到 100 之间的所有奇数题目描述:编写一个C++程序,打印出1 到100 之间的所有奇数。
```cppinclude <iostream>using namespace std;int main(){for (int i = 1; i <= 100; i++){if (i % 2!= 0) {cout << i <<"";}}cout << endl;return 0;}```练习题 4:计算一个整数的阶乘题目描述:编写一个 C++程序,输入一个整数,计算它的阶乘。
Linux操作系统下的C语言开发环境搭建测试题

Linux操作系统下的C语言开发环境搭建测试题(答案见尾页)一、选择题1. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 设置环境变量C. 编译和运行C程序D. 配置终端2. 在Linux操作系统中,以下哪个命令可以用来编译和运行C程序?A. gccB. g++C. chmodD. make3. 在Linux操作系统中,如何修改默认的编译器路径?A. 修改PATH环境变量B. 使用export命令C. 编辑/etc/profile文件D. 修改gcc的配置文件4. 在Linux操作系统中,安装了GCC编译器后,如何验证其安装成功?A. 输入gcc --version命令B. 输入gcc -v命令C. 输入gcc --configure命令D. 输入gcc -E命令5. 在Linux操作系统中,如何配置终端以方便进行C语言编程?A. 更改终端的提示符B. 安装tmux或screen工具C. 配置bashrc文件6. 在Linux操作系统中,如何使用GDB调试器调试C程序?A. 安装gdb软件包B. 编译程序时添加-g选项C. 使用gdb命令启动程序D. 查看程序内存布局7. 在Linux操作系统中,如何查看源代码文件的内容?A. 使用cat命令B. 使用less命令C. 使用grep命令D. 使用find命令8. 在Linux操作系统中,如何使用vi编辑器编辑C语言源代码文件?A. 进入vi编辑器B. 编辑文件内容C. 保存文件并退出vi编辑器D. 检查文件是否已保存9. 在Linux操作系统中,如何通过FTP上传和下载文件?A. 使用ftp命令B. 使用sftp命令C. 使用scp命令D. 使用ls命令10. 在Linux操作系统中,如何设置用户权限以确保C语言源代码的安全?A. 使用chmod命令B. 使用chown命令C. 使用umask命令D. 使用acl命令11. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?B. 设置环境变量C. 配置编译选项D. 编译和运行C程序12. 在Linux系统下,如何修改一个文件的权限使其可读可写?A. chmod 666 filenameB. chmod 777 filenameC. chmod 644 filenameD. chmod 755 filename13. 在Linux系统下,使用以下哪个命令可以查看文件的详细信息,如文件大小、创建日期等?A. ls -lB. df -hC. tar -xvf file.tarD. stat filename14. 在Linux系统下,如何使用vi编辑器打开一个文件?A. vi filenameB. vim filenameC. nano filenameD. emacs filename15. 在Linux系统下,安装了GCC编译器后,如何验证其是否正确安装?A. echo $PATHB. which gccC. gcc --versionD. all of the above16. 在Linux系统下,如何创建一个新的目录并进入该目录?A. mkdir new_directoryB. cd new_directoryC. rmdir new_directoryD. mkdir -p new_directory17. 在Linux系统下,如何使用grep命令在文本中搜索特定的字符串?A. grep "search_string" filenameB. grep "search_string" filename | lessC. grep "search_string" filename | moreD. all of the above18. 在Linux系统下,如何修改一个文件的换行符为LF(Unix风格)?A. dos2unix filenameB. unix2dos filenameC. cat filename | tr '' '' > filenameD. all of the above19. 在Linux系统下,如何使用find命令查找特定文件?A. find / -name "filename_pattern"B. find . -type f -name "filename_pattern"C. find / -name "filename_pattern" -printD. all of the above20. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装编译器B. 配置编译环境变量C. 安装文本编辑器D. 编写、编译和运行C源代码21. 在Linux操作系统下,以下哪个命令可以用来编译和运行C语言源代码?A. gccB. g++C. chmodD. make22. 在Linux操作系统下,以下哪个命令可以用来安装一个新的C语言库?A. apt-getB. yumC. pacman23. 在Linux操作系统下,以下哪个命令可以用来查看源代码的层次结构?A. catB. grepC. treeD. less24. 在Linux操作系统下,以下哪个命令可以用来创建一个新目录?A. mkdirB. rmdirC. touchD. cp25. 在Linux操作系统下,以下哪个命令可以用来删除一个文件?A. rmB. mvC. rmdirD. cp26. 在Linux操作系统下,以下哪个命令可以用来复制文件或目录?A. cpB. mvC. rmD. ln27. 在Linux操作系统下,以下哪个命令可以用来查看文件的内容?A. catB. grepC. lessD. head28. 在Linux操作系统下,以下哪个命令可以用来查找文件?A. findB. locateD. man29. 在Linux操作系统下,以下哪个命令可以用来查看当前目录的内容?A. lsB. cdC. pwdD. man30. Linux操作系统下,C语言开发环境的搭建需要哪些步骤?A. 安装GCC编译器B. 配置内核头文件C. 安装文本编辑器D. 配置终端环境31. 在Linux操作系统下,如何验证C语言编译成功?A. 编译一个简单的C源代码,观察是否有语法错误B. 使用命令行进入编译后的目录,查看生成的可执行文件C. 在终端中输入编译命令,观察是否有错误信息D. 将编译后的程序在另一个系统中运行,检查功能是否实现32. Linux操作系统下,C语言开发常用的文本编辑器有哪些?A. VimB. EmacsC. nanoD. Kate33. 在Linux操作系统下,如何配置终端环境以便于C语言编程?A. 设置默认编码为UTF-8B. 配置PATH环境变量,确保编译器路径已添加C. 安装并配置版本控制工具(如Git)D. 配置别名,提高编程效率34. 在Linux操作系统下,C语言开发中常用的调试工具有哪些?A. GDB调试器B. DDD调试工具C. Valgrind内存检测工具D. printf()函数调试35. Linux操作系统下,C语言开发环境的搭建过程中,如何配置网络连接?A. 修改网络配置文件,设置静态IP地址B. 关闭防火墙,确保端口畅通C. 配置DNS服务器,解析域名D. 使用Wireshark工具监控网络流量36. 在Linux操作系统下,C语言开发环境中,如何管理项目文件?A. 使用版本控制工具(如Git)进行项目管理B. 使用文件系统树形结构管理项目文件C. 使用目录和文件名来管理项目文件D. 使用标签系统管理项目文件37. Linux操作系统下,C语言开发环境的搭建完成后,如何优化编译速度?A. 升级GCC编译器到最新版本B. 优化编译选项,减少编译时间C. 使用增量编译,避免重复编译D. 使用并行编译,提高编译速度38. 在Linux操作系统下,C语言开发环境的搭建过程中,如何安装必要的库文件?A. 使用包管理器(如apt或yum)安装库文件B. 从官方网站下载库文件并手动安装C. 从源代码编译库文件并安装D. 使用静态链接库文件,减少动态链接的内存开销39. Linux操作系统下,C语言开发环境的搭建完成后,如何进行代码测试和调试?A. 使用GDB调试器进行单步调试B. 使用DDD调试工具查看内存状态C. 使用printf()函数打印变量值进行调试D. 使用单元测试框架进行自动化测试40. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 配置环境变量C. 安装文本编辑器D. 编译和运行C程序41. 在Linux操作系统下,以下哪个命令可以用来查看系统中的所有进程?A. ps -efB. topC. freeD. all42. 在Linux操作系统下,如何修改一个文件的权限使得文件所有者具有读写权限,其他用户只具有读权限?A. chmod 644 filenameB. chmod 755 filenameC. chmod 664 filenameD. chmod 777 filename43. 在Linux操作系统下,使用以下哪个命令可以查看当前目录下的隐藏文件?A. ls -aB. ls -lC. ls -hD. ls -d44. 在Linux操作系统下,如何安装一个新软件包?A. apt-get updateB. yum install package_nameC. pacman -S package_nameD. brew install package_name45. 在Linux操作系统下,如何使用grep命令查找包含特定字符串的文件?A. grep "search_string" filenameB. grep "search_string" /path/to/filenameC. grep "search_string" $(find /path/to/search -type f)D. grep "search_string" /path/to/search/*46. 在Linux操作系统下,如何修改文件的所有者和组?A. chown new_owner:new_group filenameB. chown new_owner:new_group /C. chown new_owner:new_group *D. chown new_owner:new_group .47. 在Linux操作系统下,如何创建一个新的用户组?A. groupadd group_nameB. groupadd -g GID group_nameC. groupadd -G GID group_nameD. groupadd -p group_name48. 在Linux操作系统下,如何设置Shell提示符?A. export PS1="\u@\h:\w\$ "B. export PS1="\u@\h:\w\$ "C. export PS1="\u@\h:\w\\$ "D. export PS1="\u@\h:\w\$ "二、问答题1. 请简述在Linux操作系统下搭建C语言开发环境的步骤。
数据结构c语言版试题及答案

数据结构c语言版试题及答案一、选择题(每题2分,共10分)1. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A2. 若有一个结构体数组,下列哪个函数可以用来初始化数组中的每个元素?A. memsetB. memcpyC. strcpyD. bzero答案:A3. 在C语言中,以下哪个函数用于动态分配内存?A. mallocB. callocC. reallocD. all of the above答案:D4. 对于一个链表,以下哪个操作是正确的?A. 插入节点B. 删除节点C. 遍历链表D. all of the above答案:D5. 在C语言中,以下哪个函数用于释放动态分配的内存?A. freeB. mallocC. callocD. realloc答案:A二、填空题(每题3分,共15分)1. 结构体定义的关键字是______。
答案:struct2. 在C语言中,动态分配内存失败时,malloc函数返回______。
答案:NULL3. 单链表的头节点指针通常初始化为______。
答案:NULL4. 双向链表中,每个节点包含______个指针。
答案:两个5. 树的深度优先遍历包括______、中序遍历和后序遍历。
答案:前序遍历三、简答题(每题5分,共20分)1. 请简述C语言中结构体和联合体的区别。
答案:结构体(struct)可以包含不同类型的数据,并且可以有多个实例;联合体(union)可以包含不同类型的数据,但是只能有一个实例,即在任意时刻只能存储其中一个成员的值。
2. 动态内存分配的优点是什么?答案:动态内存分配允许程序在运行时根据需要分配内存,这样可以更有效地使用内存资源,并且可以创建大小不固定的数据结构。
3. 链表相比于数组有哪些优点?答案:链表的优点包括动态大小,可以灵活地插入和删除节点,不需要预先知道数据的大小。
C++语言选择题40道:C++标准库:容器与算法.Tex

C++ 标准库:容器与算法试题1.C++标准库中的vector容器如何动态调整大小?o A. 使用size()成员函数o B. 使用reserve()成员函数o C. 使用resize()成员函数o D. 使用capacity()成员函数答案: C解析: resize()函数可以动态调整vector的大小,并指定新的元素内容,如果容器的大小扩大,新添加的元素将被初始化为指定值或默认值。
2.在C++中,map容器与unordered_map容器的主要区别是什么?o A. unordered_map是基于链表实现的o B. map是基于哈希表实现的o C. unordered_map提供了按插入顺序保存元素的功能o D. map元素按键值排序,而unordered_map不保证元素顺序答案: D解析: map容器使用红黑树作为底层实现,保证元素按键值排序,而unordered_map使用哈希表,不保证元素的顺序,但提供更快的查找速度。
3.C++标准库中的find算法返回什么?o A. 找到元素的副本o B. 找到元素的迭代器o C. 找到元素的引用o D. 找到元素的索引答案: B解析: find算法返回指向容器中找到元素的迭代器。
如果没有找到元素,返回指向容器末尾的迭代器。
4.如何在vector容器的任意位置插入新元素?o A. 使用push_back()o B. 使用insert()o C. 使用emplace()o D. 使用add()答案: B解析: insert()成员函数允许在vector容器的指定位置插入元素。
5.下列哪个容器不保证元素的插入顺序与存储顺序一致?o A. stacko B. dequeo C. listo D. vector答案: A解析: stack容器是基于LIFO(后进先出)原则,不保证元素的插入顺序与存储顺序一致。
6.C++中的for_each算法用于?o A. 遍历容器并对每个元素执行操作o B. 排序容器中的元素o C. 删除容器中的所有元素o D. 插入元素到容器中答案: A解析: for_each算法用于遍历容器中的每个元素并调用一个函数对象。
C语言程序设计_习题大全(含答案)

C语言基础一:1.下列四组选项中,均不是C语言关健字的选项是( A )。
A) define B) gect C) include D) whileIF char scanf gotype printf case pow2.下面四个选项中,均是合法整型常量的选项是( A )。
A)160 B)-0xcdf C) -01 D)-0x48a-0xffff 01a 986,012 2e5011 0xe 0668 0x<<02>>B>>23.下面四个选项中,均是不合法的转义符的选项是( B )。
A) '\"' B) '\1011' C) '\011' D) '\abc''\\' '\' '\f' '\101''xf' '\A' '\}' 'x1f'4.下面不正确的字符串常量是( A )。
A)'abc' B)"12'12" C)"0" D)" "5.以下选项中不合法的用户标识符是( A )。
A)abc.c B)file C)Main D)PRINT6.C语言提供的合法关键字是( D )。
A) swithB) cherC) Case). Default7.下列标识符组中,合法的用户标识符为 AA)_0123与ssipedB)del-word与signedC)list与*jerD) keep%与wind8.在C语言中,逻辑值"真"的表示是用( C )。
A) true B) 整型值0 C)非另整型值 D) T9若有以下定义char s='\092';则该语句( B )A)使s的值包含一个字符 B)定义不合法,s的值不确定C)使s的值包含4个字符 D)使s的值包含3个字符10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。
C语言基础测习题含答案

精心整理目录第1-3章C语言基础知识习题 .......................... 错误!未指定书签。
1选择题...................................................... 错误!未指定书签。
2填空题...................................................... 错误!未指定书签。
3答案及部分解析 ...................................... 错误!未指定书签。
第4章选择结构习题......................................... 错误!未指定书签。
2填空题 (1)第1-3章C语言基础知识习题1选择题1.以下不是C语言的特点的是()。
A、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2.下列字符序列中,不可用作C语言标识符的是()。
A.abc123B.no.1C._123_D._ok3.正确的C语言标识符是()。
A._buy_2B.2_buyC.?_buyD.buy?4.请选出可用作C语言用户标识符的一组标识符()。
A.voidB.a3_b3C.ForD.2a5.6.7.是8.9.ABCD10.C11.D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数12.以下说法中正确的是()。
A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须放在程序的开始部分13.C编译程序是()。
A.C程序的机器语言版本B.一组机器语言指令C.将C源程序编译成目标程序D.由制造厂家提供的一套应用软件14.以下选项中,合法的用户标识符是()。
A.longB._2abcC.3dmaxD.A.dat15.以下选项中,合法的实型常数是()。
C++基础练习题1-9章 自测题 题库带答案
1.概念填空题1.1用编写的程序称为“源程序”。
计算机(能/不能)直接识别源程序,必须将其翻译成二进制代码才能在机器上运行。
一旦编译成功,目标程序就可以反复执行。
1.2 C++的程序由一个或多个组成,其中一定有一个称为主函数的函数。
在组成程序的函数中,它是程序执行的,也是程序运行的。
对函数的描述由“{ }”中的语句序列完成,每个语句以符号结束。
C++程序大小写。
1.3布尔型数值只有两个:,。
在C++的算术运算式中,分别当作,。
1.4字符由括起来,字符串由括起来。
字符只能有个字符,字符串可以有个字符。
空串的表示方法为。
1.5 &&与||表达式按的顺序进行计算,以&&连接的表达式,如果左边的计算结果为,右边的计算就不需要进行了,整个逻辑表达式的结果为。
以||连接的表达式,如果左边的计算结果为,就能得到整个逻辑表达式的结果为。
1.6 >>运算符将一个数右移n位,相当于将该数2n,<<运算数将一个数左移n位,相当于将该数2n。
1.7 前置++、--的优先级于后置++、--。
2.概念填空题1.1用高级语言编写的程序称为“源程序”。
计算机不能(能/不能)直接识别源程序,必须将其翻译成二进制代码才能在机器上运行。
一旦编译成功,目标程序就可以反复执行。
1.2 C++的程序由一个或多个函数组成,其中一定有一个称为主函数的main函数。
在组成程序的函数中,它是程序执行的入口,也是程序运行的结束点。
对函数的描述由“{ }”中的语句序列完成,每个语句以;符号结束。
C++程序区别大小写。
1.3布尔型数值只有两个:true ,false。
在C++的算术运算式中,分别当作1,0。
1.4字符由‘括起来,字符串由“括起来。
字符只能有1个字符,字符串可以有0-多个个字符。
空串的表示方法为NULL 。
1.5 &&与||表达式按优先级的顺序进行计算,以&&连接的表达式,如果左边的计算结果为false,右边的计算就不需要进行了,整个逻辑表达式的结果为false。
LINUX实训(附答案)
LINUX实训考试试题(2015年)考前说明:1.本次考试为实机操作,考试时间为三个小时,考前准备的资料有:VMware_workstation_11.1.2.exe or VMware_workstation_10.0.1.exe;rhel-server-6.2-x86_64-dvd.iso or rhel-server-6.2-i386-dvd.iso orrhel-server-7.0-x86_64-dvd.iso注:根据考生实际情况决定至少安装一个VMware虚拟机与至少安装一个iso系统文件。
2.本次考试为开卷考试,可以看书、查资料;要求个人单独完成操作,严禁抄袭与代考,如有发现情况属实,抄袭者与被抄袭者,代考与被代考者成绩做0分处理。
3.考生需新建一个用自己班级+名字+学号的文件夹,用于存放自己的考试答题过程的截图,以作为评分依据。
考后提交给老师指定的收集人。
考题1:在VMware虚拟机上安装一台6或者7版本的red hat操作系统,要求如下:1最小化安装,时区为上海;硬盘分区:、boot 600M / 12000M swap 2048M:主机名设置为:www.考生名字拼音;root 密码:123456 新建用户名:student 密码:123456 其他为默认选择;新建用户:useradd studentpasswd student123456123456验证账号:[root@www ~]$状态下输入exit,并用student登录。
考题2:修改系统root密码为:!@#¥qwer重启,界面读秒时按e进入GUI界面GUI界面步骤:e//选择第二个e1bpasswd root!@#$qwer!@#$qwerreboot考题3:通过修改配置文件方式来配置网络;先用DHCP方式获得网络相关信息,做好记录;再将网络设置成静态相关信息。
vi /etc/sysconfig/network-scripts/ifcfg-eth0//大致修改后的文件内容如下DEVICE=eth0 #这是网卡的名称TYPE=Ethernet # 网卡类型ONBOOT=yes # 是否随着开机自启动BOOTPROTO=static #static表示固定ip地址,dhcp表示随机获取ipMM_CONTROLLED=yesIPADDR0=192.168.42.121 # 手动设置的固定ip地址(机房)NETMASK=255.255.255.0 #mask地址,就是掩码GA TEWAY0=192.168.42.1 #网关地址(机房)PREFIX0=24DNS0=202.192.72.33 #(机房)//修改好后,esc结束编辑,:wq保存并退出/etc/init.d/network restart//验证结果ip addr 或者ping一下试题4:配置好本地YUM源,并安装好:httpd bind tigervnc 三个软件包。
50道C++编程练习题及解答-c 编程例题1
50道C/C++编程练习题1.输入3个数, 求最大值int main(){ int a,b,c,m;cin>>a>>b>>c;m=a;if(b>m) m=b;if(c>m) m=c;cout<<m;}2.编程序, 求方程ax2+bx+c=0的根#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0) cout<<"error\n";else cout<< "x="<<-c/b<<endl;else{ d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;else if(d>1e-6){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl; }else cout<<"方程无实根\n";}}3.输入一个成绩, 打印相应的等级int main(){ int a;cin >> a;if(a>=90) cout<<"A";else if(a>=80) cout<<"B";else if(a>=70) cout<<"C"; else if(a>=60) cout<<"D";else cout<<"E";}4.输入3个double类型的值, 判断这3个值是否可以表示一个三角形的三条边。
嵌入式C开发人员的最好的0x10道笔试题(详细解析)
嵌入式C开发人员的最好的0x10道笔试题约定:(1) 下面的测试题中,认为所有必须的头文件都已经正确的包含了(2)数据类型Char 一个字节1 byteInt 两个字节2 byte (16位系统,认为整型是2个字节) long int 四个字节4 bytefloat 四个字节4 byetdouble 八个字节8 bytelong double 十个字节10 bytepointer 两个字节2 byte(注意,16位系统,地址总线只有16位)第1题: 考查对volatile关键字的认识#include<setjmp.h>static jmp_buf buf;main(){volatile int b;b =3;if(setjmp(buf)!=0){printf("%d ", b);exit(0);}b=5;longjmp(buf , 1);}请问,这段程序的输出是(a) 3 (b) 5 (c) 0 (d) 以上均不是第2题:考查类型转换main(){struct node{int a;int b;int c;};struct node s= { 3, 5,6 };struct node *pt = &s;printf("%d" , *(int*)pt);}这段程序的输出是:(a) 3 (b) 5 (c) 6 (d) 7第3题:考查递归调用int foo ( int x , int n){int val;val =1;if (n>0){if (n%2 == 1) val = val *x;val = val * foo(x*x , n/2);}return val;}这段代码对x和n完成什么样的功能(操作)?(a) x^n (x的n次幂) (b) x*n(x与n的乘积) (c) n^x(n的x次幂) (d)以上均不是第4题:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人main(){int a[5] = {1,2,3,4,5};int *ptr = (int*)(&a+1);printf("%d %d" , *(a+1), *(ptr-1) );}这段程序的输出是:(a) 2 2 (b) 2 1 (c) 2 5 (d) 以上均不是第5题:考查多维数组与指针void foo(int [][3] );main(){int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8,9}};foo(a);printf("%d" , a[2][1]);}void foo( int b[][3]){++ b;b[1][1] =9;}这段程序的输出是:(a) 8 (b) 9 (c) 7 (d)以上均不对第6题目:考查逗号表达式main(){int a, b,c, d;a=3;b=5;c=a,b;d=(a,b);printf("c=%d" ,c);printf("d=%d" ,d);}这段程序的输出是:(a) c=3 d=3 (b) c=5 d=3 (c) c=3 d=5 (d) c=5 d=5第7题:考查指针数组main(){int a[][3] = { 1,2,3 ,4,5,6};int (*ptr)[3] =a;printf("%d %d " ,(*ptr)[1], (*ptr)[2] );++ptr;printf("%d %d" ,(*ptr)[1], (*ptr)[2] );}这段程序的输出是:(a) 2 3 5 6 (b) 2 3 4 5 (c) 4 5 0 0 (d) 以上均不对第8题:考查函数指针int *f1(void){int x =10;return(&x);}int *f2(void){int*ptr;*ptr =10;return ptr;}int *f3(void){int *ptr;ptr=(int*) malloc(sizeof(int));return ptr;}上面这3个函数哪一个最可能引起指针方面的问题(a) 只有f3 (b) 只有f1 and f3 (c) 只有f1 and f2 (d) f1 , f2 ,f3第9题:考查自加操作(++)main(){int i=3;int j;j = sizeof(++i+ ++i);printf("i=%d j=%d", i ,j);}这段程序的输出是:(a) i=4 j=2 (b) i=3 j=2 (c) i=3 j=4 (d) i=3 j=6第10题:考查形式参数,实际参数,指针和数组void f1(int *, int);void f2(int *, int);void(*p[2]) ( int *, int);main(){int a;int b;p[0] = f1;p[1] = f2;a=3;b=5;p[0](&a , b);printf("%d\t %d\t" , a ,b);p[1](&a , b);printf("%d\t %d\t" , a ,b);}void f1( int* p , int q){int tmp;tmp =*p;*p = q;q= tmp;}void f2( int* p , int q){int tmp;tmp =*p;*p = q;q= tmp;这段程序的输出是:(a) 5 5 5 5 (b) 3 5 3 5 (c) 5 3 5 3 (d) 3 3 3 3第11题:考查自减操作(--)void e(int );main(){int a;a=3;e(a);}void e(int n){if(n>0){e(--n);printf("%d" , n);e(--n);}}这段程序的输出是:(a) 0 1 2 0 (b) 0 1 2 1 (c) 1 2 0 1 (d) 0 2 1 1第12题:考查typedef类型定义,函数指针typedef int (*test) ( float * , float*)test tmp;tmp 的类型是:(a) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)Pointer to function of having two arguments that is pointer to float(b) 整型(c) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型Pointer to function having two argument that is pointer to float and return int (d) 以上都不是第13题:数组与指针的区别与联系main(){char p;char buf[10] ={ 1,2,3,4,5,6,9,8};p = (buf+1)[5];printf("%d" , p);这段程序的输出是:(a) 5 (b) 6 (c) 9 (d) 以上都不对第14题: 考查指针数组的指针V oid f(char**);main(){char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" };f( argv );}void f( char **p ){char* t;t= (p+= sizeof(int))[-1];printf( "%s" , t);}这段程序的输出是:(a) ab (b) cd (c) ef (d) gh第15题:此题考查的是C的变长参数,就像标准函数库里printf()那样,这个话题一般国内大学课堂是不会讲到的,不会也情有可原呵呵,#include<stdarg.h>int ripple ( int , ...);main(){int num;num = ripple ( 3, 5,7);printf( " %d" , num);}int ripple (int n, ...){int i , j;int k;va_list p;k= 0;j = 1;va_start( p , n);for (; j<n; ++j){i = va_arg( p , int);for (; i; i &=i-1 )++k;}return k;}这段程序的输出是:(a) 7 (b) 6 (c) 5 (d) 3第16题:考查静态变量的知识int counter (int i){static int count =0;count = count +i;return (count );}main(){int i , j;for (i=0; i <=5; i++)j = counter(i);}本程序执行到最后,j的值是:(a) 10 (b) 15 (c) 6 (d) 7详细参考答案第1题: (b)volatile字面意思是易于挥发的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
2、
#include <iostream>
using namespace std;
int main(){
int a[12]={0,3,5,2,7,6,5,7,3,1,4,1};
int n=12;
int i,j,k,p;
for(i=1;i<n;i++){
int i;
for(i=0;i<=255;i++) a[i]=0;
for(i=0;i<s.length();i++) a[s[i]]++;
for(i=0;i<=255;i++)
if(a[i]>0) cout<<(char)i<<" "<<a[i]<<endl;
cout<<" "<<c;
return 0;
3、观看数列:2 3 6 12 18....除了前面两个数,后面的数一定是由前面的某两个数相乘而得,输入N,求最小的第N个数是多少?
4、文件t.txt保存了一个图,求这个图从第一点到最后一点的所有路线。
例:
5 6
1 2
1 4
2 3
4 3
4 5
3 5
第一行有两个数N和M,N表示有多少个点,M表示图有多少条边,第二行起记录了边。
C++训练题十
一、写出下面程序的结果
1、
#include <iostream>
#include <string>
using namespace std;
int main(){
string s="i went to bed at ten o'clock yestoday";
int a[256];
char c;
二、编程
1、下面的6×5方阵由小写字母组成,到xyz后又从a开始...
e
d
c
b
a
f
u
t
s
r
g
v
c
b
q
h
wdapixyz
o
j
k
l
m
n
输入N和M,输出N×M的方阵。
2、N个猴子,编号为1、2、3...N,按编号顺序围成一圈排队,N后又至1。猴子从编号1开始报数,从1报到M,报M的猴子出列,又从出列的下一个重新开始报数。。。到剩下最一个为止,最后一个是几号?
路线有:1 2 3 4 5 1 2 3 5 1 4 3 5 1 4 5
k=a[i];p=i;
while(p>1&&k<a[p/2]) {
a[p]=a[p/2];p=p/2;
}
a[p]=k;
}
i=1;k=1;
while(i<n){
for(j=1;j<=k;j++)
if(i<n) cout<<a[i++]<<" ";
cout<<endl;
k=k+k;
}
return 0;
}