2011年1月高级语言程序设计(一)真题及参考答案
- 格式:doc
- 大小:186.50 KB
- 文档页数:5
第七章 (1)7.1 编写一个应用程序,绘制一个五角星。
(1)7.2 用Graphics2D绘制一条抛物线,设抛物线方程的系数从图形界面输入。
(3)7.3 利用Graphics2D的平移,缩放,旋转功能。
绘制一个六角星。
(7)7.4 编写画图程序。
(10)7.5 输入二次曲线的系数,画出二次曲线 (17)7.6. 写音乐播放器,只能播放wav,mid格式的。
(24)第七章7.1 编写一个应用程序,绘制一个五角星。
程序运行结果:源文件:Work7_1.javaimport java.awt.*;import javax.swing.*;/***7.1画一个五角星<BR>*@author黎明你好*/public class Work7_1{public static void main(String args[]){JFrame win = new JFrame("第七章,第一题");win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);win.setBounds(50, 50, 210, 250);win.add(new FiveStarCanvas(100), BorderLayout.CENTER);win.setVisible(true);win.validate();}}画板类源文件: FiveStarCanvas.java/***画板类,在上面画出五角星*@author黎明你好*/class FiveStarCanvas extends Canvas{private static final long serialVersionUID = 1L;/**五角星外接圆的半径*/private int radius;/***构造方法*@param r-初始化外接圆半径*/public FiveStarCanvas(int r){this.radius = r;}public void paint(Graphics g){int ax = radius; int ay = 0;int bx = (int) (radius * (1 - Math.cos((18 * Math.PI) / 180)));int cx = (int) (radius * (1 + Math.cos((18 * Math.PI) / 180)));int dx = (int) (radius * (1 - Math.cos((54 * Math.PI) / 180)));int ex = (int) (radius * (1 + Math.cos((54 * Math.PI) / 180)));int by = (int) (radius * (1 - Math.sin((18 * Math.PI) / 180)));int cy = (int) (radius * (1 - Math.sin((18 * Math.PI) / 180)));int dy = (int) (radius * (1 + Math.sin((54 * Math.PI) / 180)));int ey = (int) (radius * (1 + Math.sin((54 * Math.PI) / 180)));g.setColor(Color.RED);g.drawLine(dx, dy, ax, ay);g.drawLine(ax, ay, ex, ey);g.drawLine(ex, ey, bx, by);g.drawLine(bx, by, cx, cy);g.drawLine(cx, cy, dx, dy);g.setColor(Color.BLUE);g.drawOval(0, 0, 2 * radius, 2 * radius);g.drawLine(radius, radius, ax, ay);g.drawLine(radius, radius, bx, by);g.drawLine(radius, radius, cx, cy);g.drawLine(radius, radius, dx, dy);g.drawLine(radius, radius, ex, ey);}}7.2 用Graphics2D绘制一条抛物线,设抛物线方程的系数从图形界面输入。
高级语言程序设计真题2011年下半年(总分:100.00,做题时间:90分钟)一、单项选择题(总题数:15,分数:30.00)1.自定义标识符由字母、数字或下划线组成,且第一个字符必须是( )A.数字 B.字母或数字C.数字或下划线 D.字母或下划线(分数:2.00)A.B.C.D. √解析:[解析] 标识符是用户自定义的字符序列,通常用来表示程序中各种语法成分的名称。
C语言规定,标识符是由字母或下划线开头的字母、数字、下划线组成的字符序列。
2.运算符优先级符合由高到低排列的一组是( )A.+、!=、&&、= B.&&、!=、+、=C.!=、+、=、&& D.&&、=、!=、+(分数:2.00)A. √B.C.D.解析:[解析] 运算符的优先级由高到低为:算术运算符、关系运算府、双目逻辑运算符、赋值运算符,故本题选A。
3.转义字符中正确的是( )A.'/' B.'/xyz'C.'//' D.'/820'(分数:2.00)A.B.C. √D.解析:[解析] 转义字符由“反斜杠字符/”开始后跟单个字符或若干个字符组成。
选项C中的'//'表示反斜杠,其他三项均不正确,故本题选C。
4.下列程序段执行后x、y和z的值分别是( )int x=10,y=20,z=30;if(x>y)z=x;x=y;y=z;A.10,20,30 B.20,30,30C.20,30,10 D.20,30,20(分数:2.00)A.B. √C.D.解析:[解析] 题干中,条件表达式“x>y”的值为假,所以不执行语句“z=x;”,而按顺序执行语句“x=y;y=z;”,即x=20,y=39,z=30,故本题选B。
5.下列程序段执行后的输出结果是( )int k=4,a=3,b=2,c=1;printf("%d/n",k<a?k:c<b?c:a);A.1 B.2C.3 D.4(分数:2.00)A. √B.C.D.解析:[解析] 用条件运算符构成的表达式称为条件表达式,格式为:表达式?表达式2:表达式3。
2011高级语言程序设计试卷1及答案一、选择题:(共20题,每题1.5分,共30分)1. C语言属于( A )A.高级语言 B. 低级语言C.中级语言 D. 机器语言2. 下列全部属于合法的用户标识符的是( A )A.A1 P_0 dS B. float 2la _A C. *a hy kk D. _123 temp main 3. C语言中运算对象必须是整型的运算符为( A )A.% B. / C.= D. <=4. 设有int i; char c; float f; 以下结果为整数的表达式是( B )A.i+f B. i/c C.c+f D. i+c+f5. 逗号表达式(a=5*3, a+20),a+15的值是( B )A.35 B. 30 C.40 D. 206. 设有语句char a = '\72'; 则变量a( A )A.包含一个字符 B. 包含两个字符C.包含3个字符 D. 说明不合法7. 若有以下定义和语句,则输出结果是( B )char c1='b',c2='e';printf("%d,%c\n",c2-c1,c2-'a'+'A');A.2,M B. 3,E C.2,E D. 不确定8. 设有如下程序段,则下面说法中正确的是( C )int k=10;while(k=0)k=k-1;A.while循环执行10次 B. 循环是无限循环C.循环体语句一次也不执行 D. 循环体语句执行一次9. 当pi=3.1415926时,printf(" %-7.2f",pi);的输出结果是( C )(注:□代表空格)A.3.14159 B. 3.14 C.3.14□□□ D. □□□3.1410. 下列运算符中,优先级最高的是( D )A.! B. + C.|| D. ( )11. 表达式a==b&&b==c计算的优先级别是( C )A.((a==b)&&b)==c) B. (a==(b&&b))==c C.(a==b)&&(b==c) D. a==((b&&b)==c 12. 已知x=45, ch=?B?,y=0;则表达式(x>=y && chA.0 B. 语法错C.1 D. “假”13. 下列关于switch语句和break语句的结论中,正确的是( B )A.break语句是switch语句的一部分B.在switch语句中可以根据需要使用或不使用break语句C.在switch语句中必须使用break语句D.break语句不能在switch语句中使用14. 若变量c为char类型,能正确判断出c为小写字母的表达式是( D )A.'a'<=c<= 'z' B. (c>= 'a')||(c<= 'z') C.('a'<=c)and ('z'>=c) D. (c>= 'a')&&(c<= 'z') 15. 执行语句for ( i=0; i++<3; ); 后,变量i 的值为( C )A.2 B. 3 C.4 D. 516. 已知:int a[10]; 则对a数组元素的正确引用是( D )A.a[10] B. a[3.5] C.a(5) D. a[0-9]17. 对字符数组str赋初值,str不能作为字符串使用的一个是( D )A.char str[]="shanghai"; B. char str[]={"shanghai"};C.char str[9]={'s','h','a','n','g','h','a','i'}; D. char str[8]={ 's','h','a','n','g','h','a','i'};18. 以下对C语言函数的有关描述中,正确的是( A )A.在C语言中,调用函数时,根据实参传递给形参值的不同,通常有值传递方式和地址传递方式两种。
2011 年 1 月高等教育自学考试全国统一命题考试C++ 程序设计试题 课程代码: 04737一、单项选择题 (本大题共 20小题,每小题 1分,共 20分) 在每小题列出的四个备选项中只有一个是符合题目要求的, 号内。
错选、多选或未选均无分。
1. 在哪种派生方式中,派生类可以访问基类中的 protected 成员 ( ) A.public 和 privateB.public 和 protectedC.protected 和 privateD. 仅 protected2. 对C++语言和C 语言的兼容性,描述正确的是 ()A.C++兼容C B.C++部分兼容C.C++不兼容 CD.C 兼容 C++ 3. 在C++中使用流进行输入输出,其中用于屏幕输出的对象是A. cerrB.cinC.coutD.cfile4. 对使用关键字new 所开辟的动态存储空间,释放时必须使用 A. free B.create C.deleteD.realse5. 如没有使用 private 关键字定义类的数据成员,则默认为 A.private B.publicC.protectedD.friend6. 使用值传递方式将实参传给形参,下列说法正确的是 ( A.形参是实参的备份 B.实参是形参的备份 C. 形参和实参是同一对象 D. 形参和实参无联系7. 在函数调用时,如某一默认参数要指明一个特定值,则有 ()A. 其之前所有参数都必须赋值B. 其之后所有参数都必须赋值C.其前、后所有参数都必须赋值D.其前、后所有参数都不必赋值8. 设存在函数 int max(int , int) 返回两参数中较大值,若求 22, 59, 70 三者中最大值, 下列表达式不正确的是 ( )A.int m=max(22 , max(59, 70)) ;C.int m=max(22 , 59, 70);9. 下列哪个类型函数不适合声明为内联函数 A. 函数体语句较多C.函数执行时间较短 10.int Func(int , int) ;不可与下列哪个函数构成重载 A.int Func(int , int , int) ; C.double Func(double , double) ; 11. 对类中声明的变量,下列描述中正确的是 A. 属于全局变量 B. 只属于该类C. 属于该类,某些情况下也可被该类不同实例所共享请将其代码填写在题后的括B.int m=max(max(22 ,59),70) ; D.int m=max(59 , max(22, 70)) ; ( ) B.函数体语句较少 D. 函数执行时间过长( ), int) ; , double) ;B.doub le Func(in tD.任何情况下都可被该类所有实例共享12. 类的私有成员可在何处访问 ( )A. 通过子类的对象访问B. 本类及子类的成员函数中C.通过该类对象访问D.本类的成员函数中13. 如果没有为一个类定义任何构造函数的情况下,下列描述正确的是 ( )A. 编译器总是自动创建一个不带参数的构造函数B. 这个类没有构造函数C. 这个类不需要构造函数D. 该类不能通过编译14. 一个类可包含析构函数的个数是 ( )A.0 个B.1 个C. 至少一个D.0 个或多个15.this 指针存在的目的是 ( ) A.保证基类公有成员在子类中可以被访问B. 保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C. 保证基类保护成员在子类中可以被访问D.保证基类私有成员在子类中可以被访问16. 下列关于类的权限的描述错误的是 ( )A. 类本身的成员函数只能访问自身的私有成员B. 类的对象只能访问该类的公有成员C. 普通函数不能直接访问类的公有成员,必须通过对象访问 D •—个类可以将另一个类的对象作为成员请在每小题的空格中填上正确答案。
华中农业大学本科课程考试参考答案与评分标准考试课程:C++语言程序设计 学年学期:2010-2011-1 试卷类型: A 卷 考试时间:2011-1一、单项选择题(从下列各题四个备选答案中选出一个正确答案,并将其字母代号写在下面的表格中。
答案错选或未选者,该题不得分。
每题1分,共20二、填空题(将答案写在该题横线上。
每空1分,共10分。
)1. 4 2. % 3. 04. 离它最近的、没有匹配的if 语句 5. a<b || a<c 6. 107. ; 或分号 8. 25 9. -1610. if(strcmp(s1,s2)>0)三、判断下面说法是否正确(正确者在【 】内填T ,错误者在【 】内填F ,每题1分,共15分)1-5 FFFFT 6-10 TFTFT 11-15 TTTTF四、写出下面各程序的运行结果(阅读程序,分析程序的运行结果。
每题5分,共20分)1. AAAABBBB2. 0 AAABBB 2 AABB AB3. a=15,b=74. 0 a=15,b=15 10 70五、程序填空(根据题目说明阅读程序,请将最合适的语句填入空白处,使其成为一个完整、正确的程序。
(每空2分,共18分)………………………………… 装 ……………………………… 订 ……………………………… 线 …………………………………1 .① 1.0/(i*i) ②sqrt(6*s)2. ① invert(i) ② a%10 ③ s ④ a%i3.① cin>>a[i] ② (i+1)%4==0或i%4==3③cout<<endl 或 cout<<"\n" 或 cout<<'\n'六、编程题(按照题目的要求编写程序。
第1题7分,第2题10分,共17分)1. #include<iostream.h>void main(void){int i,j;float sum=0; (1分)for(i=2,j=4;i<=66;i=i+2,j=j+3) (4分)sum=sum+(float)i/j; (2分)cout<<sum;}其他分值根据代码设计情况酌情给分。
2010年1月高级语言程序设计(一)试题一、单项选择题(本大题共15小题,每小题2分,共30分)1. 下列不属于保留字的是( D )A. defaultB. RegisterC. structD. unsign2. 下列不能作为常量的是( A )A. 0582B. 0xa5C. ‟\n‟D. 2.5e-23. 设typedef long class;,则class是( C )A. 整型变量B. 长整型变量C. 长整型数据类型的新标识符D. 新的而非长整型数据类型的标识符4. 设char c=‟A‟;int i=1, j;,执行j=!c&&i++;后,i和j的值分别是( A )A. 1和0B. 1和1C. 2和0D. 2和l5. 设int a;,执行表达式(a=1,2,3),a+1后,a和表达式的值分别是( A )A. 1和2B. 2和3C. 3和4D. 4和56. 下列关于函数定义正确的是( D )A. fun(int x,y){int z;return z;}B. void fun(int x,int y){return x+y;}C. fun(x,y){int x,y;double z;z=x+y;return z;}D. double fun(int x,int y) {double z;z=x+y;return z;)7. 下列用户自定义标识符正确的是( B )A. 4aB. b_1C. -&D. *p8. 下列程序段中循环体执行的次数是( B )int x=-1; Do { x=x*x; }while(! x);A. 0B. 1C. 2D. 无限9. 实现字符串连接的系统函数名是( A )A. strcatB. strcmpC. strcpyD. strlen10. 若实参是一个数组名,在调用函数时,实参向形参传递的是( B )A. 数组的长度B. 数组的首地址C. 数组每个元素的值D. 数组每个元素的地址11. 设int a[ ][4]={l,2,3,4,5,6,7};,则a[1][3]的值是( A )A. 0B. 3C. 4D. 712. 若定义一个只限本源文件使用的全局变量,则该变量的存储类别是( C )A. externB. registerC. staticD. auto13. 设chark=‟a‟;float j=2.0;,执行k+=5/j;printf(“%c”,k);后,输出结果是( C )A. aB. bC. cD. d14. 下列程序段正确的是( D )A. char s[ ]={…xyz‟};scanf(……%s”,s);B. float *p,i; p=*p+i;C. char s[5]=…word‟;puts(s);D. int a[5]={0},*p=a; *p=*(p+1);15. 关于编译预处理命令,叙述正确的是( A )A. 预处理命令都以”#”开头 D. 每个程序必须在开头使用预处理命令#include<stdio. h>B. 预处理命令必须位于程序的首部C. 预处理命令只能实现宏定义和条件编译的功能二、填空题(本大题共10小题,每小题2分,共20分)16. 设float a,b,c;,若a、b和c分别为三角形的三条边长,它们”能构成等边三角形”的逻辑表达式是a+b>c && a+c>b && b+c>a 。
一、选择题:(共20题,每题1.5分,共30分)1 A2 A3 A4 B5 B6 A7 B8 C9 C 10 D11 C 12 C 13 B 14 D 15 C16 D 17 D 18 A 19 D 20 A1. C语言属于( A )A.高级语言 B. 低级语言C.中级语言 D. 机器语言2. 下列全部属于合法的用户标识符的是( A )A.A1 P_0 dS B. float 2la _A C. *a hy kk D. _123 temp main3. C语言中运算对象必须是整型的运算符为( A )A.% B. / C.= D. <=4. 设有int i; char c; float f; 以下结果为整数的表达式是( B )A.i+f B. i/c C.c+f D. i+c+f5. 逗号表达式(a=5*3, a+20),a+15的值是( B )A.35 B. 30 C.40 D. 206. 设有语句char a = '\72'; 则变量a( A )A.包含一个字符 B. 包含两个字符C.包含3个字符 D. 说明不合法7. 若有以下定义和语句,则输出结果是( B )char c1='b',c2='e';printf("%d,%c\n",c2-c1,c2-'a'+'A');A.2,M B. 3,E C.2,E D. 不确定8. 设有如下程序段,则下面说法中正确的是( C )int k=10;while(k=0)k=k-1;A.while循环执行10次 B. 循环是无限循环C.循环体语句一次也不执行 D. 循环体语句执行一次9. 当pi=3.1415926时,printf(" %-7.2f",pi);的输出结果是( C )(注:□代表空格)A.3.14159 B. 3.14 C.3.14□□□ D. □□□3.1410. 下列运算符中,优先级最高的是( D )A.! B. + C.|| D. ( )11. 表达式a==b&&b==c计算的优先级别是( C )A.((a==b)&&b)==c) B. (a==(b&&b))==c C.(a==b)&&(b==c) D. a==((b&&b)==c12. 已知x=45, ch=‟B‟,y=0;则表达式(x>=y && ch<‟b‟ && ! y)的值是( C )A.0 B. 语法错C.1 D. “假”13. 下列关于switch语句和break语句的结论中,正确的是( B )A.break语句是switch语句的一部分B.在switch语句中可以根据需要使用或不使用break语句C.在switch语句中必须使用break语句D.break语句不能在switch语句中使用14. 若变量c为char类型,能正确判断出c为小写字母的表达式是( D )A.'a'<=c<= 'z' B. (c>= 'a')||(c<= 'z') C.('a'<=c)and ('z'>=c) D. (c>= 'a')&&(c<= 'z')15. 执行语句for ( i=0; i++<3; ); 后,变量i的值为( C )A.2 B. 3 C.4 D. 516. 已知:int a[10]; 则对a数组元素的正确引用是( D )A.a[10] B. a[3.5] C.a(5) D. a[9-9]17. 对字符数组str赋初值,str不能作为字符串使用的一个是( D )A.char str[]="shanghai"; B. char str[]={"shanghai"};C.char str[9]={'s','h','a','n','g','h','a','i'}; D. char str[8]={ 's','h','a','n','g','h','a','i'};18. 以下对C语言函数的有关描述中,正确的是( A )A.在C语言中,调用函数时,根据实参传递给形参值的不同,通常有值传递方式和地址传递方式两种。
2011-2012学年第1学期2011级《高级语言程序设计》考试试题(A卷)考试时间:2012年01月班级学号姓名✧请将答案写在答题纸上,写清题号,不必抄题,字迹工整、清晰;✧请在答题纸和试题纸上都写上你的班级、学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来;✧每个题目必须添加必要的注释,程序命名和书写尽可能规范。
一、[20分] 编写函数,判定正整数m和n(均至少为2)是否满足:数m为数n可分解的最小质因数(数n可分解的最小质因数为能整除n的最小质数)。
//提示:判定m为质数且m是n的最小因数。
二、[20分] 编写函数,对给定的整型数组a的前n个元素排序,使得所有正整数均出现在负整数和0之前。
//提示:排序结果中,正整数之间的出现顺序不限制,负整数和0之间的出现顺序不限制。
例如:原数组为-1、4、-3、0、2、1、-9、7,则排序后可以为4、2、1、7、0、-1、-3、-9。
三、[20分] 编写递归函数,实现按照如下公式计算的功能。
//提示:如果独立编写阶乘运算函数,可以不考虑存储溢出,默认结果类型为整型。
f(n)=0/(1*2!)+1/(2*3!)+2/(3*4!)+3/(4*5!)+…+n/((n+1)*(n+2)!),其中:n为自然数。
四、[20分] 定义一个表示学生的结构体(包含3个字段:姓名、性别、成绩),编写函数,将下图所示的结构体数组s中的前n个学生的信息,存储到当前目录下的output.txt文件中。
//图1 管理学生信息的结构体数组例如:一个学生的信息为ZhangSan、true、83,另一个学生的信息为LiSi、false、76。
五、[20分] 定义一个单链表(每个结点包含2个字段:整数信息、后继指针),如下图所示。
编…图2 单链表例如:若单链表中存储的整数信息依次为1、5、5、0、5、6、0、0、5、1,如果x为5,则得到的单链表中相应信息依次为1、0、6、0、0、1。
第三章顺序结构3.30 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
※程序如下※main( ){int hour,minute;hour=560/60;minute=560%60;printf("hour=%d,minute=%d",hour,minute);}3.31 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。
※程序如下※#include<stdio.h>main( ){int num1,num2,i,j; /* 定义变量 i-商,j-余数 */printf("input num1 and num2:\n");scanf("%d%d",&num1,&num2);i=n}3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
※程序如下※main( ){double a,b,c,average=0;printf("input a,b,c(double):\n");scanf("%lf%lf%lf",&a,&b,&c);average=(a+b+c)/3;average=average*10;average=average+0.5;average=(int)average;average=average/10;printf("average=%lf",average);}3.33 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。
※程序如下※main( ){int a,b,c,t=0;printf("input a b c:\n");scanf("%d%d%d",&a,&b,&c);t=c;c=b;b=a;a=t;printf("a=%d b=%d c=%d",a,b,c);}第四章选择结构4.21 当a>0时,请将以下语句改写成switch语句。
…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………装订线………………装订线内不要答题,不要填写信息………………装订线…………武汉理工大学考试试题答案(A卷)2011 ~2012 学年1 学期高级语言程序设计课程二、填空题(本大题共 5 小题,每空1分,共10 分)1.;(或分号)}2.全局变量03.inline void4. break continue5. 说明运算三、判断题(本大题共 5 小题,每小题2分,共10 分)1.(√)2.(x)3.(x)4.(√)5.(√)四、程序阅读题(本大题共 4 小题,每小题5分,共20 分)1.6 4 5 2.s=243.sum=24 4.25 20五、程序填空题(本大题共2小题,每空2分,共10 分)1.(1)a (2)*(p+i) (或p[i])(3)sum/n2.(1)n<100 (2)break六、程序编写题(本大题共 3 小题,每小题10 分,共30 分)1.#include <iostream>using namespace std;int main() {int i,n=0,s=0,x;for(i=1;i<=35;i++) {cin>>x;if(x>=60) n++;s=s+x;}cout<<"Average is "<<s/35<<endl;cout<<"Passed is "<<n<<endl;return 0;}2.double fact (int n) // 非递归函数{int i;double p=1.0;for(i=1;i<=n;i++)p=p*i;return p;}double fact(int n) // 递归函数{if (n==1)return 1;elsereturn n*fact2(n-1);}3.float fun(Student *head){Student *p;int n;float sum=0.0;p=head;n=0;while (p!=NULL){ n++;sum=sum+p->score;p=p->next;}return sum/n;}。
1.输人3个整数,按从大到小的次序输出.void main(){int a,b,c,*pa=&a,*pb=&b,*pc=&c,*p;scanf("%d,%d,%d",pa,pb,pc);if (*pa<*pb)p=pa,pa=pb,pb=p;if (*pa<*pc)p=pa,pa=pc,pc=p;if (*pb<*pc)p=pb,pb=pc,pc=p;printf("%d,%d,%d",*pa,*pb,*pc);}2.编一个程序,输入15个整数存入一维数组,再按逆序重新存放后再输出.void main(){int a[15],x,i,*pb,*pc;pb=a;for (i=0;i<15;i++)scanf("%d",pb++);for (i=1,pb=a,pc=a+14;i<=7;i++,pb++,pc--)x=*pb,*pb=&pc,*pc=x;for (pb=a;pa<a+15;pb++)printf("%d ",*pb);}3.输入一个字符串存入一个字符数组,按相反的次序输出其中的全部字符.void main(){char a[100],x,*pb,*pc;int n,i;scanf("%d",&n);pb=a;for (i=0;i<n;i++)scanf("%c",pb++);for (i=1,pb=a,pc=a+n-1;i<=n/2;i++,pb++,pc--)x=*pb,*pb=*pc,*pc=x;for (pb=a;pb<a+n;pb++)printf("%c",*pb);}4.输入10个整数存入一维数组,将其中最大数和最后一个数交换,最小数和第一个数交换. void main(){int a[10],x,*pb,*pc,*max,*min;for (pb=a;pb<a+10;pb++)scanf("%d",pb);max=a;min=a;{for (pb=a+1;pb<a+10;pb++)if (*max<*pb)max=pb;pb=a;x=*max,*max=*pb,*pb=x;}{for (pc=a+9;pc>=a;pc--)if (*min>*pc)min=pc;pc=a+9;x=*min,*min=*pc,*pc=x;}for (pb=a;pb<a+10;pb++)printf("%d ",*pb);}5.输入10个实数存入一维数组,输出其中的最大值、最小值和平均值。
一、单选题1、程序设计语言包括( )A.机器语言B.机器语言、汇编语言、高级语言C.高级语言D.汇编语言正确答案:B2、用C语言编写的程序( )A.以上说法都不对B.可直接被计算机硬件执行C.经过编译方式翻译成其机器指令,并链接后可以执行D.经过解释方式翻译成其机器指令后可以执行正确答案:C3、程序设计的基本步骤主要包括( )A.确定程序实现算法、编写程序以及程序测试B.确定程序设计方法,描述数据方式、编写程序以及程序调试C.确定数据结构,算法描述、编写程序以及程序测试D.数据描述,算法描述、编写程序正确答案:C4、一个C语言程序如何执行()A.从主程序开始执行B.子程序开始执行C.主函数main()开始执行D.主过程开始执行正确答案:C5、以下叙述中错误的是( )A.一个C程序只能有一个主函数B.C程序在书写时,有严格的缩进要求,否则不能编译通过C.C程序的主函数必须用main作为函数名D.一个C程序中可以包含多个不同名的函数正确答案:B6、下列叙述中错误的是( )A.后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件B.C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C.计算机不能直接执行用C语言编写的源程序D.后缀为.obj和.exe的二进制文件都可以直接运行正确答案:D7、C语言源程序中如何实现注释A. 一行中#开始的剩余部分为注释内容。
例如int a=10;#测试B. 一行中@开始的剩余部分为注释内容。
例如int a=10;@测试C. 一行中\\开始的剩余部分为注释内容。
例如int a=10;\\测试D.通过/* */ 界定的内容为注释内容。
例如/* 测试*/正确答案:D8、C语言程序中主函数的名称是A.mainB.MAINC.MainD.WinMain正确答案:A9、如下属于C语言的基本语句的是?A.x=sin(100)B.#include <stdio.h>C.1+2;D.x=1+2正确答案:C10、C语言中界定函数开始与结束的符号是A.< >B.( )C.[ ]D.{ }正确答案:D11、不合法的c语言标识符是()A.MDB.x.cC.IntD._abc正确答案:B12、关于C语言中数的表示,以下叙述中正确的是()A.只有实型数在允许范围内能精确无误的表示,整型数会有误差B.只有整型数在允许范围内能准确无误的表示,实型数会有误差C.只要在允许范围内整型数和实型数都能精确的表示D.只有用八进制表示的数才不会有误差正确答案:B13、已知char a=’\17’,变量a中()A.存储3个字符B.存储1个字符C.错误的变量声明与初始化D.存储2个字符正确答案:B14、有定义:int a; long b; double x,y; 则以下选项中正确的表达式是( )A.y=x+y=xB.a=x/10=y;C.a%(int)(x-y)D.(a*y)%b正确答案:C15、设有定义:int x=2;,以下表达式中,值不为6的是A.x++,2*xB.x*=(1+x)C.2*x, x+=2D.x*=x+1正确答案:C16、若有int n=6;表达式n%=n+=n-=n*n的值为()A.0B.10C.12D.6正确答案:A17、sizeof(float)是()A.一个整型表达式B.一个函数调用C.一个不合法的表达式D.一个双精度型表达式正确答案:A18、判断char型变量c1是否为大写字母的正确表达式是()A.'A'<=c1<='Z'B.('A'<=c1)AND('Z'>=c1)C.(c1>='A')&(c1<='Z')D.(c1>='A')&&(c1<='Z')正确答案:D19、正确表达式数学不等式10<x<100的C语言表达式是?(假设x 已经声明)()A.10<x and x<100B.10<x && x<100C.10<x<100D.10>x>100正确答案:B20、关于如下语句的输出结果为const int a=100;a=a+100;printf("%d",a);A.300B.200C.100D.程序存在错误无法运行正确答案:D21、有以下程序void main(){int a=6,b=7;printf("a=%%d,b=%%d",a,b);}输出结果是()。
2011年1月高级语言程序设计(一)试题一、单项选择题(本大题共15小题,每小题2分,共30分)1.下列运算符的操作数必须是整型的是(C )A./B.!C.%D.=2.可用于C语言用户标识符的是( D )A.void,defineB.2c,DOC.For,-abcD.as_b3,_1233.函数调用语句fun(fun(a,a+b,a+c),(a,b,c),5);中函数fun的参数个数是( A )A.3B.4C.5D.64.设int a=0,b=1;,下列语句错误..的是( D )A.a=b=10;B.a++;C.b+=a;D.(a+b)++;5.能正确表达数学关系式0≤x<20的C语言表达式是( C )A.0<=x<20B.x>=0||x<20C.x>=0&&x<20D.!(x<=0)&&x<206.正确的C语言字符常量是( A )A.'\\'B. '65'C.“A”D. '/n'7.设char s[ ]=“1234567”;,执行printf(“%d,%d\n”,strlen(s),sizeof(s));后的输出结果是( B )A.7,7B.7,8C.8,7D.8,88.设int a[ ]={12,34,56,78},*p=a;,下列表达式的值为56的是( B )A.p[1+2]B.*(a+2)C.a[3]D.*(p+3)9.对二维数组正确定义并初始化的是( A )A.int a[ ][3]={1,2,3,4,5,6};B.int a[3][3]=(1,2,3,4,5,6);C.int a[3][ ]={{l,2,3},{4,5,6}};D.int a[3][3]={a,b,c,d,e,f,g};10.设double x=5.168;,执行printf(“%5.3f\n”,(int)(x*10+0.5)/10.0);后的输出结果是( C )A.5.218B.5.210C.5.200D.5.16811.关于函数,下列叙述正确的是( B )A.一个函数中可以定义其它的函数B.C程序总是从main()函数开始执行C.main()函数也可以被其它函数调用D.一个C程序可以有多个main()函数12.设char ch=…a‟;,执行printf(“%d,%c\n”,ch,ch+2);后的输出结果是( A )A.97,cB.97,99C.a,cD.a,a+213.下列叙述正确的是( C )A.continue语句的作用是跳出循环体B.while循环语句的循环体至少执行一次C.do-while循环语句的循环体至少执行一次D.switch语句中的每个case语句组必须含有break语句14.设struct{int x;int y;}m[2]={7,3,2,1};,执行printf(“%d\n”,m[0].x/m[1].x*m[0].y);后的输出结果是( B )A.10.5B.9C.8.0D.715.设int a=l,b=2,c=3;,执行表达式(a>b)&&(c=1)后c的值是( D )A.0B.1C.2D.3二、填空题(本大题共10小题,每小题2分,共20分)16.表达式3 !=6的值是1。
17.设int a=15;,执行printf(“%d\n”,a>>2);后的输出结果是le。
18.设char*str=“People”;,执行printf(“%s\n”,str+4);后的输出结果是3。
19.执行下面程序段,输出“FIFA”的行数是 6 。
int i,j;for(i=0;i<5;i++)for(j=1;j<i;j++)printf(“FIFA\n”);20.xy yx 21++的C 语言表达式是 1.0/(x+y)+sqrt(2*x*y) 。
21.设int year=2010,days ;,执行days=year%4==0&& year%100!=0 || year%400==0?29:28;后days 的值是 28 。
22.设int x=10,y=3;,执行printf(“%d ,%d\n",x--,++y);后的输出结果是 10,4 。
23.在C 语言中,形参和实参的传递方式分为地址传递和 值传递 。
24.使用系统函数pow( )时,在程序开始应包含的预处理命令是 #include<math.h> 。
25.在C 语言中,文件分为二进制文件和 文本文件 。
三、程序分析题 每小题4分 阅读下列程序,将输出结果写到各题右侧的空白处。
26. #include<stdio.h>void main() { int a=0,b=2,c=3;switch (a){ case 0:switch (b==2){ case l :printf(“*”);break ;case 2: printf (“%”);break;}case 1: switch (c){ case l :printf(“$”);break ;case 2: printf (“&”);break;default: printf (“#”);}}printf (“\n”); } 运行结果:%#27. # include<stdio.h>void fun(int *a ,int *b ,int x ,int y){ *a=x+y ;*b=x-y ;}void main (){ int c=8,d=4;fun (&c ,&d ,5,10);printf(“%d ,%d\n”,c ,d);} 运行结果:15,-528. # include<stdio.h>int fun (int x){ int p ;if(x==1) return 2;else p=x-fun (x-2);return p ;}void main (){ printf(“%d \n”,fun (9));} 运行结果:629. # include<stdio.h>int a=10;void f(){ int a=30;printf (“%d ,”,a); }void main() { f ();printf (“%d \n”,a);} 运行结果:30,10四、程序填充题 每小题6分 请将下列程序横线处缺少的部分补上,使其能正确运行。
30.将数组a 中元素按下图循环左移一位并输出。
# include <stdio.h>void main ( ){ int j ,k ,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]= a[j+1] ;/*第一空*/a[4]= k ;/*第二空*/for ( j=0;j<5;j++)printf (“%5d‟‟, a[j] );/*第三空*/printf (“\n‟‟);}31.计算并输出1!+2!+3!+4!+5!的值。
# include<stdio.h>int f (int a){ static int c=1;c=c*a ;return c ;/*第一空*/}void main (){ int i ,k ;k= f(1)或1 ;/*第二空*/for (i=2;i<=5;i++) k+=f( i );/*第三空*/printf (“%d\n”,k);}32.将文本文件fin.dat 中的数字字符找出并写入文本文件fnum.dat 中。
#include<stdio.h>void main (){char ch ;FILE*fin,*fnum ;fin=fopen (“fin.dat”, "r" );/*第一空*/fnum=fopen (“fnum.dat”,“w‟‟);while(!feof( fin ))/*第二空*/{ch=fgetc(fin);执行前执行后if( ch>='0' && ch<='9')fputc (ch,fnum);/*第三空*/}fclose (fin);fclose(fnum);}五、程序设计题(本大题共2小题,每小题8分,共16分)33.从键盘输入代表平面上某点的横坐标x和纵坐标y,输出x和y的值并按下列要求输出相应的标志。
当x>0且y>0,属于第一象限,输出标志“A‟‟当x<0且y>0,属于第二象限,输出标志“B”当x<0且y<0,属于第三象限,输出标志“C”当x>0且y<0,属于第四象限,输出标志“D”当x=0或y=0,不属于任何象限,输出标志“E”33、/* 思路:输入两个数之后,使用if语句依次判断它们所属的象限 */#include<stdio.h>void main(){int x,y;scanf("%d%d",&x,&y); /* 输入x和y的值 */if(x>0 && y>0)printf("A\n"); /* 属于第一象限 */else if(x<0 && y>0)printf("B\n"); /* 属于第二象限 */else if(x<0 && y<0)printf("C\n"); /* 属于第三象限 */else if(x>0 && y<0)printf("D\n"); /* 属于第四象限 */elseprintf("E\n"); /* 不属于任何象限 */}34.从键盘输入一个4行5列的二维整型数组,输出其每一行的最小值。
34、/* 思路:先用一个双重循环输入4行5列的数据。
然后再用一个双重循环读取数组中的每一个元素,在读取每行数据时,先假设每行的第1个数为最小的,然后用该行的每个数与最小的比较,从而找出每行的最小值。
*/ #include<stdio.h>void main(){int i,j,a[4][5],min;for(i=0;i<4;i++) { /* 输入4行5列的数据 */for(j=0;j<5;j++)scanf("%d",&a[i][j]);}for(i=0;i<4;i++){min=a[i][0]; /* 假设每行的第1个数为当前最小的 */for(j=1;j<5;j++) {/* 依次读取每行的其他元素,如果比当前最小的值小,则更新min */if(a[i][j]<min)min=a[i][j];}printf("第%d行最小数为%d\n",i+1,min);}}。