2012年C语言程序设计试卷A卷(正式用卷).doc_第1页
2012年C语言程序设计试卷A卷(正式用卷).doc_第2页
2012年C语言程序设计试卷A卷(正式用卷).doc_第3页
2012年C语言程序设计试卷A卷(正式用卷).doc_第4页
2012年C语言程序设计试卷A卷(正式用卷).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

计算机学院2011-2012学年第2学期C语言程序设计考试试卷A卷(或B卷): A卷 闭卷(或开卷):闭卷 考试时间:2012年 6 月 27日专业 班级 学号 学生姓名 题号一二三四五六七总分核对人题分10101010202020100得分注意:试卷后面附有运算符的优先级和结合性表。得分评卷人一、 单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,每小题1分,共10分。) 1、下列选项中,不是合法标识符的是 【 】A、INTB、_123C、testD、2nd2、已知ch是字符变量,下面正确的表达式是 【 】A、ch=120B、ch=xFFC、ch=08D、ch=3、执行语句for(i=1;i+age); D、scanf(%d, pa-age);得分评卷人二、 多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。本大题共5小题,每小题2分,共10分。)1、 以下表达式中,能正确根据表达式C=(F-32)59,由华氏温度F计算出摄氏温度C(设C、F均为float类型)的有 【 】A、 C=5/9*(F-32) B、C=(F-32)*5/9 B、 C=5*(F-32)/9 D、C=(F-32)/9*52、以下声明正确的有 【 】A、int I,k=5,*j;B、int m,bm;C、int z10=0,1,2,3,4; D、char str=abccd mnkj;3、以下表达式中,表达式等价的有 【 】A、x/=2 B、x1 C、x=x/2 D、x=1/2*x 4、若有定义 int name510;则下面的表达中,代表地址的有 【 】A) name B) name0C) &name1 D) name005、 以下关于外部变量说法正确的有 【 】A、程序开始运行时,系统首先就为外部变量在静态区分配存储空间;B、整个程序运行结束后,被外部变量占用的存储单元才被收回;C、外部变量的生命周期是永久的,存在于整个程序的执行期间;D、如果定义时,没有对外部变量显示初始化,其缺省初值为0;得分评卷人三、 填空题(本大题共10小题,每小题1分,共10分。)本大题的第1题至第5题请参考下面的说明,请计算出表达式的值和类型并填入各题前面的括号中,各题的表达式相互无关。char c1=x41,c2;short int m=3,n=6,i=0x35F7,j=0xF315;float x=12.0,y=20.0;【 】 1、m+n,m+n+,+n【 】 2、c2=c1+n-m【 】 3、m=(i&j2)【 】 4、m%5 & n%7【 】 5、n+y本大题的第6小题至第10小题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。typedef union longCharlong ld;unsigned char larr4;longType;longType l1,l2;struct Tlong id;int itype;unsigned char *s;a=100,1,l1.larr,101,2,l2.larr,*p=a;long k;char c;l1.ld=0x01020304,l2.ld=0x0a0b0c0d;【 】6、k=p-id+1;【 】7、c=p-s3s);【 】9、c=!(p-itype=1)?*p-s:*(*p).s+2);【 】10、c=(+p-s)1;得分评卷人四、 判断改错题 (先判断下面各题中是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)1、本小题的程序段如下:char s120;s1=china;2、以下代码依次给数组a的每一个元素赋值:int i=0,a5;while(i+ 5) scanf(%d, &ai);3、定义完成计算多项式f(x)=x2+3x+5的宏。#define f(x) x*x+3*x+54、本小题的程序段如下:int p1=1,p2=2;int *arr2=p1,p2;5、命令行的格式为:mycode 1 2 3 4 5 根据命行参数计算1+2+3+4+5的代码片段如下:int s=0;for (i=0;iargc;i+)s+=atoi(argvi);printf(%dn,s);得分评卷人五、简答题(本大题共5小题,每小题4分,共20分)1、叙述#define M 10 和const int M=10; 的区别。2、写一个表达式取short int类型变量x的奇数位和short int类型变量y的偶数位(从低位至高位编号为0,1,2,15),合并后赋给short int类型变量z。3、请写一个C表达式,当整型变量x和y的值都大于0或都小于0时,表达式取值为1;当整型变量x和y的值有一个等于0时,表达式取值为0;否则表达式取值为-1。4、已知宏MAX3(a,b,c)已经定义且可以求出整型变量a,b,c的最大值,请以此为依据定义一个求4个整型变量a,b,c,d最大值的宏MAX4(a,b,c,d)。5、声明语句:char *(*(*p)(void)(char *,char *);中p的含义是什么?得分评卷人六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)1、请写出下面程序的运行结果。#includevoid fun(int *,int);void main(void)int x=2,y=5,i;for(i=1;i3;i+)fun(&x,y);printf(x=%d,y=%dn,x,y);void fun(int *m,int n)static int v=0;*m=v+=n+;return;2、请写出下面程序的运行结果。#include stdio.hvoid main()long a10=12,43,56,32,17,16,8,7,10,55,m,n;int i;m=n=0xFFFFFFFF;for(i=0;im) n=m;m=ai;else if(ain) n=ai;printf(m=%ld,n=%ldn,m,n);3、请写出下面程序的运行结果。#include stdio.hvoid fun1(char *s)if (*s)fun1(s+1);putchar(*s);elseputchar();void main()fun1(n!gnikrow si eh);4、请写出下面程序的运行结果。#include stdio.hint a = 1,2,3,4,5,6,7,8,9,10,11;int bsearch(int* a, int x, int y, int v) int m;while(x v) y = m; else x = m+1; return -1;void main(void)int loc;loc=bsearch(a,0,sizeof(a)/sizeof(int),6);if(loc!=-1)printf(a%d= %dn,loc,aloc);else printf(not found!n);loc=bsearch(a,0,sizeof(a)/sizeof(int),bsearch(a,0,sizeof(a)/sizeof(int),3);printf(a%d= %dn,loc,aloc);return;5、请写出下面程序的运行结果。#include stdio.h#include string.hvoid fun2(char *s1,char *s2)int len1=strlen(s1),len2=strlen(s2);char *pc0=s1+len1-len2+1,*pc1,*pc2;for(;s1pc0;s1+)pc2=s2;while (*pc2 & *(s1+(pc2-s2)=*pc2) pc2+;if (!*pc2)pc1=s1,pc2=s1+len2-1;while (pc1pc2)*pc1=*pc1*pc2,*pc2=*pc1*pc2,*pc1=*pc1+*pc2-;void main()char s120=abcxyzabcxyz123xy2z,s220=xyz;fun2(s1,s2);puts(s1);得分评卷人七、完善程序(本大题有2小题,给出的都是部分程序,通过填空来完善程序。本大题共10空,每空2分,共20分。)1、本大题第、空请参阅下面的部分程序。程序说明 任意的正整数,根据其各位的数字重新排列,得到一个最大的数字。其输入输出结果如下输入:1879657输出:9877651输入:-9878输出:-7889显然,当输入的整数是正数时,需将各位数字转换为数字字符然后按照降序排序,反之将按照升序排序。请将下面程序中、处应该完善的内容填写在本小题后、后面的下划线处,用来完善该程序。#include #define UP 1#define DOWN 0void sort(char s,int n,int flag)/*根据flag的值对s进行升序或降序排列*/int i,j;for(i=0;in-1;i+)for(j=0;jn-i-1;j+)if( )sj=sjsj+1,sj+1=sjsj+1,sj=sjsj+1;int main()int n,i=0,flag=DOWN;char str20;printf(输入整数:);scanf(%d,&n);if (nc=ch; ;return ptr;char add_one(struct char_node *p1,struct char_node *p2,int *p)/*带进位的1位加法*/char ch;int n,n1=0,n2=0;if(p1!=NULL) n1=p1-c-0;if(p2!=NULL) n2=p2-c-0;n= ;if(n=10)ch=n%10+0;*p=n/10;elsech=n+0;*p=0;return ch;void add(struct char_node *s,struct char_node *op1,struct char_node *op2) /*执行加法运算,结果存放于运算结果单向链表中*/struct char_node * loc_head=NULL,*p1=op1,*p2=op2;int carry=0;char ch;while( )ch=add_one(p1,p2,&carry);loc_head=new_node(loc_head,ch);p1=p1-next;p2=p2-next;while(p1!=NULL)ch=add_one(p1,NULL,&carry);loc_head=new_node(loc_head,ch);p1=p1-next;while(p2!=NULL)ch=add_one(NULL,p2,&carry);loc_head=new_node(loc_head,ch);p2=p2-next;if(carry!=0)ch=carry+0;loc_head=new_node(loc_head,ch);*s= ;void show(struct char_node *p)/*遍历运算结果链表,输出加法运算的结果*/

温馨提示

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

评论

0/150

提交评论