2011年C语言期末试题

更新时间:2024-07-12 11:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

四川大学期末考试试题(A卷)

(2011 ——2012 学年第 一 学期)

课程号:303066030 课序号: 课程名称: 计算机基础及C程序设计语言 任课教师:刘亚梅 曾晓东 罗伟 王茂宁 任瑞玲 余勤 邓丽华 成绩: 适用专业年级:2011级 学生人数: 印题份数: 学号: 姓名: 考 试 须 知 四川大学学生参加由学校组织或由学校承办的各级各类考试,必须严格执行《四川大学考试工作管理办法》和《四川大学考场规则》。有考试违纪作弊行为的,一律按照《四川大学学生考试违纪作弊处罚条例》进行处理。 四川大学各级各类考试的监考人员,必须严格执行《四川大学考试工作管理办法》、《四川大学考场规则》和《四川大学监考人员职责》。有违反学校有关规定的,严格按照《四川大学教学事故认定及处理办法》进行处理。 一 单项选择题(每题1.5分,共60分)(注:本题及以下各题均以VC++6.0为软件编程平台) 1. 以下叙述正确的是 。 A) 构成C程序的基本单位是函数 B) 可以在函数中定义另一个函数 C) main( )函数必须放在其他函数之前 D) 所有被调用的函数一定要在调用之前进行定义 2. 以下不能定义为用户标识符的是 。 A)scanf B)Void C)_3com D)int 3.用_______将C语言的源程序转变为机器语言的目标程序。 A)汇编程序 B)链接程序 C)解释程序 D)编译程序 4. 以下描述正确的是 。 A)C语言的函数允许嵌套定义 B)C语言编译时不检查语法 C)C语言所有函数都是外部函数 D)C语言中转义字符以”/”开头 5.以下叙述中错误的是______。 A)用户所定义的标识符允许使用关键字 B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大、小写字母代表不同标识 6. 若以下选项中的变量已正确定义,则正确的赋值语句是 。 A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3; 7.若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是 。 A) 0 B) 0.5 C) 1 D) 2 注:1试题字迹务必清晰,书写工整。 本题 9 页,本页为第 1 页 2 题间不留空,一般应题卷分开 教务处试题编号:

学号: 姓名

8. 在C语言中不合法的整数是 。 A)20 B)0x400 C)08 D)0x12ed 9. 设int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=ik)&&(c=i,j,k)后,c值是 。 A)0 B)1 C)2 D)3 10. 设int x=1,y=1;表达式(!x||y--))的值是 。 A)0 B)1 C)2 D)-1 11. 在下列选项中,不正确的赋值语句是 。 A)++t; B)n1=(n2=(n3=0)); C)k=i= =j; D)b+c=1; 12. 如果在用户的程序中使用C语言库函数中的sqrt函数,应在该源文件中使用的include命令是 。 A)# include B)# include C)# include D)# include 13. 若有以下定义和语句: char c1 = 'b', c2 = 'e'; printf ( \则输出的结果是_______。 A)3,E B)3,D C)2,D D)2,E 14. 下面程序的输出结果是 。 #include void main( ) { int x=3; do{ printf(\ }while(--x); } A)4 B)4 4 C)4 4 4 D)死循环 15. 设有以下定义 int a=0;double b=1.25;char c= 'A' #define d 2 则下面语句中错误的是 。 A)a++ B)b++; C)c++; D)d++; 16. 设有如下程序段: int x=2002, y=2003; printf(\则以下叙述中正确的是 A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2002 D)输出值为2003 本题 9 页,本页为第 2 页

教务处试题编号:

学号: 姓名

