12级C语言试题A.doc_第1页
12级C语言试题A.doc_第2页
12级C语言试题A.doc_第3页
12级C语言试题A.doc_第4页
12级C语言试题A.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20122013学年第一学期C语言期末考试卷(A卷)(2012级电气、电信、环科类等专业)三、编程题(20分)1编写一程序,求100之内的素数。定义一个函数完成素数的判断,main函数完成调用并输出全部素数。2编程找出1000以内的所有完数。定义一个函数来实现一个数的因子(不包括本身)和的计算。main函数完成判断完数并输出所有完数的功能。一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.一、选择题 (301=30分)1以下关于main函数的叙述中,错误的是( c )。A. main函数是自定义函数B. main函数可以有形式参数,也可以没有形式参数C. main函数定义必须出现在一个源文件的开头D. 在一个程序只能有一个main函数 2.下列程序的输出结果是(c )。main( ) int a=7,b=5; printf(%dn,b=b/a);A 5 B 1 C 0 D 不确定值3. 以下符号中不能用做标识符的是( d )。A. _256 B. For C. a_798 D. struct 4. 已知有声明“int x=2;”,以下表达式中值不等于8的是( b )。 A. x+=2,x*2 B. x*7.2/x+1 C. (x+7)/2*(x+1)%2+1) D. x+=x*=x5. 设有如下程序段,下面描述中正确的是 ( c)。int k=10; while(k=0) k=k-1;A 循环执行一次 B 循环是无限循环 C 循环体语句一次也不执行 D 循环体语句执行一次6. 若有声明“int a,b,c=100; ”语句,下列正确的函数调用是( a )。A. printf(“ABC” ”XYZ”) B. scanf(“%d%d”,a,b)C. double sqrt(c) D. sqrt(double c) 7. 以下关于变量的叙述中错误的是( b )。A. 所有变量在使用前都必须声明B. 变量声明可放在函数体中任何位置C. 全局变量和局部变量可以同名D. 声明变量时必须给出变量的数据类型但可以省略存储类型 8以下函数调用语句中含有( a)个实参。func(e1,e2),e3,(e4,e5); A 3 B 2 C 5 D 语法错误9下列函数定义的返回值数据类型为( c )。int fun ( float x, double y )return x+y;A. double B. float C. int D.void 10.已知职工记录描述如下,在TC3.0中,系统为变量w分配(a )字节的空间。struct worker int no; /2char name20; /20char sex;/1union int day; char month10; int year;birth;/10 w; A 33 B 30 C 37 D 2511.设有以下定义,值为5的枚举常量是( c )。enum weeksun,mon,tue=3,wed,thu,fri,sat w;A tue B sat C thu D fri12.下面选项中正确的赋值语句是(设 char a5,*pa;)( a)。 A p=abcd; B a=abcd; C *p=abcd; D *a=abcd;13. 若有数据类型定义和声明为:struct int x,y; a=5,10,b=10,15,c,*pa=&a,*pb=&b; 以下表达式中值不等于5的值( d )。A. c.x=a.x%b.x /=5%10 B. pa-y/pb-y-pa-x+pb-xC. (a.xy?x:y;且main函数中有声明: int a=1,b=2,c; 则以下语句中正确的是( c )。A. f1 (a,b,c); B. f1 (a,b,3); C. f1 (a,b,&c); D. f1 (1,2) 15以下关于函数定义的叙述中错误的是( b)。A. 函数体中可以声明与函数名同名的局部变量B. 在函数体中可以定义另一个函数C. 在函数体中可以调用函数本身D. 在函数体中可以没有return语句 16. 若要求数据文件myf1.dat被程序打开后,文件中原有的数据均被删除,程序写入此文件的数据可以在不关闭文件的情况下被再次读出,则调用fopen函数时的形式为( )。A. fp=fopen(“d:myf1.dat”,”w”); B. fp=fopen(“d: myf1.dat”,”r+”);C. fp=fopen(“d: myf1.dat”,”r”); D. fp=fopen(“d: myf1.dat ”,”w+”); 17设a为int型变量,执行下列赋值语句后,a的取值分别是( )。a=125.534; a=20.0/3; a=(int)125.521%4;A. 125,6,31 B. 125,6,1 C. 125,6.666666,31 D. 125.534,6.666666,218以下函数的功能是( b )。int f ( char *x)char *y=x;while ( *y+);return y-x+1; A. 字符串复制B. 计算x指向的字符串的长度C. 比较两个字符串的长度D. 将x指向的字符串连接到y指向的字符串之后 19以下程序的输出结果为( )。main( ) char c; int i; for(i=65;ib+?a+;b+”后,变量x、a、b的值分别为( )。A 3 4 3 B 3 3 4 C 3 3 3 D 4 3 429. 如果一个函数只限于被同一程序文件中的其他函数调用,不允许被其他程序文件中的函数调用,则在定义该函数时应在其函数首部加上( )关键字。A. static B. extern C. auto D. register 30.以下4个程序段中有3个程序的执行效果总是相同的,另一个执行效果不同的是( )。A if( ab ) c=a,a=b,b=c; B if( ab ) c=a,a=b,b=c; C if( ab ) c=a;a=b;b=c; D if( ab ) c=a;a=b;b=c; 二、填空题(252=50分)1. stdio是指向( (1) mian )的指针。2. 当某程序准备从一个磁盘文件中读入数据,需要有类似“FILE *fp”这样的声明,该声明中的FILE是指( (2) long )。3. 表示“当x取值在1,ln10)范围内时,y取值1,否则y取值-1”所使用的C表达式为“y=( x1&xlog(10) (3) ) ? 1 : -1 ”。4. 除goto语句外,在循环结构中执行( (4)continue )语句可提前结束本次循环直接进入下一次循环。5. 若有程序段“int a10,*p=a,*q; q=&a5;”,则表达式q-p的值是( (5) )。6. 若有声明“int r=2;”,则执行语句“printf(“%d”,sizeof(2*3.14*r);”时输出为( (6) )。7. 已有定义“#define M(a,b,c) a*b-c”,执行语句“printf(“%d”,M(2+3,2+3,4)”时的输出为( (7) )。8. 以下程序运行时输出到屏幕的结果为( (8) )#includevoid s(float x, float y) float z ; if( xy) z=x,x=y,y=z;void main() float x=10.5,y=7.25,z=13.75; if( xy ) s ( x, y); if( xz ) s( x, z);if( yz ) s( y, z);printf( “%ft%ft%fn”,x, y, z);9. 以下程序在TC3.0环境下运行时输出到屏幕的结果是( (9) )。 #include int fun( int first, int second ) return first+*second+; int main(void) int p=3,r; printf(“%dt”,fun(p+,p+); printf(“%dn”,p);10. 以下程序运行时输出到屏幕的结果中第一行是( (10) ),第二行是( (11) ), 第三行是( (12) )#includevoid fun( int m, int n) if( m=n) printf(“%d”, m); else fun(m+1, n); printf(“%dn”,m);void main() fun(3,5);11. 以下程序运行时输出到屏幕的结果中第一行是( (13) ),第二行是( (14) )。 #includevoid change (int x, int m) static char ch=0,1,2,3,4,5,6,7,8,9; int i=0,r; char b80; while (x) r=x%m; x/=m; bi+=chr; for (-i;i=0;i-) printf(“%c”,bi); int main(void) int a,b; change(10,2); printf(“n”); change(10,4); return 0; 12. 已知方程x2-x-2=0在区间 【1,4】内有一个实根。以下程序中函数rootY采用二分法求方程f(x)=0在区间【a,b】内的一个实根,当|f(x)|0.000001时,x即为所求的近似实根。#include#includedouble f ( double x) return x*x-x-2; double root(double a,double b) double m=(a+b)/2; while(fabs(f(m)1e-6) if( (15) 0) a=m;else b=m; (16) ; return (17) ; int main(void) printf(“n One root is %lfn”,root(1,4);13以下程序实现对main函数内声明的局部数组a中的后10个元素做升序排序。排序算法为选择法。 #include void sort(int *x,int n); int main(void) int a12=4,2,8,5,6,7,1,9,10,3,k; sort( (18) ,10); for(k=0;k12;k+) printf(“%d”,ak); return 0; void sort (int *x ,int n) int i,j,k,t; for(i=0;in-1;i+) (19) ; for(j=i+1;j0)之后。如果h2链表为空链表,则函数直接返回h1链表首结点的地址。如果h1结点中不存在第n个结点,则将h2链表中全部结点添加到h1链表的末尾,函数返回h1链表首结点的地址。单向链表结点定义为: struct node int data; struct node *next;#includeNODE *add(struct node

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论