浙江科技学院c语言历年试卷.docx
遇浙江科技学院2010-2011学年第2学期考试试卷A卷考试科目C语言程序设计考试方式闭完成时限2小时拟题人题库审核人批准人2011年6月25日建工、生化、艺术、轻工、理学学院2010年级理工科专业即序二三四五总分加分人复核人得分霆名命题:1.应将全部答案写在答卷纸对应的题号处;否则作无效处理;2.编程题应写明题号,若答卷纸不够,请写在背面,不要另添卷纸;3.考试完成后,必须将试卷与答卷同时交回Il一、判断题(本大题共12小题,每题小1分,共12分)1.在定义数组时,数组的长度可以用整型常量或者整型变量表示。2.执行"intx=3,y=4;floatz;Z=XZy;"后,Z的值为0.75.3.C语言中,关系表达式的值是1和0,分别表示"真"和"假,4.else语句一定要与it语句配对使用,程序中else语句的个数一定小于或者等于if语句的个数。5.C语言是一种结构化程序设计语言.结构化程序由顺序、选择、循环三种基本结构组成。6.函数中可以使用多个return语句,也可以没有return语句.如果使用多个return语句可以向主函数返回多个值。7.使用%”方式打开一个已经存在的文本文件,将在该文件原有数据的基础上添加新的数据。8.定义语句“chars=-Hell<"和“chars=,J,,eT,T,“;”定义的两个字符数组是等价的。9.调用函数时,若实参是一个数组名,则向函数传送的是数组的首地址。10.使用d。.WhiIe语句实现循环时,不管条件真假,都将首先无条件的执行一次循环.11.假定int类型变量占用两个字节,若有定义:intx10=0,2,4;,则数组X在内存中所占字节数是6.12.语句"c=*p+"的执行过程是P所指向的存储单元的值赋值给变量c,然后P变量自增.A. l3*sin(l2)*sin(l2)C.p。W(Sin(0.5 ),2 )/34.下列语句执行后,变量n的值是 for(i=l;iv=3;i+) n=l;n=n*i;A. 1B. 35.对下列语句的描述正确的是(int i=l;doi+;)while(i=10);A.执行后i的值是1C.执行后i的值是106.能正确表示逻辑关系"a=10或A. a>=10 or a<=0B. sin(0.5)*sin(0.5)3D.1/3.0 奉 POW(Sin(1.0/2)Z)oC. 4D6B.执行后i的值是2D.死循环的C语言表达式是().B. a>=0a<=10二、单选题(本大题共20小题,每题1分,共20分)1.一个C程序总是从()开始执行。A.书写顺序的第一个函数B.书写顺序的第一条执行语句C.主函数main()D.不确定2.程序设计一般包含以下4个步骤,其中首先应该完成的是().A.设计数据结构和算法B.建立数学模型C.编写程序D.调试运行程序3.以下不能正确计算代数式陋竺工值的C语言表达式是().C.a>=10&&a<=0D.a>=10a<=07.设a、b、c、d、m、n均为int型变量,且a=5、b=6、C=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(II=C>d)运算后,n的值为()。A.0B1C2D.语法错误8.下列程序段不用死循环的是().A. int i=100;wlile(l) i=i% 1OO+1;if(i>100)break;C. for(;);9. 已知 intx=10,y=20,z=30;, if (>y) z=; =y; y=z;A. x=10, y=20, z=30C. x=20, y=30, z=1010.请阅读以下程序:#include <stdio.h>B. int k=0;do+k; while(k>=0):D int s=36;while(s) -s;以下语句执行后X、y、Z的值是(B.x=20, y=30, z=30D. x=20, y=30, z=20voidmain()floata.b;scanf(%a);if(a<O.O)b=0.0;elseif(a<5.0)&&(a!=2.0)b=l0(a+20);elseif(a<10.0)b=1.0a;elseb=l(三);Printfr'%fn",b);若运行时输入2.0<回车>,则上面程序的输出结果是()A.O.(KMMMM)B.0.500000C.1.000000D.0.25000011.有以下程序段:intn=O,p;doscanf(H%dM,&p);n+;|while(p!=12345&&n<3);此处do-while循环的结束条件是()。A.P的值不等于12345并且n的值小于3B.p的值等于12345并且n的值大于等于3C.P的值不等于12345或者n的值小于3D.P的值等于12345或者n的值大于等于312.若有如下定义,则下面在SCanf函数调用语句中对结构体成员的引用不无砸趣是().structpupilcharname20;intage;intsex;pup5p;A.SCanf(''%d'p.age);B.scanf(%s,pupO.name);C.SCanf(”%d'',&pupOage);D.SCanf(”%(!'',&(PIIPlsex);13.有如下数组定义语句“inta23=l,2,3,4,5,6;”,贝>(a+l)+2的值是().A.2B.6C.元素2的地址D.元素6的地址14.执行以下程序后,输出结果是().main()inta10=12,3,4,5,6,7,8,9,0Jp;P=a;printf(u%d",*p);Printf(44%dn",*(p+8);)A.1OB.17C18D1915.有如下程序,执行后的输出结果是()。#defmeM3#detmeNM+l#def1neNNN*N2main。Printf(“dn”,NN);)A.3B.4C.6D816.设x,y,i,j均为整型变量,且X=IO,y=3,则执行i=x-;j=-y:语句后,i和J的值是A.1O>3B9,3C.9,2DIO9217.下面程序的输出结果为()。voidmainOchar*p;chars=mABCDh;for(p=s;p<s+4;p+)printf(*%sn'p);A.ABCDBACDD.ABCDBCDBCABCCDCBABDDAA18.表达式"strcmp("Wind<>ws98","Windows95")"的值为()。A,0B.大于0C.小于0D.无法比较19.返回值为Void的函数,其含义是(A.调用函数之后,被调用的函数没有返回值B.调用函数之后,被调用的函数不返回C.调用函数之后,被调用的函数返回值为任意类型D.以上三种说法均不正确20.求0到50的总和,不正碰的程序段是().A.inti,sum;B.inti4sum;sum=0;fbr(i=0;um=0;i<51;sum+=i+);for(i=0;i<51;i+)sum+=i;C.inti,sum;D.inti,sum=0;i=0;sum=0;for(i=0;i+)for(i<51)sum+=i;i+;if(i>50)break;sum+=i;三、程序填空题(本大题共4小题,每空2分,共24分)1.以下程序的功能是计算,s=l+12+123+1234+12345。请填空.#include<stciio.h>voidmain()intt=O,s,i;(1)for(i=l;i<=5;i+)t=i+(2)s=s+t;PrilltfcS=%d,s);B. s=lD. int n=lB. IrMODt(1)A.s=0C.intn=0(2)A.nC.#102.下面程序是从健盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。#include<stdio.h>voidnain()longintnum;do(scanf(M%ld"9&num);if(3)printf(°num=%ldnH,num);while(._¢4)_);(3)A.num%100/10=3B.num100%10=3C.num%10/10=3D.num10%10=3(4)A.!numB.num=0C.numD.num=三l3.函数fun实现把数字字符从源字符串中删除,其余字符保持原样。voidfun(chars)i11ti=0J;while()if(si>='0'&&si<='9')for(j=i5sj!=,W;+)(6);elsei+;(5)A. s=0B. si<,0,C.si!=O,D.si=O,(6)A.sU-U=sB.sj=sj-lC.sj+l=sD.s=sj+l若m为素数则返4.输出50到70之间的所有素数,其中函数isprime(m)用于判断m是否为素数,回1,否则返回0。素数就是只能被1和自身整除的正整数。请填空。#include<stdio.h>#include<math.h>main。inti;intisprime(intn);for(i=50;i<=70;i+)i11(7)printf(n%dZi);intisprime(intn)inti,k;k=(int)sqrt(double);for(i=2;i<=k;i+)i(m%i=0)(8).(9);(7)A.isprime(m)!=0B.isprime(i)!=0Cisprime(m)=0D.isprime(i)=0(8)A.return0B.return1Creturni<=kD.return(9)A.returnB.return0Creturn1D.returni<=k5.下列程序中f函数用于在锥表中查找最高分.请填空。structnode/*结点定义*/intnum;/*学号*/intsco