C(Ⅱ)期末试卷(含答案).pdf
江 苏 大 学 试 题课程名称 计算机基础及 C 语言()开课学院 计算机学院 使用班级 考试日期 .注意事项:1.闭卷考试。考试时间为 120 分钟。2答案均请用铅笔涂在答题卡上。将答题卡上的试卷类型涂 A(补考则涂 B)。3请将答题卡、试卷都写上班级、学号、姓名、任课教师。考试结束分别交予监考老师。一、选择题(30 分,每小题 1 分,请涂写在答题卡上)1 以下常量中正确的是 D.Aabc B.x123 C.3。145E1.2 D.”a”2 以下选项中,不能用作变量名的是 D。A._1234_ B._1_2 C.int_2_D.2_int_ 3 设有“int a;,以下不能正确表达 10a15 的表达式是 A。A。1010&a15 D。!(a=10)&!(a=15)4 已知数据类型定义和变量声明如下:struct sk int a;float b;data2,*p;若有 p=data,则以下对 data0中成员 a 的引用中错误的是 A.A.data0-a B.dataa C.p-a D.(*p)。a 5 下列程序的程序输出结果为 A。define X(a)a*a main()printf(“%dn”,X(4+5));A.29 B。18 C。20 D。25 6 若有定义“enum seqmouse,cat,dog,rabbit=0,sheep,cow=6,tiger;”则执行语句“printf(“d”,cat+sheep+cow);后输出的结果是_C_。A。6 B。7 C.8 D。9 7 以下能将字符串“good!”正确地存放在字符数组 s 中,或使指针 s 能指向这个字符串的是_D_。A。char s4=g,o,o,d,!;B.char s5;s=“good!”;C.int s5=“good!”;D.char s;s=“good!”;共 9 页 第 1 页 江 苏 大 学 试 题第 2 页 8 设有说明:union data int i;float f;struct int x;char y;s;double d;a;则变量 a 在内存中所占字节数为_A_。A。8B。17 C。9 D.15 9 设已有非空文本数据文件 filel.dat,要求能读出文件中原有的全部数据,并在文件原有数据之后添加新数据,则用 FILE*fp=fopen(”file1。dat”,D)打开该文件。A。”wB。”w+”C。r+D.a+”10 以下关于 if 语句的错误描述是 B.A。条件表达式可以是任意表达式 B.条件表达式只能是关系表达式或逻辑表达式 C.条件表达式的括号不可以省略 D.与 else 配对的 if 语句是其之前最近的未配对的 if 语句 11 在以下不致造成死循环的语句是:A.A。for(y=0,x=1;x+y;x=i+)i=x;B。for(;x+=i);C.while(x=8)x-;D.for(i=10,sum=0;sum=i;)sum=-i;12 设有定义:“float y=3.45678;int x;”,则以下表达式中能实现将 y 中数值保留小数点后 2 位,第 3 位四舍五入的表达式是:B。A。y=(y*100+0。5)/100。0 B.x=y100+0.5,y=x/100.0 C。y=y*100+0。5/100.0 D。y=(y/100+0.5)*100.0 13 以下程序段输出结果是:C。int a=10,b=11,c=12,s;s=a+=10&b-=2&c+;printf(“d,%d,%d,%d”,s,a,b,c);A.0,11,10,13 B.1,11,10,13 C。0,11,10,12 D。1,11,10,12 14 设有“char s=“Program”,*p=s;”,则以下叙述中正确的是:C.A.数组 s 的内容与指针变量 p 中内容相同 B.数组 s 的长度与 strlen(p)的值相等 C.p5的值等于 s5的值 D。sizeof(s)等于 sizeof(*p)15 下列程序段执行后变量 j 的值是:B.int j;char s=”x045”;for(j=0;s+;j+);江 苏 大 学 试 题 第 3 页 A。7 B.3 C.4 D.5 16 若有定义语句“static char str420=thank,you,”very,”much!”;”则 str 数组中存储0的数组元素有:D 个。A.0 B。17 C.21 D。63 17 下列正确的声明说明语句是 D。A.float m=15,n=4,q=mn;B.int n=10,yn;C.char p2=DOS,WINDOWS”;D.char*p=DOS,”WINDOWS”,UNIX;18 设有函数 f 的定义如下:void f(int x,int y)y=xxx;main()int j,c4=1,2,3,4,s4=0;for(j=0;j4;j+)/调用 f 函数 printf(“d”,sj);若在 main 函数中欲调用函数 f,则正确的调用语句是_C_。A.f(c,s);B.f(ci,si);C。f(c+i),si);D.f(c+i,s+i);19 执行以下程序段后,x,w 的值为_C_。int x=0,y=1,z=2,w;if(x+)w=x;else if(x+&y=1)w=y;else if(x+&z1)w=z;A。0,1 B.1,1 C。2,1 D。3,2 20 已知有声明语句“int a5=1,2,3,4,5,*p,i;”,以下语句中不能正确输出 a 数组全部元素值的是_C_。A for(p=a,i=0;i5;i+)printf(”d”,*(p+i));B for(p=a;pa+5;p+)printf(”%d”,p);C for(p=a,i=0;pa+5;p+,i+)printf(%d”,pi);D for(p=a;p=f=m 30 以下程序运行后的输出结果是:_B_ A。2 2 B.7 2 C.7 5 D。6 2 main()char a7=”a00a00”;int i,j;i=sizeof(a);j=strlen(a);printf(%d d”,i,j);江 苏 大 学 试 题 第 5 页 二、填空题(40 分)(每空 2 分,请涂写在答题卡上)1 设有说明“int j=5,m=2,k=7,n;,则执行语句“n+=m*=n=jk;”后,n 和 m 的值分别为 _B_ 和_C_.31。A。75 B.105 C。120 D。130 32。A。30 B。50 C.70 D.90 2 以下程序运行时输出结果是_A_.include stdio。h main()char a=256;int d=a;printf(%d”,d+1);33.A.1 B。257 C.0 D。1 3 下列程序的程序输出的第一行是_A,第二行_B,第三行_B.includestdio.h main()int a=1,b=2,x1,x2,x3;x1=add(a,b);x2=add(add(a,b),b);x3=add(a,b);printf(“dn%dn%dn”,x1,x2,x3);int add(int x,int y)static int z=1;z=x+y+z;return(z);34。A。4B.5C。6D。7 35。A。14B.16C。18 D。20 36。A。17 B.19C。21 D.23 4 以下程序运行时输出结果的第一行是 C,第二行是 D,第三行是 C。int c=0;void fl(int x,int*sum)int y=0;x+;y+;c=c+y;sum=(x+y)/c;main()int a,b=100;for(a=0;az)swap(y,z);printf(“dt%dt%dn”,x,y,z);47。A.0 B.12 C.15 D。20 48.A.0 B.12 C。15 D.20 49.A。0 B。12 C.15 D.20 9 若有函数定义:int f()int x=4,y=3,z=2;return x,y,z;则调用函数 f 后的返回值是 D.50。A.4,3,2 B。4 C。3 D。2 一、完善程序题(30 分,每空 2 分,请涂写在答题卡上)1、用递推法计算某一级数的近似值,直到 n 取一值使得:|x(2n+1)/n!1e6 为止.级数如下:x-x3/(31!)+x5/(52!)-x7/(73!)+。+x(2n+1)/((2n+1)n!)+.#include float g(float x)float t=x,sum=t,s=1;int n=0;while(A1e6)n+;s=-s;t=tC;sum=sum+st/B;return sum;main()float x;scanf(“%f”,x);printf(“s=f”,g(x);51.A。fabs(t)B.fabs(n)C。sum D。n 江 苏 大 学 试 题 第 8 页 52。A。x*x B.xx/(n+1)C。xx/n D。xx/(2*n+1)53。A。n(2*n+1)B。(2*n+1)C。n*(2*n-1)D.n*2*(n+1)2、输入一个不包含空格的字符串,判断输入的字符串是否为回文,是回文则输出“Right!,不是则输出“Wrong!”。回文是相对于中心左右对称的字符串.如:字符串“abcba”和“abddba”是回文,而字符串“abcAa”不是回文。#include int f(char p)char*p1,*p2;p1=p2=p;while(*p2+);B;while(C)if(B)return 0;p1+;p2-;return 1;main()char s200;printf(“please input the string);scanf(“s”,s);if(_ D_)printf(“Right!”);else printf(“Wrong!”);54.A.p2=p22 B.p2=p2-1 C.p2=p2+1 D.p2=p2+2 55.A.p1=p2 B。p1p2 C.p1=p2 D.p1p2 56。A.p1=p2 B。p1!=p2 C.p1p2 D.p1p2 57。A.si!=0 B。si=0 C。f(s)=0 D.f(s)3.以下程序实现将 a 数组中后 8 个元素用递归的方法进行从大到小排序的功能。void sort(int x,int n);main()int a12=5,3,7,4,2,9,8,32,54,21,6,43,k;sort(_C_,8);for(k=0;k12;k+)printf(%d,ak);void sort(int*x,int n)int j,t;if(n=1)return;for(j=_A_;jxn D。x0 xn 61。A.n1 B.n C.n+1 D。n+8 4设链表上结点的数据结构定义如下:struct node int x;struct node next;;假设已经建立了一个链表,h 为链首指针。函数 deladd 的功能是:若链表上能找到结点的 x 值为 value,则从链表上删除该结点(假定链表上的各个结点的值是不同的);否则构造一个新结点,其 x 值为 value,并将新结点插入链尾。该函数要求返回新链表的首指针。struct node deladd(struct node*h,int value)struct node p1,*p2;int flag=0;p1=p2=h;while(p1&flag=0)if(p1-x=value)flag=1;if(p1=h)h=A;free(p1);else p2next=A;free(p1);else p2=p1;p1=A;if(flag=0)p1=(struct node)malloc(sizeof(struct node);p1-x=value;p1-next=0;if(h=0)h=p1;else B;return h;62.A。p1next B。p2next C。p1 D.p2 63.A。p1next B.p2next C。h D。p2 64.A.p1next B。p2-next C。p2 D.NULL 65.A。p1next=p1 B.p2-next=p1 C.p1 next=NULL D。p2 next=NULL