17. 若有程序段: char str[ ]= \则下列叙述正确的是 。 A)*p与str[0]相等 B)str数组长度和p所指向的字符串长度相等 C)str和p完全相同 D)数组str中的内容和指针变量p中的内容相等 18. 设x、y、temp均为int型变量,p1和p2为整型指针变量,则以下语句:p1=&x; p2=&y; temp=*p1;*p1=*p2;*p2=temp;的功能是 。 A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 19. 若给定条件表达式(M)?(a++):(a--),则其中表达式(M) 。 A) 和(M==0)等价 B) 和(M==1)等价 C) 和(M!=0)等价 D) 和(M!=1)等价 20. 以下描述不正确的是 。 A) 使用while和do-while循环时,循环变量初始化的操作应在循环体语句之前完成 B) while循环是先判断表达式,后执行循环语句 C) do-while 和for循环均是先执行循环语句,后判断表达式 D) for、while 和do-while循环中的循环体均可以由空语句构成 21. 在下列描述中,正确的一条是 。 A)if (表达式)语句中,表达式的类型只限于逻辑表达式 B)语句“goto 12;”是合法的 C)for(;;)语句相当于while(1)语句 D)break语句可用于程序的任何地方,以终止程序的执行 22. 关于以下三条语句的描述中,正确的是_______。 ? if(a) a=1;else a=2; ? if(a= =0) a=2;else a=1; ? if(a!=0) a=1;else a=2; A)三条语句相互等效 B)三条语句中?与?等效 C)三条语句中??与?等效 D)三条语句各不等效 23. 有结构型定义如下: struct person { char name[20]; int age; int sex; }w[5],*p=w; 那么下面scanf语句中对结构变量成员不正确的引用是_______。 A)scanf(“%s”,w[0].name); B)scanf(“%d”,&w[0].age); C)scanf(“%d”, &(p->sex)); D)scanf(“%d”, p->age); 本题 9 页,本页为第 3 页

教务处试题编号:

学号: 姓名

24. 若有定义:int x=0, *p=&x;,则语句printf(\的输出结果是______。 A)随机值 B)0 C)x的地址 D)p的地址; 25. 下述对C语言数组的描述中正确的是_______。 A)任何一个一维数组的元素在引用时,其下标可以是整型、实型或字符型常量 B)一维数组的元素实质上就是一个变量,代表内存中的一个存储单元 C)如果要引用数组中的每一个元素,则直接使用该数组名称即可 D)以上都不对 26. 下述对C语言字符数组的描述中正确的是_______。 A)字符数组不可以存放字符串 B)字符数组中的字符串可以整体输入、输出 C)可以在赋值语句中通过赋值运算符对字符数组整体赋值 D)可以用关系运算符对字符数组中的字符串进行比较 27. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是 。 A)3 B)6 C)10 D)20 28. 以下语句或语句组中,能正确进行字符串赋值的是______。 A)char *sp;*sp=\ B)char s[10];s=\C)char s[10];*s=\D)char *sp=\ 29.若有以下说明,且0≤i≤10,则对数组元素的错误引用是_______。 int a[ ]={1,2,3,4,5,6,7,8,9,10}, *p = a, i; A)*(a + i) B)a[p-a+i] C)p+i D)*(&a[i]) 30. 若有语句:char st1[]=\st2[9],*st3,*st4=\则对库函数strcpy的错误调用的是 A)strcpy (st1,”teacher1”); B)strcpy (st4,”teacher2”); C)strcpy (st3,”teacher1”); D)strcpy (st1, st2); 31.若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句为 。 A)p=q; B)*p=*q; C)n=*p; D)p=n; 32.已有定义:int i,a[10],*p;则合法的赋值语句是 。 A)p=100 B) p=a[5]; C) p=a[2]+2; D)p=a+2; 本题 9 页,本页为第 4 页 教务处试题编号:

学号: 姓名

