admin 管理员组文章数量: 887021
2024年2月18日发(作者:中国最大的编程网站)
合肥学院计算机C语言期末(考试时间120分钟,总分150分)准考证号:_________________________姓名:__________________________一、单项选择题
(共20题,每题2分,共计40分)(
)1、下列符号中,可以作为变量名的是________。A、+cB、*XC、_DAYD、next-day【答案】C(
)2、有如下程序 int a[10]={ 1,2,3,4,5,6,7,8,9,10 },*p=a; 则数值为9的表达式是________。A、*P+9B、*(P+8)C、*P+=9D、P+8【答案】B(
)3、设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是________。A、b=1.0/aB、b=(float)(1/a)C、b=1/(float)aD、b=1/(a*1.0)【答案】D(
)4、以下叙述中正确的是________。A、逻辑"或”(即运算符||)的运算级别比算术运算要高B、C 语言的关系表达式:0<x<10 完全等价于:(0<x)&&(x<10)C、逻辑"非”(即运算符!)的运算级别是最低的D、由&&构成的逻辑表达式与由||构成的逻辑表达式都有“短路”现象第1/13页
【答案】D【解析】B 选项中,(x>0)&&(x<10)的值是 1 或 0,条件是 x>0 并且 x<10但是 0<x<10 这种写法的结果任何时候都是 1;C 选项中,逻辑“非”(即运算符!)的运算级别是最高的;A 选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。因此 D 选项正确。(
)5、下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择填空。#include <stdio.h>#include <math.h>main()
{ int a, b, c, d; scanf("%d", &a); for (b = 3, b <= a / 2; b += 2)
{ for (c = 2; c <= sqrt(c); c++) if (b % c == 0) break; if (c > sqrt(b)) d = ________; else continue; for (c = 2; c <= sqrt(d); c++) if (d % c == 0) break; if (c > sqrt(d)) printf("%d=%d+%dn", a, b, d); }}A、a+bB、a-bC、a*bD、a/b【答案】B(
)6、以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:
#include<stdio.h> findmax(int*s,int t,int*k)
{ int p; for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________;}main()
{ int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d,%dn",k,a[k]);}A、k=p第2/13页
B、*k=p-sC、k=p-sD、*k=p【答案】D【解析】k是―个指针,它的值是―个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把―个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。(
)7、以下程序运行后的输出结果是main() { char c; int n=100; float f=10; double x; x=f*=n/=(c=50); printf("%d %fn", n, x);}A、2 20.000000B、100,20.000000C、2 40.000000D、100 40.000000【答案】A【解析】对于C语言中的赋值运算符,必须遵循以下规则:赋值运算符的优先级别只高于逗号运算符,比其他任何运算符的优先级都低,并且具有自右向左的结合性。因此先得到变量c的值为50,变量n经过计算结果为2,最后通过变量f的值10和n的值2相乘得到变量x的值,为20.000000。因此选项A)正确。(
)8、下列定义数组的语句中不正确的是________。A、static int a[2][3]={1,2,3,4,5,6};B、static int a[2][3]={{1},{4,5}};C、static int a[][3]={{1},{4}};D、static int a[][]={{1,2,3},{4,5,6}};【答案】D(
)9、关于标识符,下列选项中描述错误的是________。A、标识符只能由字母、数字和下划线组成B、标识符不能以下划线作为第一个字符第3/13页
C、标识符不能以数字作为第一个字符D、标识符不区分大小写字母【答案】D【解析】标识符区分大小写字母。(
)10、以下能正确定义字符串的语句是________。A、char str[]={′\064′};B、char str="kx43";C、char str=";D、char str[]="\0";【答案】D(
)11、下面程序段的执行结果是________。
#include<stdio.h>main(){ int a[5][5],i,j; for(i=1;i<5;i++) for(j=1;j<5;j++) a[i][j]=(i<j)*(j/i); for(i=1;i<5;i++) { for(j=1;j<5;j++) printf("%2d",a[i][j]); printf("n"); }
}A、1111
1B、1000C、0000D、第4/13页
0000【答案】C【解析】本题使用一个双重循环对―个二维数组的一部分赋值(下标中含0的元素不赋值),赋值表达式是a[i][j]=(i/j)*(j/i)。因为i和j都是正整数,所以当i大于j时,j/i为0,当i小于j时,i/j为0,而0乘以任何数都为0,故表达式(i/j)*(j/i)在i和j不相等时的值为0。当i和j相等时,i/j和j/i的值都为1,所以表达式(i/j)*(j/i)的值为1。故二维数组中的a[1][1]、a[2][2]、 a[3][3]、a[4][4]被赋为1,其余下标不含0的元素被赋为0。故应该选择C。(
)12、下面关于函数依赖的叙述中,不正确的是________。A、若X→Y,Y→Z,则X→YZB、若X→Y,Y'包含Y,则X→Y'C、若X→Y,Y→Z,则X→ZD、若XY→Z,则X→Z,Y→Z【答案】D【解析】设R(U)是属性集U上的关系模式,X,Y,Z是U的子集。若对R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y,X称为决定因素。根据Armstrong公理系统的三条定律,可以知道:
根据合并律可知选项A正确:
根据增广律可知选项B正确;
根据传递律可知选项C正确。(
)13、一个字符的ascii码占用的存储空间为________。A、2个字节B、1个字节C、4个字节D、8个字节【答案】B【解析】本题考查的知识点是ASCII码占用的存储空间。[要点透析] ASCII码是一种7位编码,但它存放时必须占全1个字节,也即占用8位,最高位为0,其余7位表示ASCII码。(
)14、设有以下程序段: int a[5]=0,*p,*q; p=a; q=a; 则下列选项中,合法的运算是________。A、p+qB、p-qC、p*q第5/13页
D、p%q【答案】B【解析】本题考核指针的运算。C语言中,指向同一字符串的指针之间能且只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。(
)15、设有如下程序段:union{ int i; char c;} a;a.i=12;a.c='a';printf("n%d",a.i);这段程序执行后,屏幕输出的结果是………………………………………( )A、12B、97C、65D、A【答案】C(
)16、运行下面程序时,从键盘输入字母a,则输出结果是________。
#include<stdio.h>main()
{ char ch; ch=getchar(); switch(ch)
{ case'a':printf("aaaan"); case'b':printf("bbbbn"); default:printf("ccccn"); }}A、AAAAB、AAAA BBBBC、AAAA BBBB CCCCD、AAAA CCCC【答案】C【解析】第6/13页
【解析】本题考查switch语句。因为ch=A,所以第一个switch语句,执行ease'A'后面的语句,输出AAAA,没有遇到break语句,所以接着再执行case'B'和default,分别输出BBBB和CCCC。(
)17、以下对 c 语言中共用体类型数据的叙述正确的是______。A、可以对共用体变量名直接赋值B、一个共用体变量中可以同时存放其所有成员C、一个共用体变量中不可以同时存放其所有成员D、共用体类型定义中不能出现结构体类型的成员【答案】C(
)18、程序片段:short i=65536; printf("%dn",i);的输出结果是________。A、65536B、0C、有语法错误,无输出结果D、-1【答案】B【解析】short类型的取值范围是-32768~32767,再加1时发生溢出,变为0。(
)19、下述对c语言字符数组的描述中错误的是________。A、字符数组可以存放字符串.B、字符数组中的字符串可以整体输入、输出.C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值.D、不可以用关系运算符对字符数组中的字符串进行比较.【答案】C(
)20、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu
{ int i; int name;} st,*p;p=&st;A、siB、*iC、(*.i第7/13页
D、p->i【答案】B【解析】本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式即(*p).i和 p->i。二、判断题
(共10题,每题2分,共计20分)(
)1、空语句什么都没有
【答案】错误(
)2、判断一个数是否为偶数,可以通过%运算来实现
【答案】正确(
)3、关系表达式的值是一个逻辑值,即"真"或"假",并且用0表示"假",用1表示"真"。
【答案】正确(
)4、do-while 语句构成的循环至少执行一次
【答案】正确(
)5、宏定义是用宏名来表示一个字符串,在宏代换时以该字符串取代宏名。
【答案】正确(
)6、c语言中简单变量作为实参时,它和对应的形参之间的数据传递方式是双向值传递。
【答案】错误(
)7、一个c源程序可由一个或多个函数组成。( )
【答案】正确(
)8、c程序可以省略main( )函数。
【答案】错误(
)9、使用strcpy(字符数组,字符串)函数时,字符串后面的'0'并没有一起拷贝到字符数组中。
【答案】错误(
)10、c语言程序只能有一个文件。
【答案】错误第8/13页
三、填空题
(共5题,每题4分,共计20分)1、以下程序的输出结果是________。main(){ int x; printf("%dn",(x=2*4,x+5));}
【答案】132、已知t=5,则表达式"t-=t+=3"的值是______。
【答案】03、符合结构化原则的三种基本控制结构是:选择结构、循环结构和 ________ 。
【答案】['顺序结构']4、在scanf函数中,用符号______表示变量的地址。
【答案】&5、在c语言中,二维数组元素在内存的存放顺序是________.
【答案】['按行存放']四、程序分析题
(共4题,每题5分,共计20分)1、写出下列程序的运行结果。main()
{ int n; for(n=3; n<=10; n++)
{ if(n%6==0) break; printf("%d",n); }}
【答案】3 4 5第9/13页
2、以下程序的运行结果是________。main()
{ int a = 2, b = 3, c; c = a; if (a > b) c = 1; else if (a == b) c = 0; else c = -1; printf("%dn", c);}
【答案】-13、有以下程序main( )
{ int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf("%dn",x);}执行后输出结果是 ________。
【答案】['–4']4、以下程序输出x,y,z三个数中的最小值,请填空使程序完整___________。main ()
{ int x=4,y=5,z=8 ; int u,v; u = x < y ?_______; v = u < z ?_______; printf ("%d",v);}
【答案】['x:y', 'u:z']五、编程题
(共3题,每题分值不等,共计50分)1、我国古代有一种回文诗,倒念顺念都有意思,例如“人过大佛寺”,倒读起来便是“寺佛大过人”。还有经典的对联“客上天然居,居然天上客”。此种例子举不胜举。在自然数中也有第10/13页
类似情形,比如1991就是一个很特殊的四位数,从左向右读与从右向左读竟是完全一样的,这样的数称为“回文数”。编程序输出1到10000内的所有回文数并统计个数。 (本题12分)【答案】#include
// 删除字符串中指定字母函数char* deleteCharacters(char * str, char * charSet){ int hash [256]; if(NULL == charSet) return str; for(int i = 0; i < 256; i++) hash[i] = 0; for(int i = 0; i < strlen(charSet); i++) hash[charSet[i]] = 1; int currentIndex = 0;第11/13页
for(int i = 0; i < strlen(str); i++) { if(!hash[str[i]]) str[currentIndex++] = str[i]; } str[currentIndex] = '0'; return str;}
int main(){ char s[2] = "a"; // 要删除的字母 char s2[5] = "aca"; // 目标字符串 printf("%sn", deleteCharacters(s2, s)); return 0;}3、给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式:在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。输入样例:3Programming in C 21.5Programming in VB 18.5Programming in Delphi 25.0输出样例: 25.00, Programming in Delphi 18.50, Programming in VB (本题20分)【答案】#include
} ; struct message d[10]; int main() { int N; scanf("%d",&N); int i,j; for(i=0;i
版权声明:本文标题:合肥学院历年计算机C语言期末及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708262595h517937.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论