高级语言程序设计C
- 格式:doc
- 大小:55.50 KB
- 文档页数:10
高级语句程序设计(C++)经典试题一、单项选择题1、在一个C++程序中,main函数的位置()。
①必须在程序的开头②必须在程序的后面③可以在程序的任何地方④必须在其它函数中间2、一个C++程序的执行是从()。
A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束3、在计算机语言中,以下描述正确的是:A、高级语言较低级语言更远离对硬件的直接操作。
B、高级语言较低级语言更接近对硬件的直接操作。
C、C++是世界上第一种计算机高级语言。
D、C语言是由美国的微软公司研制成功的。
4、C++源程序的实现一般要经过三个步骤,其中不包括:A、编辑B、维护C、编译D、运行5、设i=1,j=2,则表达式i++ +j的值为()。
① 1 ② 2 ③ 3 ④6、设i=1,j=2,则表达式++i+j的值为()。
① 1 ② 2 ③ 3 ④7、执行下列语句后,x的值是()。
int x,y;x=y=1; ++x||++y;①不确定② 0 ③ 1 ④ 28、已知x=5,则执行语句x+=x-=x×x; 后,x的值为()。
① 25 ② 40 ③ -40 ④ 209、常量是在程序中:A、经常被使用的量。
B、最高级的量。
C、按固定周期使用的量。
D、按固定值使用的量。
10、有如下程序段:int a=14,b=15,x;char c=’A’;x=(a&&b)&&(c<’B’);执行该程序段后,x的值为()。
① ture ② false ③ 0 ④ 111、下面程序的输出结果是()。
#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5)a-=1;b+=1;elsea+=1;b-=1;cout<<”a=”<<a<<endl;cout<<”b”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④编译时出错12、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int a=6,b=6;if(a>5){a-=1;b+=1;}else{a+=1;b-=1;}cout<<”a=”<<a<<endl;cout<<”b=”<<b<<endl;return 0; }① 5 7 ② a=5 b=7 ③ a=5 b=6 ④ a=6 b=513、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(x++<6)cout<<++y<<endl;if(x>6)cout<< --y<<endl;elsecout<<y++<<endl;return 0;}① 8 ② 7 ③ 9 ④编译时出错14、下面程序的输出结果是()#include <iostream>using namespace std;int main( ){ int x=6,y=8;if(++x<6)cout<<++y<<endl;elsecout<<y++<<endl;if(x>6)cout<< --y<<endl;return 0; }① 8 8 ② 9 7 ③ 7 8 ④编译时出错15、下面程序的输出结果是()#include <iostream>using namespace std;f(int a){ int b=0;static int c=3;b++;c++;return (a+b+c);}int main( ){ int a=2,i;for(i=0;i<3;i++)cout<<f(a)<<endl;return 0;}① 7 8 9 ② 7 7 7 ③ 7 10 13 ④ 7 9 1116、下面程序的输出结果是()#include <iostream>using namespace std;void fun(int x,int y,int z){ z=x×x+y×y; }int main( ){ int z=68;fun(5,2,z);cout<<z;return 0; }① 0 ② 29 ③ 68 ④无定值17、下面程序的输出结果是()#include <iostream>using namespace std;int fun(int a,int b){ return (++a×b++); }int main( ){ int x=3,y=4,z=5,r;r=fun(fun(x,y),z);cout<<r<<x<<y<<endl;}① 85 3 4 ② 60 3 4 ③ 126 4 5 ④ 85 4 518、下面的程序中,当输入4、2时,其输出结果是()#include <iostream>using namespace std;long fib(int n){ if(n>2) return (fib(n-1)+fib(n-2));else return (n); }int main( ){ int i;cout<<”请输入一个整数:”;cin>>i; cout<<endl;cout<<fib(i)<<endl;return 0; }① 5 1 ② 4 2 ③ 5 2 ④ 6 219、下面程序的输出结果为()#include <iostream>using namespace std;unsigned func(unsigned num){ unsigned d=1,k;do {k=num%10;num/=10;}while(num);return (k); }int main( ){ unsigned n=26;cout<<func (n);return 0; }① 2 ② 4 ③ 6 ④ 520、下面程序的输出结果为()#include <iostream>using namespace std;func (int a,int b){ int c;c=a×b;return (c );}int main( ){int x=6,y=7,z=8,r;r=func((x--,y,x×y),z--);cout<<r;return 0; }① 294 ② 245 ③ 280 ④ 41621、执行语句int i=10,*p=&i;后,下面描述错误的是()。
1 文本的屏幕输出和键盘输入[问题的提出] 编制一个程序,将屏幕垂直平分成两个窗口,左边窗口为蓝色背景,白色前景,右边窗口为绿色背景,红色前景。
两个窗口都设计为文本输入,即在窗口中可以输入文字,在窗口屏幕中显示出来。
使用tab 键在左右两个窗口中切换,每个窗口都有光标,活动窗口光标进行闪烁。
[分析] 在这个问题中我们遇到了在初学C 时不曾接触到的新概念,如文本窗口、前景色、背景色,以及围绕它们要解决的新问题:(1)如何在屏幕中开文本输入的窗口?(2)如何设置窗口的前景色、背景色或闪烁等显示属性?(3)如何通过按键来控制窗口的切换?[解答] 要解决这一编程问题,要求有两方面的学习过程:一是对于分析中的前两个问题,要求大家了解有关文本的屏幕输出的知识;二是对于第3 个问题,要求对键盘的输入有所了解。
下面先就这两个方面的内容做一介绍。
1.1 文本的屏幕输出显示器的屏幕显示方式有两种:文本方式和图形方式。
文本方式就是显示文本的模式,它的显示单位是字符而不是图形方式下的象素,因而在屏幕上显示字符的位置坐标就用行和列表示。
Turbo C 的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、窗口文本的清除和输入输出等函数。
这些函数的有关信息(如宏定义等)均包含在conio.h 头文件中,因此在用户程序中使用这些函数时,必须用include 将conio.h 包含进程序。
1) 文本窗口的定义Turbo C 默认定义的文本窗口为整个屏幕,共有80 列25 行的文本单元。
如图3-1 所示,规定整个屏幕的左上角坐标为(1,1),右下角坐标为(80,25),并规定沿水平方向为X 2轴,方向朝右;沿垂直方向为Y 轴,方向朝下。
每个单元包括一个字符和一个属性,字符即ASCII 码字符,属性规定该字符的颜色和强度。
除了这种默认的80 列25 行的文本显示方式外,还可由用户通过函数:void textmode(int newmode);来显式地设置Turbo C 支持的5 种文本显示方式。
徐州 08 计、徐州 08 机、江苏 08 机、江阴 08 计、江阴 08 电、江阴 08 数、江阴 08 机、江技 08 数、江技 08 电、常州 08 电、常州 08 数、ZH 计0824、ZH 机0821《高级语言程序设计(C 语言)》复习一、选择题1、设 x、y、z 都是整型变量,x、y 的初值都是 5,执行 z=(++x)+(y- -)+1 后,x、y、z 三变量的值按顺序是( D )。
A.5, 5, 11 B.6, 6, 13 C.4, 6, 12 D.6, 4, 122、C 语言中运算对象必须是整型的运算符是( A )。
A、%B、/C、!D、**3、以十六进制形式输出整数的格式说明符是( D )。
A.%u B.%ld C.%x D.%o4、引用结构体变量中的一个成员的方法是( D )A、结构体变量名&成员名C、结构体变量名*成员名B、结构体变量名->成员名D、结构体变量名.成员名5、在 Turbo 2.0 中,若定义 char c;.则变量c 在内存中分配的字节数是(A )。
A.1个 B .2 个 C.4 个 D.8 个6、合法的 C 语言赋值语句是(D)。
A、a=b=58B、k=int(a+b)C、a=58,b=58D、+ + i7、设有变量定义: int x=1,y=0;则表达式 x-->(y+x)?5:3 的值是(A )A.3 B.5 C.0 D.18、C 语言规定:简单变量作实参时,它和对应形参之间的数据传递方式是(C)A、由用户指定传递方式B、地址传递C、单向值传递D、由实参传给形参,再由形参传回给实参9、以下转义符中的表示“退格”的符号是(B )。
A.\n B.\b C.\t D.\f10、下列运算符中优先级最高的运算符是( A )。
A、!B、%C、- =D、&&11、下列程序段的输出结果是(C)。
x=9;while(x>7){ printf("*");x--;}A.**** B.*** C.** D.*12、以下叙述不正确的是( D )A、一个 C 源程序可由一个或多个函数组成B、一个 C 源程序必须包含一个 main 函数C、C 程序的基本组成单位是函数D、在 C 程序中,main 函数可以被其他函数调用13、结束 while(表达式)循环的条件是(B )A.当表达式的值为 0 时 B.当表达式的值不为 0 时C.当表达式的值为 1 时 D.当表达式的值为非 1 时14、为表示关系:x≥y≥z,应使用的 C 语言表达式是(A)。
《高级语言程序设计(C)》期末考试试题一、选择题(本题共20道小题,共40分。
)1. 设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是A)把x和y按从大到小排列 B)把x和y按从小到大排列C)无确定结果 D)交换x和y中的值2. 下面程序的输出是void prtv(int *x){ printf("%d\n", ++(*x));}main(){ int a=25;prtv(&a);}A) 23 B) 24C) 25 D) 263. int x=10, y=20, z=30;if(x>y) z=x; x=y; y=z;以上语句执行后x, y, z的值是A) x=10,y=20,z=30B) x=20,y=30,z=30C) x=20,y=30,z=10D) x=20,y=30,z=204. 设有以下宏定义:#define N 3#define Y(n) ((N+1)*n)则执行语句:z=2 *(N+Y(5+1))后,z的值为A)出错 B)42 C)48 D)545. 逻辑运算符两侧运算对象的数据类型是()。
A) 只能是0或1B) 只能是0或非0正数C) 只能是整型或字符型数据D) 可以是任何类型的数据6. 当执行以下程序段时x=-1;do { x=x*x;}while(!x);A)循环体将执行一次 B)循环体将执行两次C)循环体将执行无限次 D)系统将提示有语法错误7. int x=3;do{ printf("%3d",x-=2);}while(!(--x));以上程序段的输出结果是A) 1 B) 3 0 C) 1-2 D) 死循环8. main(){int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); }以上程序段的输出结果是A)k=11,k=12,k=11 B)k=11,k=13,k=13C)k=11,k=013,k=0xb D)k=11,k=13,k=b9.以下程序的输出结果是()。
第一章基本数据及表达式> 1.1 概述本次练习有5题,你已做5题,已提交5题,其中答对5题。
当前页有5题,你已做5题,已提交5题,其中答对5题。
1. 一个最简单的C++程序,可以只有一个()。
(A)库函数(B)自定义函数(C)main函数(D)空函数答题: A. B. C. D. (已提交)参考答案:C问题解析:2. 函数名是(),用于识别和调用函数。
(A)关键字(B)标识符(C)常数(D)语句答题: A. B. C. D. (已提交)参考答案:B问题解析:3. 用C++语言编写的源程序要成为目标程序必须要经过()。
(A)解释(B)汇编(C)编辑(D)编译答题: A. B. C. D. (已提交)参考答案:D问题解析:4. C++程序中的简单语句必须以()结束。
(A)冒号(B)分号(C)空格(D)花括号答题: A. B. C. D. (已提交)参考答案:B问题解析:5. 程序中把表达式“a+0.5”写为“a*0.5”,是()错误。
(A)编译(B)连接(C)运行(D)逻辑答题: A. B. C. D. (已提交)参考答案:D问题解析:第一章基本数据及表达式 > 1.2 C++语言的字符集及词汇本次练习有5题,你已做5题,已提交5题,其中答对5题。
当前页有5题,你已做5题,已提交5题,其中答对5题。
答题: A. B. C. D. (已提交)参考答案:A问题解析:3. 在C++语句中,两个标识符之间()不能作为C++的分隔符。
(A)数字(B); (C): (D)+答题: A. B. C. D. (已提交)参考答案:A问题解析:4. 可以用于命名变量的标识符是()。
(A)3x (B)const (C)name_2 (D)答题: A. B. C. D. (已提交)参考答案:C问题解析:5. 说明变量a是整型变量的正确语句是()。
(A)int a; (B)inta; (C)Int a; (D)INTa;答题: A. B. C. D. (已提交)参考答案:A问题解析:第一章基本数据及表达式 > 1.3 C++语言的基本数据类型及存储形式本次练习有5题,你已做5题,已提交5题,其中答对5题。
学习中心/函授站_姓名学号西安电子科技大学网络与继续教育学院2019学年上学期《高级语言程序设计(C)》期末考试试题(综合大作业)考试说明:1、大作业试题于2019年4月25日公布,2019年4月26日至2019年5月12日在线上传大作业答卷(最多上传10张图片);2、考试必须独立完成,如发现抄袭、雷同均按零分计;3、答案须用《西安电子科技大学网络与继续教育学院综合大作业答题纸》手写完成,要求字迹工整、卷面干净。
一、选择题(本题共20道小题,共40分。
)1. 设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是A)把x和y按从大到小排列 B)把x和y按从小到大排列C)无确定结果 D)交换x和y中的值2. 下面程序的输出是void prtv(int *x){ printf("%d\n", ++(*x));}main(){ int a=25;prtv(&a);}A) 23 B) 24C) 25 D) 263. int x=10, y=20, z=30;if(x>y) z=x; x=y; y=z;以上语句执行后x, y, z的值是A) x=10,y=20,z=30B) x=20,y=30,z=30C) x=20,y=30,z=10D) x=20,y=30,z=204. 设有以下宏定义:#define N 3#define Y(n) ((N+1)*n)则执行语句:z=2 *(N+Y(5+1))后,z的值为A)出错 B)42 C)48 D)545. 逻辑运算符两侧运算对象的数据类型是()。
A) 只能是0或1B) 只能是0或非0正数C) 只能是整型或字符型数据D) 可以是任何类型的数据6. 当执行以下程序段时x=-1;do { x=x*x;}while(!x);A)循环体将执行一次 B)循环体将执行两次C)循环体将执行无限次 D)系统将提示有语法错误7. int x=3;do{ printf("%3d",x-=2);}while(!(--x));以上程序段的输出结果是A) 1 B) 3 0 C) 1-2 D) 死循环8. main(){int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } 以上程序段的输出结果是A)k=11,k=12,k=11 B)k=11,k=13,k=13C)k=11,k=013,k=0xb D)k=11,k=13,k=b9.以下程序的输出结果是()。
高级语言程序设计(C)模拟题四一、选择题(本题共20道小题,每题2分,共40分。
)1.以下有4组用户标识符,其中合法的一组是()。
A) For -sub Case B) 4d DO SizeC) f2_G3 IF abc D) WORD void define答案:C解析:标识符的命名规则:由字母、数字、下划线组成,第一个字符必须是字母或者下划线,标示符的命名不能同C语言的关键字相同。
2. 若有下面的程序片段:int a[12]={0}, *p[3], **pp, i;for(i=0; i<3; i++)p[i]=&a[i*4];pp=p;则对数组元素的错误引用是A) pp[0][1] B) a[10] C) p[3][1] D) *(*(p+2)+2) 答案:C解析:A. pp[0]表示p[0]的地址,而pp[0]也为一个指针,它和pp用法相同,故pp[0][1]则表示a[1]的地址,正确。
B.正确。
C.数组p的最大下标为2,错误。
D. *(*(p+2)+2)表示a[10],正确。
3. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为A) a<>0 B) !aC) a=0 D) a答案:D解析:对if(a)而言,如果a的值不为0,则if语句括号中表达式的值不为0,if为真,选D。
4. 若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;其中0≤i≤9, 则对a数组元素不正确的引用上A) a[p-a] B) *(&a[i]) C) p[i] D) a[10]答案:D解析:A. a[p-a]表示a[0],正确。
B. *(&a[i])表示a[i],正确。
C. p[i]表示&a[i],正确。
D. a数组最大下标为9,错误。
5. 以下程序的输出结果是int main( ){ int x=10,y=10,I;for(i=0;x>8;y=++i)printf("%d,%d ",x--,y);}A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1答案:D解析:第一遍循环: x=10,y=10,x>8,输出 10 10后,x=9,y=1.第二遍循环:x=9>8,输出 9 1 后x=8,y=2。
第三遍循环:x=8,不满足条件,循环结束,无输出。
6. 下面程序的输出是void prtv(int *x)printf("%d\n", ++*x);}int main(){ int a=25;prtv(&a);return 0;}A) 23 B) 24C) 25 D) 26答案:D解析:主函数传递给prtv函数的x值为25 ,在printf中,先对x自增,再输出x值为26。
7. 下面能正确进行字符串赋值操作的语句是A)char s[5]={"ABCDE"}; B)char s[5]={'A'、'B'、'C'、'D'、'E'};C) char *s;s="ABCDEF"; D)char *s; scanf("%s",s);答案:C解析:A. {}中的’“’也作为字符串中的一个字符,故右侧字符串长度为7>5,越界,错误。
B. 右侧字符的分割符应使用‘,’,而不是‘、’,错误。
C. 正确。
D. s是一个字符串常量,应在定义同时初始化且不能通过scanf函数或任何其他方式修改其值,错误。
8. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为x=y=z=1;t=++x||++y&&++z;A)不定值 B)2 C)1 D)0答案:C解析: ||和&&运算符的优先级高于赋值运算符=,所以t为一个逻辑值,其只能为0或1,又表达式++x||++y&&++z为真,故t=1。
9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是A)k=*p1+*p2;B)p2=k;C)p1=p2;D)k=*p1 *(*p2);答案:B解析:B中不能将一个整形变量的值赋给一个指针变量,应改为p=&k 或者*p=k。
10. 请读程序:#include<stdio.h>#define SUB(X,Y) (X)*Yint main(){int a=3, b=4;printf("%d", SUB(a++, b++));return 0;}上面程序的输出结果是A) 12 B) 15C) 16 D) 20答案:A解析:printf函数中输出的内容等价于(a++)*b++,由于自增运算符优先级高于*,所以又等价于(a++)*(b++),应先输出a*b,后进行自增运算。
11. sizeof(float)的结果是:A) 4B) 6C) 8D)不确定答案:D解析:sizeof操作符用来测定数据类型位长,但在不同的系统中,同一数据类型的位长并不一定相同,故不确定,选D。
12. 若执行下面的程序时从键盘上输入3和4,则输出是int main(){int a,b,s;scanf("%d %d",&a,&b);s=a;if(a<b)s=b;s=s*s;printf("%d\n",s);return 0;}A) 14 B) 16 C) 18 D) 20答案:B解析:scanf输入a=3,b=4,s=a=3,a<b,if条件成立,s=b=4,s=s*s=16,输出s=16,选B。
13. 以下程序的输出结果是# include <stdio.h>int main(){printf("%d\n",NULL);return 0;}A) 不确定的(因变量无定义) B)0 C)-1 D)1答案:B解析:NULL实际上为系统定义的一个符号常量,它的值就为0,所以输出0,选B。
14. 读程序:#include<stdio.h>f(char *s){char *p=s;while( *p!='\0') p++;return(p-s);}int main(){printf("%d\n",f("ABCDEF"));return 0;}上面程序的输出结果是A) 3 B) 6 C) 8 D) 0答案:B解析:’\0’为字符串结束标志,t函数的作用实际为统计参数字符串的长度并返回给主函数,所以输出结果为字符串长度6,选B。
15. 在下列叙述中,正确的一条是()。
A) 以下语句是正确的:char c[]=”ab”;B) 一维数组的定义可采用下列格式:int a(10);C) 下面的语句定义了一个二维数组:float a[3,4];D) 以下两个语句中的a[3][4]的含义相同:int a[3][4]; a[3][4]=1;答案:A解析:C语言数组可以在定义时用字符串赋初值,故答案为A。
其他项均不符合C语言关于数组的定义格式。
16. 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A) *p=&a; scanf("%ld",p);B) p=(long *)malloc(8); scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);答案:A解析:A中*p=&a;赋值语句错误,应改为p=&a;,才可以将p指针指向变量a,选A。
17. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是A) p+1 B) a+1 C) a++ D) ++p答案:C解析:a为常量指针,不能修改其值,故不能使用自增运算符,选C。
18. 下面程序的输出是int main(){enum team {my,your=4,his,her=his+10};printf("%d %d %d %d\n",my,your,his,her);return 0;}A) 0 1 2 3 B) 0 4 0 10 C) 0 4 5 15 D) 1 4 5 15答案:C解析:枚举元素my没有赋初值系统自动赋值为0,同理,枚举元素his没有赋初值,根据枚举元素赋值规则,系统将his的值赋为它前面的your的值+1,选C。
19. 以下程序输出结果是int main( ){int m=5;if(m++>5)printf("%d\n",m);else printf("%d\n",m--);return 0;}A)7 B)6 C)5 D)4答案:B解析:主函数第二行中if条件先判断m>5不成立,然后有m=m++=6,再执行else语句,其中,先输出m=6,再使m自减为5,选B。
20. 以下程序运行后,输出结果是 int d=1;fun(int p){int d=5;d+=p++;printf("%d",d);}int main(){int a=3;fun(a);d+=a++;printf("%d\n",d);return 0;}A)84 B)99 C)95 D)44答案:A解析:主函数调用fun的同时,将实参a的值3传递给形参p,fun函数中,p=3,d+=p++;语句可以拆分为 d=d+p;p++;所以d=8,输出8。
子函数调用结束回到主函数中,fun 函数中对形参p的值的修改不能改变实参a的值仍为3,d=d+a=4,输出4,选A。
二、填空题(本大题共7小题,每题2分,共14分。
)1. 在C语言中,一个函数的函数体一般包括_______和_______。
答案:声明部分执行部分解析:函数结构构成规则。
在C语言中,一个函数的函数体一般包括声明部分和执行部分。
2. 在C语言中,不同级运算符之间运算次序存在_________的区别,同级运算符之间运算次序存在________的规则。
答案:先后结合性解析:不同级的运算符由优先级规定运算次序;同级的运算符的运算顺序由结合性决定。
3. 欲将字符串S1复制到字符串S2中,其语句是 ____________ 。