吉林大学远程教育学院2013年C语言程序设计练习题B
吉林大学远程教育学院2013年《计算机原理及系统结构》试题B答案
《计算机原理及系统结构》练习题B答案一、单项选择(每小题有四个备选答案,只有一个是正确的)1. B2. C3. A4. B5. A二、填空1.对阶,向右规格化2.磁表面存储器,半导体存储器3.图象分辨率,灰度级4.先进后出、存储器5. 8,4三、简答1:二级存储体系是计算机系统中最简单的存储体系,它是利用软、硬件控制将主存与辅存有机地组成一个整体。
在二级存储体系中,主存是与计算机各部件进行数据交换的主要设备,辅存作为主存的后援系统用来弥补主存容量不足的缺陷。
辅存中存放的是暂时不用的和主存中容纳不下的程序和数据。
辅存中的信息不能被CPU直接访问,必须通过调入主存中才能被计算机的其他部件使用。
一般有两种途径允许CPU运行辅存中存放的程序:一是当主存能够容纳下整个程序及所需数据时,将要使用的程序从辅存调入主存之中,然后由CPU控制运行;二是当主存容量不能容纳整个程序时,由程序员或将程序分成与主存大小相匹配的几段,由程序员按需要控制各段程序的运行顺序,在执行时依次调入主存运行。
在二级存储体系中,主存是直接为 CPU提供现行程序和数据的存储器,它必须拥有与CPU相近的工作速度,才能保证整个计算机系统运算速度的提高,它的容量在保证计算机正常运行的情况下尽可能大。
辅存做为主存的后备系统,必须具有容量大、价格低的特点。
2.答:CISC是复杂指令系统计算机的英文缩写。
其特点是:(1)指令系统复杂庞大,指令数目一般多达2、3百条。
(2)寻址方式多(3)指令格式多(4)指令字长不固定(5)可访存指令不加限制(6)各种指令使用频率相差很大(7)各种指令执行时间相差很大(8)大多数采用微程序控制器3.答:指令周期是指取出并执行一条指令的时间,指令周期常常用若干个CPU周期数来表示,CPU周期也称为机器周期,而一个CPU周期又包含若干个时钟周期(也称为节拍脉冲或T周期)。
4.答:Huffman压缩概念的基本思想是:当各种事件发生概率不均等时,采用优化技术对发生概率最高的事件用最短的位数来表示,而对发生概率较低的事件,允许用较长的位数来表示。
C语言程序设计吉大直属课程机考复习题库及答案
C语言程序设计吉大直属课程机考复习题库及答案1:根据定义和数据的输入方式,输入语句的正确形式为( )。
已有定义:float f1,f2;数据的输入方式:4.523.51.scanf(“%f,%f”,&f1,&f2);2.scanf(“%f%f”,&f1,&f2);3.scanf(“%3.2f%2.1f”,&f1,&f2);4.scanf(“%3.2f,%2.1f”,&f1,&f2);2:判断char型变量ch是否为大写字母的正确表达式是( ).1.’A’<=ch<=’Z’2.(cb>=’A’)&(ch<=’Z’)3.(ch>=’A’)&&(ch<=’Z’)4.(‘A’<=ch)AND(‘Z’>=ch)3:若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
1.22.33.44.无确定值4:有以下定义和语句,则以下引用形式不合法的是( )。
Struct s{int i1;struct s*i2,i0;};static struct sa[3 ]={2,&a[1],’\0’,4,%a[2],&a[0],6,’\0’,&a[1]}, *ptr;ptr=a;1.ptr->i1++2.*ptr->i23.++ptr->i04.ptr->i15:以下结果为整数的表达式(设有int i;char c;float f;)( ).1.i十f2.i*c3.c十f4.i十c十f6:fwrite函数的一般调用形式是( )。
1.fwrite(buffer,count,size,fp) ;2.fwrite(fp,size,count,buffer) ;3.fwrite(fp,count,size,buffer) ;4.fwrite(buffer,size,count,fp) ;7:下面四个选项中,均是不合法转义字符的选项是( ).1.’\”’‘\\’‘\xf’2.’\1011’‘\’‘\a’3.’\011’‘\f’‘\}’4.’\abc’‘\101’‘x1f’8:若有说明:int a[][4]={0,0};则下面正确的叙述是()。
吉林大学网络教育面向对象程序设计练习题B期末考试复习题
面向对象程序设计练习题B
一、填空
1.语句const int * p将p定义成。
2.由类构建对象的过程称为。
3.含有纯虚函数的类是。
4.实现软件复用有两种方式,分别为、、。
5.处理程序执行错误的机制称为。
6.对象的初始化可以在类的中进行。
7.A::s中A可能是⒀或者的语法成分。
8. 方法重载和实现了多态性。
9. new和malloc函数的主要区别是。
10. 给出构造函数参数列表三个用途是、、。
11. 系统提供的成员函数中指向当前对象的指针是。
二、名词解释
1、构造函数
2、对象
3、运算符重载
4、析构函数
5、组合
三、简答
1.比较类和结构体?
2.重载的意义?
3.抽象类的作用和意义?
4.组合与继承的区别?
四、辩析
1.任何父类对象都可以被子类对象替代。
2.public修饰符号破坏了数据的开放性。
3.private继承方式不能产生子类。
4.不能实例化的类一定是抽象类。
五、综合回答
1.简述多态的实现机制。
2.谈谈多态的意义。
3.面向对象程序设计思想的优点和缺点。
吉林大学远程教育学院2013年《计算机原理及系统结构》试题C答案
《计算机原理及系统结构》C答案一、单项选择(每小题有四个备选答案,只有一个是正确的)1. B2. D3. B4. D5. C二、填空题1.双总线结构运算器2.存储微程序的控制存储器3.总线、I/O设备(或输入输出设备)4.计算机系统结构,计算机组成5.机器语言,软件移植6.吞吐率、加速比、效率三、简答题1.答:1、计算机硬件系统五大功能部件包括:运算器、控制器,存储器,输入设备、输出设备,这些设备和部件通过总线和接口连结在一起,构成一台完整的计算机。
运算器部件是计算机中进行数据加工的部件。
控制器是计算机中控制执行指令的部件,向计算机各功能部件提供每一时刻协同运行所需要的控制信号。
存储器系统是计算机中用于存储程序和数据的部件。
输入设备是向计算机中送入程序和数据的具有一定独立功能的设备,通过接口和总线与计算机主机连通,用于人机交互联系,如计算机键盘和鼠标等。
输出设备是计算机中用于送出计算机内部信息的设备,例如打印机、显示器等。
2.答:首先需要明确参加运算的数据来源,运算结果的去向。
运算器能直接运算的数据,通常来自于运算器本身的寄存器。
这里有3个概念。
一是这些寄存器的数量为几个、十几个、一百多个不等,它们能最快速地提供参加运算的数据,需要有办法指定使用哪1个或2个寄存器的内容参加运算。
二是这些寄存器还能接收数据运算的结果,需要有办法指定让哪1个寄存器来接收数据运算的结果。
三是在时间关系上,什么时刻送出数据去参加运算,什么时刻才能正确地接收数据运算的结果,这些内容在下图有示意性表示。
请注意,这些寄存器本身是暂存数据用的,是由触发器构成的时序逻辑电路。
其次需要明确将要执行的运算功能,是对数值数据的算术运算功能,哪一种算术运算,还是对逻辑数据的逻辑运算功能,哪一种逻辑运算。
另外一个问题是,运算器完成一次数据运算过程由多个时间段组成,其时序关系示意表示在下图。
请注意,完成数据运算功能的线路是组合逻辑电路。
最后还要说明,运算器部件只有和计算机的其他部件连接起来才能协同完成指令的执行过程,就是说,运算器需要有办法接收其他部件(例如内存储器或者计算机的输入设备)送来的数据,才能源源不断地得到参加运算的数据来源;运算器还需要有办法送出它的运算结果到其他部件(例如内存储器或者计算机的输出设备),才能体现出它的运算处理效能和使用价值,这些内容在下图有示意性表示。
吉林大学《程序设计基础》历年试题及答案
2011-2012学年第1学期2008级《高级语言程序设计》重修考试试题(B卷)考试时间:2012年04月班级学号姓名✧请将答案写在答题纸上,写清题号,不必抄题,字迹工整、清晰;✧答题纸和试题纸上都写上班级、学号和姓名,交卷时将试题纸、答题纸和草纸一并交上来。
✧每个题目不必给出对应的PAD图,但要添加必要的注释,程序命名和书写要规范。
一、[20分] 编写函数,实现按照如下公式计算的功能。
f(n)=0/(1*2!)+1/(2*3!)+2/(3*4!)+3/(4*5!)+…+n/((n+1)*(n+2)!),其中n为自然数。
二、[20分] 编写bool函数,判断给定的整数数组a[n]中是否存在元素a[i] (0<i<n),等于其前边的所有元素之和,即a[i]=a[0]+a[1]+…+a[i-1]。
三、[20分] 编写一个递归函数,计算组成给定正整数n的所有数字之和。
例如:输入参数为1035,则返回结果应该为9(通过1+0+3+5=9得到)。
四、[20分] 构造一个表示教师的结构体(包含3个字段:姓名、性别、年龄),编写函数,读入M个教师的信息,存入一个结构体数组中,如下图所示。
张三李四赵九男(true) 女(false) … 男(true)50 37 29图1 管理教师信息的结构体数组例如:一个教师的信息为Zhangsan、true、50,另一个教师的信息为Lisi、false、37。
五、[20分] 设有一个保存教师信息的单链表(每个结点包含4个字段:姓名、性别、年龄、后继指针),如下图所示。
构造该链表中一节的数据类型声明;编写函数,在给定链表上查找所有女教师的信息,并存储到指定文件output.txt中。
图2 管理教师信息的单链表第 1 页共 1 页2011-2012学年第1学期2008级《高级语言程序设计》重修考试试题(B卷)答案及评分标准考试时间:2012年4月一、满分20分。
int fac(int n)//阶乘函数1:循环形式(10分){int i,r=1;for(i=1;i<=n;i++)r=r*i;return r;}int fac(int n)//阶乘函数2:递归形式(10分){if(n==0)return 1;return n*fac(n-1);}//利用阶乘函数的计算函数(10分)float f(int n){float f=0;for(int i=0;i<=n;i++){f=f+i*1.0/((i+1)*fac(i+2));}return f;}参考要点:阶乘函数(10分);累加计算功能(10分)。
2013 c语言试题及答案
理论考试(120分钟)一、单项选择题(在每小题的4个备选答案中,选出一个最佳答案,共15小题;每小题2分,共30分)1.一个C程序的执行是从( A)A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2.已知int x=10,y=20,z=30; 以下语句执行后x,y,z的值是( B) if (x>y) z=x; x=y;y=z;A. 10,20,30B. 20,30,30C. 20,30,10D. 20,30,20 3.int a=1,b=2,x=3; 表达式:x*=a+b计算后x的值为:( B )A. 5B. 9C. 3D. 64.下列选项,在C语言中能作为合法标识符的是( D)A. %xB. a+bC. 2_int_12_D. int_2_5.#include<stdio.h> (A)void main(){int sum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf("%d %d\n",pad, sum);}A.7 6B. 6 5C. 7 5D. 6 6 6.若有说明:int a[10];则对a 数组元素的正确引用是( D )A. a[10]B. a[3, 5]C. a(5)D. a[10-10] 7.请读程序#include<stdio.h>#define MUL(x,y) (x)*yvoid main(){ int a=3, b=4, c;c=MUL(a++, b++);printf("%d\n", c);}上面程序的输出结果是(A)。
A. 12B. 15C. 20D. 168.若用数组名作为函数调用的实参,传递给形参的是数组的( A )A. 数组的首地址B. 数组第一个元素的值C. 数组中全部元素的值D. 数组元素的个数9.阅读以下程序void main(){ int a=5,b=0,c=1;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}以上程序( C)A. 语法有错不能通过编译B. 可以通过编译但不能通过连接C. 输出***D. 输出$$$10.下列关于函数定义正确的是( D )A. fun(int x,y){ int z;return z;}B. void fun(int x,int y){ return x+y;}C. fun(x,y){int x,y;double z;z=x+y;return z;}D. double fun(int x,int y) { double z;z=x+y;return z;}11.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B )A. 地址传递B. 单向值传递C. 由实参传给形参,再由形参传回实参D. 传递方式由用户指定12.具有相同基类型的指针变量P和数组Y,下列写法中不合法的是( D ) A.P = Y B.*P = Y[i]C.P = &Y[i] D.P = &Y13.设x和y均为int型变量,则下列语句:x+=y; y=x-y; x- =y;的功能是(D ) A.把x和y按从大到小排列。
2013年C语言考题[B]-解答
}
输出结果是:6
9
#include <stdio.h>
int A=2,B=3;
void dblA(){A*=2;}
void dblB(){int B=5;B*=2;}
void main(){
dblA();dblB();
printf("%d,%d\n",A,B);
}
输出结果是:4,3
A.1 B.0 C.10 D.9
(D) 19.有说明语句struct stu{ int age,no;} st,sa[10];下面哪个语句是正确的。
A.st=20 B.st[5]=20 C.sa.age[5]=20 D.sa[5].age=20
(A) 20.定义int a[10],*p;则下面正确的表达式是
(A) 17.char a;int b; float c;double d下面哪个语句是正确的的
A.switch(a){…} B.switch(sin(b)){…}
C.switch(c){…} D.switch(d){…}
(B) 18.for(i=0;i<10;i++){break;}执行完后i的值是
10
#include <stdio.h>
int f(){
int a=1;
static int b=1;
return a++ + b++;
}
void main(){
printf("%d\n",f()+f());
}
输出结果是:5
得分
阅卷人
1253《C语言程序设计》电大期末精彩试题及其问题详解
《C语言程序设计》期末综合练习题模拟试题一一、单选题1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(A)。
A. mainB. MAINC. nameD. function2.每个C语言程序文件的编译错误分为(B)类。
A. 1B. 2C. 3D. 43.字符串"a+b=12\n"的长度为(B)。
A. 6B. 7C. 8D. 94.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为(D)语句。
A. forB. whileC. doD. if5.在下面的do-while循环语句中,其循环体语句被执行的次数为(C)。
int i=0; do i++; while(i<10);A. 8B. 9C. 10D. 116.将两个字符串连接起来组成一个字符串时,选用的字符串函数为(C)。
A. strlen( )B. strcpy( )C. strcat( )D. strcmp( )7.若用数组名作为函数调用的实参,传递给形参的是(A)。
A. 数组的首地址B. 数组中第一个元素的值C. 数组中全部元素的值D. 数组元素的个数8.假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大(C)个字节。
A. 4B. 8C. 16D. 329.假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为(A)。
A. char *p=sB. char *p=&sC. char *p;p=*sD. char *p; p=&s10.从一个数据文件中读入以换行符结束的一行字符串的函数为(B)。
A. gets( )B. fgets( )C. getc( )D. fgetc( )二、填空题1.执行“printf("%c",'A'+2);”语句后得到的输出结果为(C)。
吉林大学历年C语言程序设计试题及答案
吉林大学历年C语言程序设计试题及答案(4)98年试题答案(辅导班讲义)二。
(1)解题思想:用p,q,k分别纪录A,B,C,三个数组正在访问的位置。
如果,A[P] <=B[q],那么将A[P]赋给c[k].否则,将B[q]赋给C[k].如果A先访问完,把B的剩余部分复制到C中。
同样,如果B先访问完,把A的剩余部分复制到C中。
设计函数如下:Void fun (int a[],int b[],int c[]){ int i,p=0,q=0,k=0;while((p <=m-1)&&(q <=n-1)){ if(a[p] <=b[q]) {c[k]=a[p]; p++;}else { c[k]=b[q]; q++;}k++; }if(p==m) {for(i=q;i <=n-1;i++) { c[k]=b; k++;}}if(q==n) {for(i=p;i <=n-1;i++) { c[k]=a; k++;}}}(2)解题思想:从数组的第一个元素a[0]开始访问,用一个变量p来纪录当前平台的整数值,用length纪录最长平台的长度,用counter动态纪录每一个平台的长度。
如果某一个平台访问完以后counter >length则修改l ength.设计函数如下:int fun(int a[],int n){ int length=1,counter=1;int p=a[0];for(int k=1;k<n;K++) {if(a[k]==p) counter++;else {p=a[k];if(length <counter) length=counter;counter=1; }}if(length <counter) length=counter;return length;}(3)解题思想:从数组的第一个元素a[0]开始访问,每访问到一个零,则从后面找到一个非零元素与其交换。
吉林大学网络教育C语言程序设计练习题A期末考试复习题
选择题1.以下不正确的C语言标识符是( )。
A.ABC B.abc C.a_bc D .ab.c2.以下不正确的语句(设有int p,q)是( )。
A.P*=3; B.p/=q; C.p十=3; D.p&&=q3.下面四个选项中,均是合法整形常量的选项是( ).A.160B.-0xcdfC.-01D.-0x48a-0xffff 01a 986,012 2e5011 0xe0668 0x4. 若有代数式3ae/bc,则不正确的C语言表达式是( )A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*35.若有定义:int a=7; float x=205 ,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( )。
A.2.500000B.2.750000C.3.500000D.0.0000006. 设int n=3;则n十十的结果是( )。
A.2B.3C.4D.57. 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( ).A. scanf(“%d%d1x,%1e”,&x,&y,&z);B. scanf(“%2d*%d%1f”,&x,&y,&z);C. scanf(“%x%*d%o”,&x,&Y);D. scanf(“%x%o%6.2f”, &x,&y,&z);8. 以下程序的执行结果是( )。
#include<stdio.h>main(){int sum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf("%d\n",pad);}A.7B.6C.5D.49. 为了避免嵌套的if-else语句的二义性,c语言规定else总是与( )组成配对关系。
A.缩排位置相同的ifB.在其之前末配对的ifC.在其之前未配对的最近的ifD.同一行上的if10. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( ).A.’x’&&’y’B.x<=yC. x||y+z&&y-zD.!((x<y=&&!z ||1=11. 以下不正确的if语句形式是( ).A.if(x>y&&x!=y);B.if(x==y)x十=y;C.if(x ! =y)scanf(“%d”,&x) e1se scanf(”%d,&y);D.if(x<y={x++;y++;}12. 阅读以下程序main(){int a=5,b=0,c=0;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}以上程序 ( ).A.语法有错不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$13. 执行以下程序段后,变量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=9B.a=8,b=8,c=10C.a=9,b=10,c=9D.a=1,b=11,c=1014. 语句while(!e);中的条件!e等价于( )。
吉大《C语言程序设计》在线作业一答卷
吉大17秋学期《C语言程序设计》在线作业一-0002试卷总分:100 得分:100一、单选题(共10 道试题,共40 分)1.有以下程序:#include union pw { int i; char ch[2];}a; main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);} 程序的输出结果是A.13B.14C.208D.209本题结果:A2.假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCDEFGH IJKL<回车>,则输出结果为main(int argc, char *argv[]){ while(--argc>0)printf("%s",argv[argc]); printf("\n"); }A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH本题结果:D3.设有以下说明语句struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是A.struct结构体类型的关键字B.example是结构体类型名C.x,y,z都是结构体成员名D.struct ex是结构体类型名本题结果:B4.设有int x=11;则表达式(x++*1/3)的值是A.3B.4C.11D.12本题结果:A5.请选出可用作C语言用户标识符的是A.void,define,WORDB.a3_b3,_123,IFC.FOR,--abc,CaseD.2a,Do,Sizeof本题结果:B6.C语言允许函数类型缺省定义,此时函数值隐含的类型是A.float。
吉林大学2013级C#期末试题(答案)
2015-2016学年第1学期2013级《C#程序设计(双语)》期末考试试题(A卷)答案及评分标准考试时间:2015年10月一、满分25分。
主要不同点包括:类型、多继承、指针与安全性、装箱与拆箱等类型转换、委托与安全性等,必须包含简要分析。
The difference of C# and C:a) Integer types. In C#, an int is always a 32-bit signed integer. In C an int is a signed integer, but the number of bits is platform-dependent.b) While C# uses the idea at a property, C does not have that.c) In C# and C, structs are value types, not reference types and they do not support inheritance.二、满分25分。
(1)基类及其构造函数(10分)class Parent{private string name;public int age;public Parent(name){=name;}public Parent(int age, string name){this.age=age;=name;}}(2)派生类及其构造函数(10分)class Child: Parent{public string sex;public Child(string sex){this.sex=sex;}public Child(string sex, string name):base(name){this.sex=sex;}public Child(int age, string sex, string name): base(age, name){this.sex=sex;}}(3)请自行设计构造函数的实例,需要详细说明构造函数的调用和执行次序,以及字段的初始化顺序(5分)三、满分25分。
吉林大学C语言题库
Addbc cabdb cbddc dbbdb adbcb bbcca baaaa bcacc/*------------------------------------------------------- 【程序填空】---------------------------------------------------------功能:功能:定义一个结构变量(包括年、月、日)计算给定日期是该年的第几天。
-------------------------------------------------------*/ #include <stdio.h>#include <stdlib.h>main(){/***********SPACE***********/【?】 date{int y,m,d;}da;int f,n,p,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};printf("y,m,d=");scanf("%d,%d,%d",&da.y,&da.m,&da.d);/***********SPACE***********/f=da.y%4==0&&da.y%100【?】0||da.y%400==0;/***********SPACE***********/if(da.m<1【?】da.d>12) exit(0);a[11]+=f;if(da.d<1||da.d>a[da.m-1]) exit(0);/***********SPACE***********/for(n=【?】,p=1;p<da.m;p++)n+=a[p-1];printf("n=%d\n",n);}/*-------------------------------------------------------【程序改错】---------------------------------------------------------题目:下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。
word版,2013级C语言复习题(20题)答案
函数+指针+构造体(20题)1)编写函数voidchangeStr(char*s),其功能是将s指向的字符串中的所有小写字母变换成相应的大写字母、所有大写字母变换成小写字母、非字母字符不变。
#include<stdio.h>#include<stdlib.h>#include<string.h>voidchangeStr(char*s){/*错误典范while(*s){if(*s>='a'&&*s<='z')*s-=32;if(*s>='A'&&*s<='Z')*s+=32;++s;}*/char*p=s;while(*p){if(*p>='a'&&*p<='z')*p-=32;elseif(*p>='A'&&*p<='Z')*p+=32;++p;}}intmain(){intn;char*ch=(char*)malloc(100*sizeof(char));gets(ch);changeStr(ch);puts(ch);free(ch);return0;}2)编写函数voidfactor(intx,int*p,int*n),其功能是求解整数x的因子,将这些因子寄存到p指向的数组中,并将因子的个数储存到n指向的变量中。
提示:整数24的因子为2,4,6,8,12,24。
#include<stdio.h>#include<string.h>#include<stdlib.h>voidfactor(intx,int*p,int*n){inti,j;j=0;for(i=2;i<=x;i+=2){if(x%i==0){p[j++]=i;*n=j;}}}intmain(){intn,x;inti;int*p=(int*)malloc(50*sizeof(int));printf("请输入一个数");scanf("%d",&x);factor(x,p,&n);printf("因子的个数为:%d\n",n);for(i=0;i<n;i++)printf("%d",p[i]);printf("\n");free(p);return0;}(3)编写函数intsum(inta[],intn,intres[2]),其功能是将长度为n的数组a的【各元素之和】以及数组a中【最大值与最小值的差值】寄存在数组res中。
吉林大学网络教育C语言程序设计练习题C期末考试复习题
C语言程序设计练习题C单项选择题1.以下不能定义为用户标识符是A) Main B) _0C) _int D) sizeof2. 以下叙述中正确的是A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号"{"和"}"只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分3. 以下选项中合法的字符常量是A) "B" B) '\010'C) 68 D) D4. 以下合法的赋值语句是A) x=y=100 B) d--;C) x+y; D) c=int(a+b);5. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是A) INPUT x、y、z; B) scanf("%d%d%d",&x,&y,&z);C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);6. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是A) abs(x-y)<10 B) x-y>-10&& x-y<10C) @(x-y)<-10||!(y-x)>10 D) (x-y)*(x-y)<1007. 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是A) for(i=1,p=1;i<=5;i++) p*=i;B) for(i=1;i<=5;i++){ p=1; p*=i;}C) i=1;p=1;while(i<=5){p*=i; i++;}D) i=1;p=1;do{p*=i; i++; }while(i<=5);8. 若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是A) p+1 B) *(p+3)C)*(p+1)+3 D) *(p[0]+2])9. 设有定义语句int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是A) for(i=0;i<6;i++) printf("%2d",*(p++));B) for(i=0;i<6;i++) printf("%2d",*(p+i));C) for(i=0;i<6;i++) printf("%2d",*p++);D) for(i=0;i<6;i++) printf("%2d",(*p)++);10. 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则A) 称为函数的直接递归调用B) 称为函数的间接递归调用C) 称为函数的循环调用D) C语言中不允许这样的递归调用11. 以下叙述中正确的是A) 局部变量说明为static存储数,其生存期将得到延长B) 全局变量说明为static存储类,其作用域将被扩大C) 任何存储类的变量在未赋初值时,其值都是不确定的D) 形参可以使用的存储类说明符与局部变量完全相同12. 程序中对fun函数有如下说明void *fun();此说明的含义是:A) fun了数无返回值B) fun函数的返回值可以是任意的数据类型C) fun函数的返回值是无值型的指针类型D) 指针fun指向一个函数,该函数无返回值13. 有定义语句:int x, y;要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y 得到数值12,下面四组输入形式中,错误的是A)11 12<回车> B)11, 12<回车>C)11,12<回车> D)11,<回车> 12<回车>14. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是A)x=x*100+0.5/100.0; B)x=(x*100+0.5)/100.0;C)x=(int)(x*100+0.5)/100.0; D)x=(x/100+0.5)*100.0;15. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++) s=s+1;则与上述程序段功能等价的赋值语句是A)s=a+b; B)s=a+c;C)s=s+c; D)s=b+c;16. 已定义ch为字符型变量,以下赋值语句中错误的是A)ch='\'; B)ch=62+3;C)ch=NULL; D)ch='\xaa';17. 有以下函数定义: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);18. 以下不能正确定义二维数组的选项是A)int a[2][2]={{1},{2}}; B)inta[][2]={1,2,3,4};C)int a[2][2]={{1},2,3}; D)int a[2][]={{1,2},{3,4}};19. 以下能正确定义一维数组的选项是A)int num[]; B)#define N 100int num[N];C)int num[0..100]; D)int N=100;int num[N];20. 已定义函数fun(int *p){ return *p; }该函数的返回值是A)不确定的值B)形参p中存放的值C)形参p所指存储单元中的值D)形参p的地址值二、读程序写结果1. 有以下程序main(){ int a=666,b=888;printf("%d\n",a,b);}程序运行后的输出结果是2. 有以下程序main(){ char a,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。
大一期末C语言程序设计习题B试卷附答案
****大学2012—2013学年第二学期期末考试课程名称:C 语言B 闭卷 B 卷 120分钟一、 单项选择题(共30分,每题2分)请将各题答案填入下表A .本程序的第一个函数开始,到本程序的最后一个函数结束B .本程序的主函数开始,到本程序的主函数结束C .本程序的主函数开始,到本程序的最后一个函数结束D .本程序的第一个函数开始,到本程序的主函数结束 2、 在下列选项中,不正确的赋值语句是________。
A .++t;B .n1=(n2=(n3=0));C .k=i=j;D .a=b+c=1;3、 下面合法的C 语言字符常量是__________.A .'\t'B ."A"C .65D .A 4、 C 语言程序的基本单位是___________.A .程序行B .函数C .字节D .字符 5、 表达式5!=3的值是________.A .TB .非零值C .0D .16、 C 语言中,若未说明函数的类型,则系统默认该函数的类型是________。
A .float 型 B .long 型 C. int 型 D. double 型 7、为表示关系x ≥y ≥z,应使用C 语言表达式______.A .(x>=y)&&(y>=z) B. (x>=y)AND(y>=z) C. (x>=y>=z) D. (x>=y) & (y>=z)8、执行下列程序段后的输出结果是_________.int x=1,y=1,z=1;x+=y+=z;printf("%d\n",x<y?y:x);A.3 B.2 C.1 D.49、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是________.A. 5.5B. 5C. 3D. 4.010、合法的数组定义是________.A. int a[6]={"string"};B. int a[5]={0,1,2,3,4,5};C. char a={"string"};D. char a[]={0,1,2,3,4,5};11、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符________.A. 必须为字母B. 必须为下划线C. 必须为字母或下划线D. 可以是字母,数字或下划线中的任意一种12、若有以下定义,则对a数组元素地址的正确引用是_______.A.p+5 B.&a[0] C. &a+1 D.*a+113、执行下面程序段后,k的值是_________.int i,j,k;for(i=0,j=10;i<j;i++,j--)k=i+j;A.9 B.11 C.8 D.1014、给出以下定义:char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为 ________.A.数组x和数组y等价 B.数组x和数组y的长度相同C. 数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度15、C语言中,凡未指定存储类别的局部变量的隐含存储类别是_______.A. autoB. staticC. externD. register二、阅读程序,写出运行结果(共25分,每题5分)1、#include<stdio.h>void main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d",i,j,m,n);}程序的运行结果是:2、#include<stdio.h>void main(){char ch;scanf("%3c",&ch);printf("%c",ch);}如果从键盘上输入: abc<回车>则程序的运行结果是___ ____.3、#include<stdio.h>#include<string.h>void main(){int i=3,j=2,k;k=i+j;{int k=6;k=k+4;printf(“%d”,k);}}程序运行后的输出结果是:4、#include<stdio.h>f(int b[ ], int n){int i, r=1;for(i=0; i<=n; i++)r=r*b[i];return r;}void main(){int x, a[]={ 2,3,4,5,6,7,8,9};x=f(a, 3);printf("%d\n",x);}上面程序的输出结果是_____ ___.5、运行下面程序时,若从键盘输入数据为"6,5,7<CR>",则输出结果是_______.#include <stdio.h>void main( ){int a,b,c;scanf("%d,%d,%d",&a,&b,&c);if (a>b)if (a>c)printf("%d\n",a);elseprintf("%d\n",c);elseif (b>c)printf("%d\n",b);elseprintf("%d\n",c);}三、程序填空题(共20分,每空2分)1、本程序功能是求1000以内不能被7整除也不能被5整除的整数的和,请在横线上填写正确内容补充程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计练习题B一、单项选择题1. 以下选项中可作为C语言合法整数的是()A)10110B B)0386 C)0Xffa D)x2a22. 以下选项中非法的表达式是()A)0<=x<100 B)i=j==0 C)(char)(65+3) D)x+1=x+13. 假定x和y为double型,则表达式x=2,y=x+3/2的值是()A) 3.500000 B) 3 C) 2.000000 D) 3.0000004. 设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是()A) c1^c2 B) c1&c2 C) ~c2 D) c1|c25. 以下能正确定义二维数组的是()A) int a[][3] B) int a[][3]=2{2*3};C) int a[][3]={} D) int a[2][3]={{1},{2},{3,4}};6. 设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是()printf("%d,%d\n",x--,--y);A) 10,3 B) 9.3 C) 9.2 D)10.27. 有以下定义语句 double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是()A) a=a+b=b++ B) w%((int)a+b) C) (c+w)%(int)a D) w=a= =b;8. 已定义c为字符型变量,则下列语句中正确的是()A)c='97' B)c="97" C)c=97 D)c="a"9. 下列选项中正确的语句组是()A)char s[8]; s={"Beijing"} B)char *s; s={"Beijing"};C)char s[8]; s="Beijing" D)char *s; s="Beijing";10.以下语句或语句组中,能正确进行字符串赋值的是()A)char *sp;*sp="right!" B)char s[10];s="right!";C)char s[10];*s="right!" D)char *sp="right!";11. s1和s2已正确定义并分别指向两个字符串。
若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()A) if(s1>s2)S B) if(strcmp(s1,s2))S;C) if(strcmp(s2,s1)>0)S D) if(strcmp(s1,s2)>0)S;12. 下列条件语句中,功能与其它语句不同的是()A) if(a) printf("%d\n",x); else printf("%d\n",y);B) if(a==0) printf("%d\n",y); else printf("%d\n",x);C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);D) if(a==0) printf("%d\n",x); else printf("%d\n",y);13. 有以下定义和语句int a[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是()A) a[0][1] B) a[1][0] C) a[1][1] D) a[1][2]14. 已有定义:int i,a[10],*p;,则合法的赋值语句是()A) p=100 B) p=a[5] C) p=a[2]+2 D) p=a+2;15. 设有如下程序段:int x=2002, y=2003;printf("%d\n",(x,y));则以下叙述中正确的是()A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002D)输出值为200316. 有以下说明和定义语句struct student{ int age; char num[8];};struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是()A) (p++)->num B) p->num C) (*p).num D) stu[3].age17.以下叙述中正确的是()A) 预处理命令行必须位于源文件的开头B) 在源文件的一行上可以有多条预处理命令C) 宏名必须用大写字母表示D) 宏替换不占用程序的运行时间18. 要求以下程序的功能是计算:s= 1+1/2+1/3+……+1/10main(){ int n; float s;s=1.0;for(n=10;n>1;n--) s=s+1/n;printf("%6.4f\n",s); }程序运行后输出结果错误,导致错误结果的程序行是()A)s=1.0 B)for(n=10;n>1;n--) C)s=s+1/n D)printf("%6.4f\n",s);19. 下列函数定义中,会出现编译错误的是()A)max(int x,int y,int *z) B)int max(int x,y){ *z=x>y ? x:y; } { int z;z=x>y ? x:y;return z; }C)max(int x,int y) D)int max(int x,int y){ int z; { return(x>y?x:y); }z=x>y?x:y; return(z);}20. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参二、阅读程序写结果1. 有以下程序main(){ int m=0256,n=256;printf("%o %o\n",m,n);}程序运行后的输出结果是2.以下程序运行后的输出结果是_____main(){ int a=3,b=4,c=5,t=99;if(b if(a printf("%d%d%d\n",a,b,c);}3.以下程序运行后的输出结果是main(){ char c1,c2;for(c1='0',c2='9';c1printf("\n");}4.以下程序运行后的输出结果是______void swap(int x,int y){ int t;t=x;x=y;y=t;printf("%d %d ",x,y);}main(){ int a=3,b=4;swap(a,b);printf("%d %d\n",a,b);}5.以下程序运行后的输出结果是_____fun(int a){ int b=0;static int c=3;b++;c++;return(a+b+c);}main(){ int i,a=5;for(i=0;i<3;i++)printf("%d %d ",i,fun(a));printf("\n");}6.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时, 函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空.#includechar *huiwen(char *str){ char *p1,*p2;int i,t=0;p1=str;p2=______;for(i=0;i<=strlen(str)/2;i++)if(*p1++!=*p2--){t=1;break;}if(____)return("yes!");else return("no!");}main(){char str[50];printf("Input:");scanf("%s",str);printf("%s\n",______);7. 有以下程序main(){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是8. 有以下程序main(){int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q; *q=*(p+5);printf("%d %d\n",*p,*1);}程序运行后的输出结果是9. 有以下程序main(){ unsigned int a;int b=-1;a=b;printf("%u",a);}程序运行后的输出结果是10. 有以下程序m ain(){ int x[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for (j=2;j>=i;j--)if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;} for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;} for (i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}for (i=0;i<8;i++) printf("%d",x[i]);printf("\n");}程序运行后的输出结果是:三、程序填空题1. 通过函数求f(x)的累加和,其中f(x)=x2+1main(){printf("The sum=%d\n",SunFun(10));}SunFun(int n){int x,s=0;for(x=0;x<=n;x++) s+=F(______);return s;}F( int x){ return ______;}2. 以下程序中,函数SumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。