C++教材练习题(作业)参考答案
- 格式:doc
- 大小:160.00 KB
- 文档页数:36
第一章一种新的C语言学习方式1.一台能够工作的计算机包括?CPU (Central Processing Unit,中央处理单元,进行运算和控制,包括运算器和控制器等)、存储器(如RAM、ROM等)、输入设备、输出设备(包括串行/并行接口、USB等)。
其中,RAM (RandomAccess Memory,随机存储器)主要用于存储数据,ROM (RcadOnlyMemory, 只读存储器)主要用于存储程序。
2.单片机工作时需要什么?需要稳定的电源、晶振、外部存储器和编程调试接口,就像计算机工作时需要电源、晶振、硬盘或其他大容量外部存储器和操作系统一样。
微控制器是将单片机独立工作所需的电源适配器、晶振、外部存储器和串口转换电路等封装到一个模块上,这样就能直接与计算机连接并进行编程开发,不需任何其他芯片和电路。
3. AT89S52是一种什么样的单片机?是一种高性能、低功耗的8位单片机,内含8 KBISPdn-System Programmable系统在线编程)可反复擦写IOOO次的Flash只读程存器,采用ATMEL公司的高密度非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。
在实际工程应用中,功能强大的AT89S52 已成为许多高性价比嵌入式控制应用系统的解决方案。
4. Progisp是一款什么样的软件?是一款免费下载的ISP软件,不需要专门的安装即可使用,非常方便。
使用该软件,读者可以将C语言程序生成的可执行文件下载到机器人单片机上。
使用时需要1根USBA转B 信号线。
5.简述串口调试工具的特点。
串口调试工具就是串行通信接口调试软件,集数据发送、数据接收、数据监控、数据分析等功能于一身,具有小巧精致、操作简捷、功能强大的特点,可以在串口通信监控、设备通信测试工作中有效提高效率。
6. pr i ntf ()函数称为?称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出显示。
Print ()函数是C语言提供的标准输出函数,定义在C语言的标准函数库中,要使用它,必须包括定义标准函数库的头文件stdio. h o第二章最简单的C程序设计——机器人做算数1. C语言用什么整型变量?C语言用关键字imt定义整型变量。
计算机程序设计基础(C语言)单项选择练习题一、基本概念1.C语言程序是由C构成的。
A)一些可执行语言B)main函数C)函数D)包含文件中的第一个函数2.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程3.C语言程序从C开始执行。
A)程序中第一条可执行语句???B)程序中第一个函数?C)程序中的main函数???????D)包含文件中的第一个函数4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。
A)程序文件的开始B)程序文件的最后C)它所调用的函数的前面D)程序文件的任何位置5、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分6.下列方法中错误的是(D)。
A.主函数可以分为两个部分:主函数说明部分和主函数体。
B.主函数可以调用任何非主函数的其它函数。
C.任何非主函数可以调用其它任何非主函数。
D.程序可以从任何非主函数开始执行。
7.下列说法错误的是:(B)A.C程序运行步骤是编辑、编译、连接、执行。
B.C语言的变量名必须用小写,常量用大写。
C.C语言的三种基本结构是顺序、选择、循环。
D.C程序一定由函数构成的。
8.下列关于C语言的说法错误的是(B)。
A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。
C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行9.系统默认的C语言源程序扩展名为.C,需经过C之后,生成.exe文件,才能运行?A)编辑?编译B)编辑?连接C)编译?连接D)编辑?改错10.下列说法中正确的是(B)。
A.由于C源程序是高级语言程序,因此一定要在TC软件中输入。
B.由于C源程序是由字符流组成的,因此可以作为文本文件在任何文本编辑的软件中输入。
(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参考使⽤)1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。
#includeint fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。
#includevoid fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量c中。
计算机二级《C语言》基础练习题及答案计算机二级《C语言》基础练习题及答案1[单选题] 有以下程序程序的输出结果是A.9B.14C.10D.15参考答案:D参考解析:考查函数的递归调用,只需要一步一步递归调用fun 函数即可,执行fun(5)=5+(4+(3+(2+fun(1))))=15。
所以答案为D 选项。
2[单选题]下列叙述中正确的是( )。
A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性参考答案:B参考解析:线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。
3[单选题] 有以下程序:程序运行后的输出结果是( )。
A.02356B.0235C.235D.2356参考答案:C参考解析:k的值为5,逐个对caBe语句进行匹配,均不匹配,执行default下的语句n=0;k一一。
再执行case2:ca804:后面的语句n+=2;k一一;。
执行break语句跳出switch判断,打印n的值,即2。
经过第一次循环后,k的值为3,然后进行k>0& amp;&ll<5条件判断为真。
第二次执行循环体,执行case3:后面的语句n+=1;k一一;。
再执行break语句跳出循环,此时打印n的值3,此时k的值为2。
第三次执行循环体k的值为2,满足条件,执行case2:case4:后面的语句n+=2;k一一;。
执行break语句跳出循环体。
打印n的值5。
此时n不满足条件k>0&&n<5,所以结束循环。
整个程序的打印结果为235。
4[单选题] 以下程序调用fun函数求数组中最大值所在元素的下标。
在横线处应填入的内容是A.*k=iB.k=iC.*k=i-sD.k=i-s参考答案:A参考解析:fun函数的功能是求数组中最大值所在元素的下标。
江南大学现代远程教育第一阶段练习题考试科目:《C语言程序设计》第一章至第四章(总分100分)学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一单选题 (共20题,总分值40 ,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。
)1. 有以下程序main(){ int i=1,j=1,k=2;if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);}执行后输出结果是()。
(2 分)A. 1,1,2B. 2,2,1C. 2,2,2D. 2,2,32. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是()。
(2 分)A. 6B. 0C. 2D. 13. 执行以下程序段后,变量a,b,c的值为()。
int x=11,y=10,a,b,c;a=(--x==y++)?--x:++y;b=x++; c=y; (2 分)A. a=10,b=10,c=9B. a=9,b=9,c=12C. a=9,b=9,c=11D. a=1,b=9,c=114. 以下程序的输出结果是用()表示。
main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);} (2 分)A. 17,021,0x11B. 17,17,17C. 17,0x11,021D. 17,21,115. 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车> ,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()。
(2 分)A. scanf(“%2d%2d%2d”,&i,&j,&k);B. scanf(“%d %d %d”,&i,&j,&k);C. scanf(“%d,%d,%d”,&i,&j,&k);D. scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);6. 以下非法的赋值语句是()。
C语言练习题答案1.已知三角形的三边长为a,b,c,计算三角形面积的公式为:area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2。
试编程从键盘输入a,b,c的值(假设a,b,c的值可以保证其构成一个三角形),计算并输出三角形的面积。
**输入格式要求:"%f,%f,%f" 提示信息:"Input a,b,c:"**输出格式要求:"area = %.2f\n"程序运行示例如下:Input a,b,c:3,4,5area = 6.00答案:#include#includeint main(void){float a, b, c, s, area;printf("Input a,b,c:");scanf("%f,%f,%f", &a, &b, &c);s = (a + b + c) / 2;area = sqrt(s*(s - a)*(s - b)*(s - c));printf("area = %.2f\n", area);return 0;}-----------------12.从键盘任意输入一个4位整数,编程计算并输出它的逆序数.例如:输入1234,分离出千位1、百位2、十位3和个位4,然后计算4*1000+3*100+2*10+1=4321,并输出4321。
**要求输入提示信息为:无**要求输入格式为: "%d"**要求输出格式为:"%d"程序运行示例如下:1234 此处为输入4321 此处为输出答案:#includeint main(void){int a, b, c, d,e;scanf("%d",&a);b = a/1000;c = a%1000/100;d = a%100/10;e = a%10;a = e*1000+d*100+c*10+b;printf("%d",a);return 0;}--------------23.有关输入输出问题。
一、选择题(可不抄题目)1.执行"int k=11;k=1/3*k++;"后,k的值是____A.0B.3C.4D.122.以下常量中正确的是___ ___A.'abc'B.'\x123'C.3.145E-1.2D."a"3.能将高级语言编写的源程序转换成目标程序的是______。
A. 编辑程序B. 编译程序C. 解释程序D. 链接程序4.设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是______。
A. 6.500000B. 6C. 5.500000D. 6.0000005. 正确的C语言用户自定义标识符是______。
A. ok?B. floatC. a3bD. random﹪26.以下程序的输出结果是void main( ){int a=12,b=12;printf("%d %d\n",--a,++b);}A.10 10B.12 12C.11 10D.11 13二、填空题(可不抄题目)1.若有"int a=5;a+=a-=-a*a;",则a的值是___2.表达式a=3*5,a*4,a+5的值是___________3. C程序开始往往含有以“#”开头的命令,它们是命令。
在程序中以“/*”开始, 以“*/”结束的内容, 它们是程序中的部分, 用以帮助阅读程序。
程序代码的录入,生成程序*.c,语法分析查错,翻译生成程序*.obj,与其它目标程序或库链接装配,生成程序*.exe。
4. 设int a; float f; double i ;则表达式10+'a'+i*f值的数据类型是___________。
三、程序题:1、编写一个程序,能显示出以下两行文字(用顺序结构完成)。
2、从键盘上输入三个小数,求出平均值,并输出这三个数和平均值,要求平均值保留2位小数位数。
项目2输入学生成绩转化为等级任务1输入学生成绩,判断其合法性★实践训练☆初级训练1 .若a=b=c=O,则++a&&++b&&++c后,a,b,c的值为多少(a=1,b=1,c=1)?分析:因为先执行++,再执行逻辑运算符,所以a=1,b=1,c=1.2 .若a=b=c=O,则a++&&++b&&++c后,a,b,c的值为多少(a=1,b=0,C=O)?分析:因为是a++,所以要先执行逻辑运算,而此时a=0,即为假,然后再执行a=a+1;同时由于对“&&”来说,左则为假,则不执行右侧。
所以,最后的结果是a=1,b=0,c=0o3 .若有整型变量叫必2,瓦(:,€1均为1,执行(m=a›b)&&(n;c>d)后,m,n的值为多少(m,n的值为0,1 )分析:因为a=b=c=d=m=n=1,所以a〉b是假,m=0,而对“&&”运算符来说,左侧为假,则不执行右侧,所以m,n的值为0,1。
4 .若t是整型变量,则执行t=T&&-1;t的值为多少(t的值为1 )?分析:因为C语言中,是以非。
代表“真”,所以T代表“真”,因则t的值为U5 .若a=b=c=1,则++a∣I++b&&++c后,a,b,c的值为多少(a=2,b=1,C=I )?分析:a=1,++a后a=2,是非零,对运符符来说,左侧为其,则不执行右侧,所以最后a=2,b=1,c=1。
6 .若a=b=c=1,则++a&&++b&&++c后,a,b,c的值为多少?分析:对“&&”来说,左侧为真,还是要执行右则,所以最后a=2,b=2,c=2°7 .以下程序的运行结果是(2 )。
8 .请阅读以下程序:该程序的运行结果是()。
9 .试编程:求一个数的绝对值。
教材练习题参考答案第一章1、#include <iostream.h>void main(){cout<<"**************************\n";cout<<" 江苏科技大学欢迎您! \n";cout<<"**************************\n";}2、(1)#include <iostream.h>void main(){int a=4,b=5,c=6,z;z=a+b>c&&b==c||++b>++a ;cout<<" 表达式的值为: "<<z<<endl;cout<<" a="<<a<<" b="<<b<<" c="<<c<<endl; }运行结果:表达式的值为: 1a= 5 b= 6 c=6(2)#include <iostream.h>void main(){int a=4,b=5,c=6,z;z= c-=a+=b*=10-a ;cout<<" 表达式的值为: "<<z<<endl;cout<<" a="<<a<<" b="<<b<<" c="<<c<<endl; }运行结果:表达式的值为: -28a= 34 b= 30 c=-28(3)#include <iostream.h>void main(){int a=4,b=5,c=6,z;z= a=b++ + --c + b >= c ;cout<<" 表达式的值为: "<<z<<endl;cout<<" a="<<a<<" b="<<b<<" c="<<c<<endl;运行结果:表达式的值为: 1a= 1 b= 6 c=5(4)#include <iostream.h>void main(){int a=4,b=5,c=6,z;z=( b=a+b, a=b-a, b=b-a , a+b+c ) ;cout<<" 表达式的值为: "<<z<<endl;cout<<" a="<<a<<" b="<<b<<" c="<<c<<endl; }运行结果:表达式的值为: 15a= 5 b= 4 c=63、#include <iostream.h>void main(){int a;cout<< " 输入一个数: "<<endl;cin>>a;cout<<a<<" 的十位数是: "<<a/10<<endl;cout<<a<<" 的个位数是: "<<a%10<<endl;}4、#include <iostream.h>void main(){int a,b,c,v,aver;cout<< " 输入三个数: "<<endl;cin>>a>>b>>c;v=a*a+b*b+c*c;aver=(a+b+c)/3;cout<<" 三个数的平方和是: "<<v<<endl;cout<<" 三个数的平均值是: "<<aver<<endl; }第二章1、#include <iostream.h>void main(){int a,b,c,t;cout<< " 输入三个数: "<<endl;cin>>a>>b>>c;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}cout<<a<<'\t'<<b<<'\t'<<c<<endl;}2、#include <iostream.h>void main(){float x,sum=0.0;int i=1;while(i<=10){cin>>x;sum=sum+x;i=i+1;}cout<<"平均值是: "<<sum/10<<endl; }3、#include <iostream.h>void main(){double y=0.0,t=1.0;int n;cin>>n;for(int i=1;i<=n;i++){ t=t*i;y=y+t;}cout<<" n= "<<n<<" y= "<<y<<endl; }4、#include <iostream.h>void main(){ int count=0;for(int n=200;n<1000;n++){for(int i=2;i<=n-1;i++)if(n%i==0) break;if(i>n-1){cout<<i<<'\t';count++;}}cout<<'\n'<<"count="<<count<<endl;}5、#include <iostream.h>void main(){ int a,n,sum=0,c=0;cout<< " 输入一个数: "<<endl;cin>>a;n=a;do{sum+=n%10;n/=10;c++;}while(n);cout<<a<<"的所有数字之和为:"<<sum<<endl;cout<<a<<" 是 "<<c<<" 位数" <<endl;}6、#include <iostream.h>void main(){ int a,b,i;for(i=1;i<=999;i++){a=i%10;b=i%100;if(i==a*a || i==b*b)cout<<i<<endl;}}7、#include <iostream.h>#include <math.h>void main(){ double a,b,n;for(n=10000;n<=99999;n++){a=n*10+6;b=6*100000+n;if(fabs(b-4*a)<1e-5) { cout<<a<<endl;break;}}}第三章//1. 一维数组的输入和输出#include<iostream.h>void main(){int a[10],k=1;for(int i=0;i<10;i++){cout<<"请输入第"<<k++<<"个元素a["<<i<<"]\t";cin>>a[i];}cout<<"数组a为:\n";for(i=0,k=0;i<10;i++){k++;cout<<a[i]<<'\t';if(k%5==0)cout<<'\n';}cout<<'\n';}//2. 通过指针输出一维数组中值为奇数元素#include<iostream.h>void main(){int a[10]={3,4,5,8,9,11,14,16,19,21},*p=a,k=0;cout<<"数组a中的奇数有:\n";for(int i=0;i<10;i++)if(p[i]%2){k++;cout<<*(p+i)<<'\t';if(k%5==0)cout<<'\n';}cout<<"\n";}//3. 产生一个随机的二维数组b[4][5],并按矩阵的方式输出#include<iostream.h>#include<stdlib.h>void main(){int b[4][5];cout<<"产生的数组为:\n";for(int i=0;i<4;i++){for(int j=0;j<5;j++){b[i][j]=rand();cout<<b[i][j]<<'\t';}cout<<'\n';}cout<<endl;}//4. 二维数组的平方赋值#include<iostream.h>void main(){int a[3][4]={3,1,5,2,4,1,7,5,3,6,9,8},b[3][4];cout<<"数组a为:\n";for(int i=0;i<3;i++){for(int j=0;j<4;j++){cout<<a[i][j]<<'\t';b[i][j]=a[i][j]*a[i][j];}cout<<endl;}cout<<endl;cout<<"数组b为:\n";for(i=0;i<3;i++){for(int j=0;j<4;j++)cout<<b[i][j]<<'\t';cout<<endl;}cout<<endl;}//5. 小写字母改写为大写字母#include<iostream.h>void main(){char str[100];cout<<"请输入一个含空格字符的字符串。