《高级语言程序设计期末考试试卷(a卷)》由会员分享,可在线阅读,更多相关《高级语言程序设计期末考试试卷(a卷)(10页珍藏版)》请在金锄头文库上搜索。
1、第 1 页,本卷总共 10 页高级语言程序设计期末考试试卷(A 卷)一、单选题(每题 1 分,共 20 分)1.C 语言源程序的基本单位是(B) 。A).过程 B).函数 C). 子程序 D). 标识符2.while(!x)中的!x 与下面那个表达式等价(A) 。A)x=0 B) x=1 C)x!=5 D)x!=03在 C 语言程序中,以下说法正确的是(B) 。A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的调用都不可以嵌套D函数的定义和函数的调用都可以嵌套4. 下列 C 标识符均不合法的是(C )A)Int、x_0、do B)_al
2、、extern、a_okC)x*y,const、12a D)CHAR、_123、tmp5. TURBOC 2.0 环境下,程序 main() int a=32767; int b=a+1;char c=304; printf(b=%d,c=%c,b,c);输出结果是(D)A)b=-1,c=0 B)b=1,c=0 C)b=-32767,c=0 D) b=32768,c=06.假设变量 a,b 均为整型,表达式(a=5,b=2,ab?a+:b+,a+b)的值是(B) 。A).7 B).8 C).9 D).27.设 a 为 int 型变量,执行下列赋值语句后,a 的取值分别是(B) 。a=125.5
3、34;a=20.0/3;a=(int)125.521%4;a=5bc 的值是(A)A.0 B.1 C.2 D.410. 以下函数调用语句中含有(A)个实参。func(e1,e2),(e3,e4,e5); A 2 B 3 C 5 D 语法错误11变量 a,b 已经正确定义和初始化,下列不能将 a、b 两个数交换语句是(B)Aa=a+b,b=a-b,a=a-b; Ba=a-b,b=a+b,a=a+b;Ct=a,a=b,b=t; Da=ab;b=ba;a=ab;12以下程序的输出结果为(A) 。#define ADD(x) x*xmain( ) int a=4,b=6,c=7,d=ADD(a+b)*
4、c; printf(d=%d,d); (d=4+6*4+6*7=70) A).d=70 B).d=80 C).d=140 D).d=70013.已知职工记录描述如下,在 Turbo C 中,系统为变量 w 分配(C)字节的空间。struct worker int no; char name20; char sex;union int day;int month;int year; birth; w; A).29 B).20 C).25 D).614.设有以下定义,值为 7 的枚举常量是(D) 。第 3 页,本卷总共 10 页enum weeksun,mon=4,tue,wed,thu,fri,
5、sat w;A).tue B).satc C).fri D)thu15.下面选项中正确的赋值语句是(设 char a5,*pa;)(A) 。 A p=abcd; B a=abcd;C p5=abcd;D *a=abcd;16下列程序的结果是(C)main( ) int a,b,s=0;for(a=1,b=1;a=20) break;if(b%3=1)b+=3; continue; b-=5;printf(“a=%dtb=%dn”,a,b);A).a=6 b=19 B).a=7 b=21;C).a=8 b=22 D).a=9 b=23;17.有以下说明:int w34=0,1,2,4,5,8;i
6、nt (*p)4=w;则数值为 4 的表达式是(D )Ap+,*(p+1) B*w1+1 C*(p+1)+1 D*(w1+1)18.int a10=0,1,2,3,4,5,6,7,8,9;int *p;p=a;下列四个表达式中结果与其中三个不一样的是(C):A*(p+1) B*(a+1) C*(+a) D*(+p)19.下函数的变量在函数被调用时生存期最长的是(B) func( int i) int k;static int j; 第 4 页,本卷总共 10 页i+;j+;k+; int m=i+j+k; printf(“n”) ;Ai Bj Ck Dm20. 有如下类型说明:float n;
7、int m;则可以将 n 中的数值保留小数点后四位,第五位四舍五入的表达式是(C)An=(n*10000+0.5)/10000.0 B。n=n*10000+0.5/10000.0Cm=n*10000+0.5,n=m/10000.0 D。n=(n/10000+0.5)*10000.0第 5 页,本卷总共 10 页二、判断题(正确打“” ,错误打“” ,全部打“”或全部打“”不得分,每题 1 分,共 10 分)1在 Turbo C 中,整型数据在内存中占 2 个字节。 (W)2函数的递归调用不过是一个函数直接或间接地调用它自身。 (T)3函数 strlen(ASD386FGn)的值是 9。 (T)
8、4通过 return 语句,函数可以带回一个或一个以上的返回值。 (W)5假设已定义了变量 a=1;b=2;c=3;d=4;m=1;n=1;则语句(m=ab)执行后 m=0,n=1。 (T )6若有定义:char *p(char a10);则 p 是函数名。 (T)7C 语言把文件看作是一个字符(字节)的序列。(T) 8若有宏定义:#define S(a,b) t=a;a=b;b=t 由于变量 t 没定义,所以此宏定义是错误的。(W) 9在 Turbo C 中,下面的定义和语句是合法的:file *fp;fp=fopen(a.txt,r);(W)10结构体类型只有一种,但在程序中定义了一个结构
9、体类型后,可以多次用它来定义具有该类型的变量。(W) 三、程序填空题(每空 2 分,共 20 分)1、填写 1) 、2) 、3) 、4)空,解决百马百担问题:有 100 匹马,驮 100担货,大马驮 3 担,中马驮 2 担,两匹小马驮 1 担,问大、中、小马各多少匹?main( ) int hb,hm,hl,n=0;for(hb=0;hbmain( ) int i , j ;for( i=1; i#dedinf NULL 0#define LEN _ sizeof(struct student )_struct studentlong num;float score;struct studen
10、t *next;int n;/*记录链表中节点数目*/struct student *create(void)第 7 页,本卷总共 10 页 struct student head;/*链表头指针*/struct student *p1=null,*p2=NULL;n=0;p1 =_(struct student *)malloc(LEN)8)_scanf(“%ld,%f“,head=NULL;while(p1-num!=0)n=n+1; if(n=1)head=p1;else _ p2-next=p1_(9)_;p2=p1;p1=_(8)_;/*此空表示和前面的第(8)空内容一致,无需填*/
11、scanf(“%ld,%f“, p2-next=_NULL_;return (head);四、看程序写结果(每题 5 分,共 20 分)1、#include stdio.hmain()int a=8,b=2;int *pointer_1,*pointer_2;void swap(int *p1,int *p2);pointer_1=swap(pointer_1,pointer_2);printf(a=%d,b=%dn,a,b);第 8 页,本卷总共 10 页void swap(int *p1,int *p2)int a3=1,2,3,*temp=a+2;*p2=*p1;*p1=*temp;*t
12、emp=*p2;2、#includemain() char str =tom like C program,c;int i;for(i=2;(c=stri)!=0;i+)switch(c) case g: +i; break;case o: continue;default:printf(%c,c);continue;printf(*);printf(n);3、int a=25;int func(int b)static int a=50;a+=b+100;return (a);main()第 9 页,本卷总共 10 页 int a,b;a=100;b=func(a)+func(a);prin
13、tf(“a=%d,b=%d ”, a,b);4、假设程序运行时输入为 4321(表示回车),则输出为?#include stdio.hprint_message(int i )char ch;i+;scanf(%c, if ( ch != n )print_message(i);printf(%c, ch);return(i);main( ) int i=4;printf(%d,print_message(i);第 10 页,本卷总共 10 页五、程序设计(共 30 分 每题 15 分)1、 输入年月日,计算该日是该年的第几天。主程序已经写出如下:#include stdio.hmain()i
14、nt year,month,day,day_num;int sum_day(int month,int day);int leap(int year);printf(please input date(year month day):n);scanf(%d%d%d,printf(today is %d/%d/%d,It is,year,month,day);day_num=sum_day(month,day);if(leap(year)&month=3)day_num+=1;printf( NO.%d day of %d,day_num,year);请完成:1) 画出程序流程图2) 补充完整函数 int sum_day(int month,int day)3) 补充完整函数 int leap(int year)2、设有 Li、zhang、wang3 个候选人和 30 名投票人,要求设计一个票数统计程序,当每位投票人输入一个得票候选人的名字后,对应候选人的票数增加 1,最后按照得票数从多到少输出三个候选人的得票结果。假设已经替你建立了如下数据结构,请将 main 函数补充完整,使程序具有上述功能。#include struct personchar name20;int count;leader3;main()