33.有一个如下定义的函数: func (int a) { printf (“%d”,a); } 则该函数的返回类型是 。 A)与参数a的类型相同 B)void类型 C)没有返回值 D)无法确定 34. 有以下函数定义: void fun(int n,double x) {??} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是是 。 A)fun(int y,double m); B)k=fun(10,12.5); C)fun(x,n); D)void fun(n,x); 35. 若程序中定义了以下函数: double myadd (double a,double b) {return (a+b);} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 。 A)double myadd (double a,b); B)double myadd (double,double); C)double myadd (double b,double a); D)double myadd (double x,double y); 36.若用数组名作为函数调用的实参,传递给形参的是______。 A) 数组的首地址 B) 数组第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数 37.关于C语言以下说法正确的是______。 A) 只有当实参和与其对应的形参同名时才共占用存储单元 B) 形参是虚拟的,不占用存储单元 C) 实参和与其对应的形参各占用独立的存储单元 D) 实参和与其对应的形参共占用一个存储单元 38. 若有语句:char *line[5];,以下叙述中正确的是______。 A)定义line是一个指针数组,每个数组元素是一个基类型为char的指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 本题 9 页,本页为第 5 页 教务处试题编号:

学号: 姓名

39. 设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。 A)*p=*q; B)p=q; C)*p=&n1; D)p=*q; 40.设有如下定义: struck sk { int a; float b; }data; int *p; 若要使P指向data中的a域,正确的赋值语句是______。 A) p=&a; B) p=data.a; C) p=&data.a; D) *p=data.a; 二.写出下列程序的运行结果(6小题,每题4或5分,共25分) 1.(4分) #include void main( ) { int x; scanf(\ if(x++>5) printf(\ else printf(\ } 若输入5,其输出结果是 。 2.(4分) #include void main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf(\ else if ((c-1>=d)==1) printf(\ else printf(\} 本题 9 页,本页为第 6 页 教务处试题编号:

学号: 姓名

3.(4分) #include void main() { int n; for(n=1;n<6;n++) { if(n%2) { printf(\ continue; } printf(\ } printf(\} 4.(4分) #include struct abc { int a, b, c; }; void main() { struct abc s[2]={{1,2,3},{4,5,6}}; int t; t=s[0].a+s[1].b; printf(\} 5.(5分) #include int a[ ]={2,4,6,8,10}; void main( ) { int i,t; int *p=a+1, *q=a+4; for(i=0;i<2;i++) { t=*p; *p++=*q; *q--=t; } printf(\} 本题 9 页,本页为第 7 页 教务处试题编号:

学号: 姓名

6.(4分)若运行时输入:2345<回车>,求程序的输出结果 #include #include void main( ) { char st[20]=\ printf(\} 三 程序填空(每空1.5分,共15分) 1. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空。 int mystrlen(char*str) { ` int i; for(i=0; (1) != '\\0';i++); return( (2) ); } 2. 设数组a中元素均为正整数,以下程序段是求a中偶数的个数和偶数的平均值。 int a[10]={1,2,3,4,5,6,7,8,9,10},k,s,i; float ave; for (k=s=i=0;i<10;i++) { if (a[i]%2!=0) (3) ; s+= (4) ; k++; } if (k!=0) { ave=s/k; printf (\ } 3. 下列程序用于求数组a中所有素数之和。prime( )用来判断自变量是否是素数。请填空。 #include int prime(int x); void main() { int i,a[10],*p=a,sum=0; printf(\ for(i=0;i<10;i++) scanf(\ 本题 9 页,本页为第 8 页

教务处试题编号:

学号: 姓名

for(i=0;i<10;i++) if(prime(*(p+ (5) ))==1) { printf(\ sum+=*(a+i); } printf(\} int prime(int x) { int i; for(i=2;i void main ( ) { float x[1000],sum=0.0,ave,a; int n=0,i; printf (\:\\n \scanf (\while (a>=0.0&& n<1000) { sum+ (7) ; x[n]= (8) ; n++; scanf (\} ave= (9) ; printf (\:\\n \printf (\for (i=0;i

本文来源:https://www.bwwdw.com/article/2gw.html

Top