C语言程序设计 样卷 2007-2008学年第 二学期本科试卷
- 格式:doc
- 大小:50.50 KB
- 文档页数:12
目录二级C语言笔试试卷(2007年4月) (1)二级C语言笔试试卷参考答案(2007年4月) (7)二级C语言笔试试卷(2007年11月) (8)二级C语言笔试试卷参考答案(2007年11月) (16)二级C语言笔试试卷(2008年4月) (18)二级C语言笔试试卷参考答案(2008年4月) (24)二级C语言笔试试卷(2008年11月) (26)二级C语言笔试试卷参考答案(2008年11月) (32)二级C语言笔试试卷(A)2007年4月注意事项:1.一、二题为客观题,请将答案涂在机读答题卡上2. 三、四、五、六题为主观题,请将答案做在答题纸上一、单项选择题。
(每小题1分,共20分)1.在C程序的函数调用时,主调函数中的实参和被调函数中的形参()。
(A) 个数、次序必须相同,但数据类型可以不考虑(B) 个数、次序和对应参数的数据类型都应该相同(C) 个数、次序和数据类型均可以不相同(D) 对应参数数据类型应相同,但个数和次序可以不考虑2.如a为int型,则与表达式a等价的C语言关系表达式是()(A) a>0 (B) a!=0 (C) a==0 (D) a<03.循环语句for(a=0,b=0;(b!=45)||(a<5);a++);的循环次数是()(A) 4 (B) 3 (C) 5 (D) 无数多次4.设有字符数组a,则正确的输入语句是()。
(A) gets('a'); (B) scanf("%c",a);(C) scanf("%s",a); (D) gets("a");5. enum color{red,green,yellow=5,white,black};定义了一枚举类型。
编译程序为值表中各标识符分配的枚举值依次为()。
(A)1、2、3、4、5 (B)0、1、5、2、3(C)0、1、5、6、7 (D)3、4、5、6、76.运行完下列程序后,在屏幕上的内容是()。
吉林大学农学部2007—2008学年第二学期《C 语言程序设计》考试试卷(A 卷)(考试时间:120分钟,本卷共3页,共印 份)10道小题,每道小题2分,满分20分)1.下列叙述中不正确的是( )A) 一个C 源程序可由一个或多个函数组成 B) 一个C 源程序必须包含一个main 函数 C) C 程序的基本组成单位是函数D) 在C 程序中,注释说明只能位于一条语句的后面2.若有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( ) A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000 3.若有代数式bcae 3,则不正确的C 语言表达式是( )A) a/b/c*e*3 B) 3*a*e/b/c C) 3*a*e/b*c D) a*e/c/b*34.若有定义:int m=5, y=2; 则计算表达式y + = y - = m * = y 后的y 值为( ) A) -15 B) -8 C)10 D) -165.执行以下程序段后,变量a, b, c 的值分别是( ) int x=10, y=9; int a,b,c;a = (--x= =y++) ? - -x : ++y; b=x++; c=y;A) a=9,b=9,c=9 B) a=8,b=8,c=10 C) a=9,b=10,c=9 D) a=1,b=11,c=10 6.有以下程序 main() { int i;for(i=0;i<3;i++) switch(i) { case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } }执行后输出结果是( ) A) 011122 B) 012 C) 012020 D) 120 7.下面程序的运行结果是( ) int x=-1; do{ x=x*x; } while(!x);A) 是死循环 B) 循环执行二次 C) 循环执行一次 D) 有语法错误 8.若有以下程序段: … …int a[]={4,0,2,3,1}, i, j, t; for(i=1; i<5; i++) {t=a[i]; j=i-1;while(j>=0 && t>a[i]) {a[j+1]=a[j]; j--; }a[j+1]=t; }… …则该程序段的功能是( )A) 对数组a 进行插入排序(升序) B) 对数组a 进行插入排序(降序) C) 对数组a 进行选择排序(升序) D) 对数组a 进行选择排序(降序)9.若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为( )。
《C语言程序设计(1)》课程考试试卷(B)及答案开课二级学院:信息、机电、计测、质安,考试时间:2008年6月27日18时、开卷□,允许带入场考生姓名:学号:专业:班级:试题1(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。
统计1000以内的水仙花数。
【程序】#include <stdio.h>void main( ){int i,g,s,b,t;for ( (1) ){(2)g=t%10;t=t/10;(3)b=t/10;if( (4) ){printf("%d ",i);}}}【供选择的答案】(1) A、i=100,i<1000,i++ B、i=100;i<999;i++C、i=100;i<1000;i++D、i=100,i<999,i++(2) A、t=i; B、i = t;C、t==i;D、;(3) A、s=t/10; B、s=t%10;C、s=t/100;D、s=t%100;(4) A、i==g*g*g+s*s*s+b*b*b B、 i==g*g+s*s+b*bC、i=g*g*g+s*s*s+b*b*bD、 i=g*g+s*s+b*b试题2(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】连续输入十个整数,找出并返回最大值及其下标。
运行示例:10 9 8 7 6 5 4 3 2 1max=10, imax=0【程序】#include <stdio.h>void main( ){int i, max, imax;(5)for (i=1; i<11; i++){scanf("%d", &a[i]);}max=a[1];(6)for(i=2; i<11; i++){if( (7) ){(8)imax=i;}}printf("max=%d, imax=%d\n", max, imax);}【供选择的答案】(5) A、int a[9]; B、int a[10];C、int a[11];D、int a(10);(6) A、; B、imax=1;C、imax=10;D、imax=0;(7) A、 max>a[i] B、 max<a{i}C、 max<(a+i)D、 max<a[i](8) A、a[i]=max; B、;C、max=a[i];D、max==a[i];试题3(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
(勤奋、求是、创新、奉献)2007~2008学年第二学期考查试卷主考教师:章颖芳《程序设计基础(C)》课程试卷A参考答案(本卷考试时间90 分钟)题号一二三四五六七八九十总得分题分2020101040100得分一、单项选择题(每小题 2 分,共20 分)1-10:DCCBC DBABA二、填空题(每小题 2 分,共20 分)1.c>=’A’ && c<=’Z’2.a>=b && b>=c3.num%2==04. 35.06. 27.48.y = f =9.7,10.18, 20三、程序阅读题(每题5分,共10分)1.13, 33, 12, 332.0四、程序填空题(每题 5 分,共10 分)1.int n;sum=0;sum+=i;2.for(i=0; i<n; i++)scanf("%d", &a[i]);a[index]=a[k]for(i=0; i<n; i++)printf("%d ", a[i]);五、编程题( 每题10分,共40 分)1. 对任意输入的 x ,用下式计算并打印出 y 的值。
⎪⎩⎪⎨⎧>-+<=<+-<=-=111010152x x x x x e x x y x#include<> #include<> int main(){ float x,y; printf("Enter x:"); scanf("%f",&x); if(x<=0) y= 5*x - 1; else if(x<=1) y= exp(x) - x +1; else y= x*x + x - 1; printf("y=%f\n",y);}2. 编写程序。
输入一个正整数n (n>=1),计算 ++++++116957453321的前n 项之和,输出时保留3位小数。
2007―2008学年度第二学期期末考试《C语言》(计算机科学系)A卷标准答案如下:1、112、a<c&&b<c3、04、long s=0;s=s+i; 或s+=i;三、程序阅读题(共3个小题,每小题5分,共15分)。
1.22. 8 9 10 3 .7 5四、编程题(说明:编程答案不唯一,以下答案仅供参考)(共5个小题,共45分)1、(总分7分)#include "math.h"main( ) …………………………………………………………………………………1分{float x,y; ……………………………………………………………………………1分printf("input x\n");scanf("%f",&x); ………………………………………………………………………1分if(x<-1) y=2*x+3; ……………………………………………………………………1分else if(x>=-1&&x<=1) y=5*x+10; ………………………………………………1分else y=12*x; ……………………………………………………1分printf("x=%f,y=%f",x,y); ………………………………………………………1分}2、((总分8分))main()…………………………………………………………………………………1分{ int x; ……………………………………………………………………………1分printf("please input a number\n");scanf("%d",&x); …………………………………………………………………1分switch (x) ………………………………………………………………………2分{ case 1: printf("excellent\n");break; …………………………………………0.5分case 2: printf("good\n");break; ………………………………………………0.5分case 3: printf("pass\n");break; ………………………………………………0.5分case 4: printf("fail\n");break; ………………………………………………0.5分default : printf("error\n");……………………………………………………1分}}3、(总分10分)void yz(int n) ……………………………4分(写出void得2分,写出参数n得2分){ int i; ………………………………………………………………………1分for(i=1;i<=n;i++)…………………………………………………………2分I f(n%i==0) printf("%5d",i); ……………………………………………3分return ;}4、(总分8分)main()……………………………………………………………………………1分{int a[3][3]; ……………………………………………………………………1分int i,j; …………………………………………………………………………1分long s; …………………………………………………………………………1分printf("please input 9 number\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]); ………………………………………………1分printf("the array a is \n");for(i=0,s=0;i<3;i++){for(j=0;j<3;j++){printf("%4d",a[i][j]);if(i==j||i+j==2)s=s+a[i][j]; …………………………………………2分}printf("\n");} printf("s=%3d",s); ………………………………………………………1分}5、(总分12分)#define N 8int find(int a[],int n,int x);main()……………………………………………………………………………1分{int a[N],i,x,k; …………………………………………………………………1分printf("input %d number\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]); ……………………………………………………………1分printf("input x\n");scanf("%d",&x); ………………………………………………………………1分k=find(a,N,x); …………………………………………………………………2分if(k==-1) printf("%d can't find\n",x); …………………………………………0.5分else printf("%d in a[%d]",x,k); ………………………………………………0.5分}int find(int a[],int n,int x) ……………………2分(函数返回值0.5分,一个参数0.5分){int i; ……………………………………………………………………………1分for(i=0;i<n;i++)if(a[i]==x) return i; ………………………………………………………1分if(i==n) return -1; ……………………………………………………………1分}。
江 苏 大 学 试 题
(2007-2008学年第二学期)
课程名称 计算机基础和程序设计(C 语言)(II ) 开课学院 计算机学院
使用班级 07级理工专业 考试日期 2008年
江苏大学试题第2页
江苏大学试题第3页
江苏大学试题答卷第11页
(2007-2008学年第二学期)
课程名称计算机基础和程序设计(C语言)(II)开课学院计算机学院使用班级07级理工专业考试日期2008
一、选择题(30分,每小题1分)
请将本题答案涂在答题卡上,写在别处本题不得分。
二、填空题(10分,每题1分)
江苏大学试题答卷第12页
三、阅读程序题(30分,其中(1)-(6)每空3分,(7)-(12)每空2分)
江苏大学试题答卷第13页四、完善程序题(30分,每空2分)。
2008年07级C程序设计期末考试卷(A)[注意] 所有答案写在单张的答题卷上。
一、判断题(本题共10分,每小题1分,用A表示正确,用B表示错误。
)(1) C语言程序的变量必须先定义再使用。
(2) do-while语句构成的循环不能用其他语句构成的循环来代替。
(3) C语言规定,函数的实参应与其对应的形参类型一致。
(4) C语言认为名为Student和student的变量是不同变量。
(5) 当两个字符串所包含的字符个数相同时,才能比较两个字符串的大小。
(6) 如果定义了int a[10],那么使用语句a[10]=10可以给数组元素a[10]初始化。
(7) 用关键字static声明的变量是全局变量,在整个程序的全部执行过程中都占用存储单元。
(8) 如果a=1,b=2,c=3,d=4则表达式a>b?c:d的值等于3。
(9) 如果a=15,那么执行a=a>>2以后,a的值就变成了3。
(10) 结构体成员的类型可以是另外一种结构体类型。
二、单选题(本题共20分,每小题2分)(11) 假设有以下定义:int a=0xAA,b=0x55,则a & b 的值为:________。
[A] 0x0 [B] 0xff[C] 0x01 [D] 0xAA(12) 假设有以下定义:int a[5]={1,2,3,4,5},i=3,*p=a , *q=a; 则不能正确执行的语句是________。
[A] i=*p +*q; [B] a=i;[C] *p = *(a+i); [D] i = *p**(q+2);(13) 以下有关宏定义的叙述,正确的是________。
[A]宏名必须用大写字母表示[B]带参数的宏就是一个函数[C]宏名不具有类型[D]宏定义和其它C语句,其末尾要加分号(14) 若用数组名作为函数调用时的参数,则实际上传递给形参的是________。
[A] 数组第一个元素的值[B] 数组元素的值[C] 数组的首地址[D] 数组名1第页(共7 页)(15) 如果在用户的程序中要使用C库函数中的数学函数时,应在该源文件中使用的include命令是________。
院(系):专业:年级:学生姓名:学号:-------------------------------------------------密----------------------------------封-----------------------------线---------------------------------------------------------第 1 页(共 3 页)------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------第 2 页共 3 页------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------第 3 页(共 3 页)2007–2008学年第二学期期末考试试卷(A卷)课程名称: 面向对象程序设计课程编号:任课教师:一、单项选择题:(共20题,每小题2分,共40分)1. B 2. C 3. C 4. A 5. A 6. B 7. B 8. C 9. B 10. D 11. C 12. D 13. D 14. B 15. C 16. D 17. B 18. A 19. A 20. A二、填空题:(共10题,每小题1分,共10分)21.true ,false 1 ,0 22.内联函数,编译,执行时间23.this 24.new25.继承26.私有,私有,不可访问27.虚函数28.基类指针或引用三、程序改错题:(共2题,每题5分,共10分)29.【答】【答】错误处标号如下:①///************************************************* 程序文件名: p1_2.cpp **************************************************/#include <iostream>;④using std::endl;⑤void main( )⑥float num1, num2, num3; //定义三个数cin ⑦<< num1 << num2<<num3;cout >> ⑧“The average is:”⑨>> setw(30) ⑩>>(num1+num2+num3)/3>> endl;}①行注释符号//将块注释的头/*注释掉了,使得块注释的尾*/没有相应的头与之匹配;②关键字Using中包含了大写字母,应改为using;③using namespace std不是预处理指令,要以分号结尾;④#include <iostream> 是预处理指令,不能以分号结尾,而且要作为程序的开头行⑤使用了using namespace std,就不必单独使用std::endl;⑥void main() 后少了{;⑦cin应与提取操作符>>连用;⑧cout应与插入操作符<<连用;⑨“The average is:”为全角引号,应改为英文;⑩使用setw(30) 应包含头文件iomanip30.【答】①int a(0),b(0); //错误,数据成员的初始化必须通过构造函数实现改正:int a,b;②A x(2,3), y(4); //错误,对象y的初始化与已定义的构造函数参数表不匹配,可重载一个构造函数对对象y进行初始化。
2007-2008学年第二学期本科试卷课程名称:C语言程序设计样卷1.本试题总时间120分钟。
2.本试卷仅作为学生了解期末考试试卷题目形式之用,并非真正考题。
20分,每小题1分)1.C语言规定,在一个C程序中,main()函数的位置_______ 。
A) 必须在开始B) 必须在最后C) 可以任意D) 必须在系统调用的库函数之后2.下列四组C语言标识符中,正确的一组是_______ 。
A) name Char _abc A223B) abC?c 5bytes -Tianjin _54321C) print const type defineD) include integer Double short_int3.已知字母…A‟的十进制ASCII代码值为65,下面程序段的输出是_______。
char ch1,ch2;ch1=…A‟+…5‟-…3‟;ch2=…A‟+…6‟-…3‟;printf("%d,%c\n",ch1,ch2);A) 67,D B) B,CC) 不确定的值D) C,D4.已定义c为字符型变量,则下列语句中正确的是_______。
A)c='97'; B)c="97"; C)c=97; D)c="a";5.若有定义: int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值是_______。
A) 0 B) 2 C) 1.5 D) 16.设int a=1,b=2,c=3,d=4,z;则表达式(a>b)?(z=c):(z= d)的值为_______。
A) 4 B) 2 C) 1 D) 37.下列程序段的输出结果是_______。
int a=1234;float b=123.456;double c=12345.54321;printf("%2d,%2.1f,%2.1f",a,b,c);A)无输出B)12,123.5,12345.5C)1234,123.5,12345.5 D)1234,123.4,1234.58.有如下程序段int a=14,b=15,x;char c=′A′;x=(a&&b)&&(c<′B′);执行该程序段后,x的值为_______。
A)true B)false C)0 D)19.以下程序段int x;scanf("%d",&x);switch (x){ case 5: printf("Excellent");default: printf("Poor");case 4: printf("Good");case 3: printf("Pass");case 2: printf("Fail");}在执行时,若从键盘输入3,则输出为_______。
A) Pass B) Passpoor C) PoorPassFai l D) PassFail10.设有以下程序段int x=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则_______。
A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的D)程序段执行无限次11.有以下程序main(){ int k=4,n=0;for(;n<=6;n++){ n++;if(n%3!=0) continue;k--;}printf("%d,%d\n",k,n);}程序运行后的输出结果是_______。
A)1,1 B)2,8 C)3,8 D)4,712.若用数组名作为函数调用的实参,则传递给形参的是____ ___。
A) 数组的首地址B) 数组第一个元素的值C) 数组中全部元素的值D) 数组元素的个数13.若有说明double b[7][6];则对其元素的非法引用是____ ___。
A) b[3][5] B) b[7][5]C) b[2*3][4] D) b[0][9-6]14.定义如下变量和数组:int k;int a[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是_______。
for(k=0;k<3;k++)printf("%d",a[k][k]);A)7 5 3 B)9 5 1 C)9 6 3 D)7 4 115.下面说明不正确的是_______。
A)char a[10]="china";B)char a[10],*p=a;p="china"C)char *a;a="china";D)char a[10],*p;p=a="china"16.程序main(){ char name[7];scanf("%s",name);printf("name=%s",name);}执行时输入:China Tianjin,则程序的输出为_________ 。
A) name=China B) name=China TianjinC) name=China T D) name=Tianjin17.完成编译预处理的工作是在_______完成的。
A) 编译时B) 编译前C) 编译后D) 执行时18.程序中定义以下宏#define w 3#define L w+4若定义int val;且令val=L*L,则变量val的值为_______。
A) 14 B) 19 C) 24 D) 4919.若定义int a,b,*p1=&a,*p2=&b;使p2指向a的赋值语句是_______。
A) *p2=&a;B) p2=&p1;C) p2=&*p1 D) p2=*&a;20.程序int f(int a){ static int b=2;b++;return(a+b);}main(){ int a=2,i;for (i=0;i<3;i++)printf("%d ",f(a));}执行时,输出结果为________ 。
A) 5 5 5 B) 5 6 7 C) 4 5 6 D) 6 6 610分,每小题1分)1.程序main(){ int a=1,b=2,t=3;if (a>b)t=a;a=b;b=t;printf("%d,%d",a,b);}执行时的输出结果是_______________________。
2.程序#include "stdio.h"main(){ int i=0;while(i<7){ if(i%3) printf("*");else printf("+");i++;}}执行时的输出结果是_______________________。
3.程序main(){ int i,a[10]={1,2,3,4,5,6,7,8,9,10};for (i=5;i>=0;i--)printf("%d ",a[i]);}执行时的输出结果是_______________________。
4.程序void test( int x,int y){ x=y ; y=x-2; }main(){ int a=3,b=4 ;test(a,b);printf("%d,%d",a,b);}执行时的输出结果是_______________________。
5.程序main(){ int k,s=0;for(k=1;k<=10;++k)s=s+k-1;printf(“%d”,s);}执行时的输出结果是_______________________。
6.以下程序求1到100的和,请填空。
#include "stdio.h"main(){int i,sumsum=0;for(i=1;i<=100;i++)————————————printf("%d,\n",s);}7.以下程序求一维数组所有元素中最大,请填空。
#include "stdio.h"main(){int a[10]={12,45,34,67,89,45,34,54,76,10};int max;max=a[0]for(i=0;i<10;i++)if (max<a[i])————————————printf("%d,\n",max);}8.下面程序是求出数组arr的两条对角线上元素之和,请填空。
#include "stdio.h"main(){int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(______________________)a=a+arr[i][j];printf("%d\n",a);}9.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
double max(double a,double b){ return(a>b ? a:b); }main(){ double x,y;scanf("%lf%lf",&x,&y);printf("%lf\n",____________________);}10.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:abc123edf456gh,执行程序后输出:123456。
请填空。
#include <strinig.h>main(){ char s[80], d[80]; int i,j;gets(s);for(i=j=0;s[i]!='\0';i++)if(_______________) { d[j]=s[i]; j++; }d[j]='\0';puts(d);}三、编程题(共70分,每小题7分)1.编写程序,输入三角形三条边长,计算三角形的面积。
2.编写程序,求解鸡兔同笼问题。
已知笼子中鸡和兔的头数总共为h,脚数总共为f,求笼子中鸡和兔分别为多少只。