安徽大学C语言期末试卷(共7页).docx
精选优质文档-倾情为你奉上安徽大学 C语言程序设计期末试题一. 单项选择题:(每题2分,共20分)执行程序: int a; printf("%d n", (a=3*5, a*4, a+5) );后,a的值是_。)60)20)15)10程序段:int x=023; printf("%d n", -x );的输出是_。)19)18)23)223程序段:static char s10='C','h','i','n','a' printf("%dn",strlen(s);的输出是_。)6 )5)11)104若fun( int x) printf(“%dn”,x);, 则fun_。)返回值为 void 类型)返回值类型无法确定)返回值为 int 类型)没有返回值5. 有宏定义:#define MULT1(a,b) a*b #define MULT2(a,b) (a)*(b)且引用宏:y=MULT1(3+2,5+8); z=MULT2(3+2,5+8); 则y和z的值是_。 )y=65,z=65 )y=21,z=65 )y=65,z=21 )y=21,z=216程序段char s="Hello", *p; p=s;执行后,*(p+5)的值是_。)'o')'0')'o'的地址)不确定的值7. 程序段:char *s=”ABCD”, *p; for( p=s; *p ; p+) printf("%sn", p);的输出是_。)ABCD)A )D)ABCDBCDBCABCCDCBABDDAA8. 若定义:int (*p)3; 则标识符p_。)定义不合法。)是一个指针数组名,每个元素是一个指向整型变量的指针。)是一个指针,它指向一个具有三个元素的一维数组。)是一个指向整型变量的指针。9. 定义: struct sk int a; float b; data,*p; 且 p=&data; 则正确引用成员a的方式是 _。A) p.data.aB) (*p).aC) p->data.aD) (*p).data.a10. 以二进制只读方式打开一个已有的文本文件file1,正确调用fopen函数的方式是_。)FILE *fp;)FILE *fp;fp=fopen("file1","rb");fp=fopen("file1","r+");)FILE *fp;)FILE *fp;fp=fopen("file1","r");fp=fopen("file1","rb+");得分二. 填空题:(每空1分,共20分)请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。 程序一个函数的定义由_和_两部分组成。 语言的整型变量可分为基本型、短整型、_和_。 语言在判断一个量是否为“真”时,以_代表“假”,以_代表“真”。 语言中的break语句只能用于_和_语句。 对_和_型数组不赋初值,系统会对所有元素自动赋以0值。 语言中“文件包含”是通过_命令完成的,而符号常量是通过_命令定义的。 对于数组,()表示_,()表示_。 若定义:struct int y, m, d; today, *pdata; 则为today分配内存 _ 字节,为pdata分配内存 _ 字节。 语言文件按数据的存放形式可分为_文件和_文件。 语言文件是一个_序列,这类文件称为_文件。得分三. 程序归纳题(每题2分,共10分)阅读下列函数,总结其主要功能填在答题卡相应的横线上。答在试卷上不得分。1. int fun1 (char *str) char *ptr=str; while(*ptr+); return ptr-str-1; 2. double fun2(double x, double y, double z) return x>(y>z?y:z)?x:(y>z?y:z); 3. void funs3( int num, int size ) int i=0, tmp;while( i<size/2 ) tmp=numi,numi=numsize-i-1,numsize-i-1=tmp,i+;4. void fun4(char *f, char *t) for(;*f!='0'f+,t+) *t=*f; *t='0' 5.void fun5(char *ps) int a1=0, a2=0; while (*ps!= '0') if (*ps>='a'&&*ps<='z') a1+; else if (*ps>='0'&&*ps<='9') a2+; p+; printf("%d,%d n",a1, a2); 得分四. 程序分析题(每题2分,共10分)阅读程序,将其运行结果填在答题卡相应题目的横线上。答在试卷上不得分。1. #include "stdio.h" void main() static int a=1,2,3,4,5,6,*p; p=a; *(p+3)+=2; printf("%d,%dn",*p,*(p+3); 2. #include "stdio.h" void main() int x=1; int x=2; int x=3; printf("%2d",x); printf("%2d",x); printf("%2d",x); 3. #include <stdio.h>#include <string.h>void sort( char *str, int n) char *tmp; int i,j; for( i=0; i<n-1; i+ ) for( j=0; j<n-i-1; j+ ) if(strcmp(strj,strj+1)>0) tmp=strj, strj=strj+1, strj+1=tmp; void main() char *ps,*str3= "BOOK","COMPUTER","CHINA"; int i; ps=str; sort(ps,3); for(i=0; i<3; i+) printf("%d %s ",i+1, stri); 4. #include <stdio.h>int leap_year(int year) return year%4=0 && year%100!=0 | year%400=0; void main() int month_day=31,28,31,30,31,30,31,31,30,31,30,31 , days,i; struct date int year; int month; int day; mdate=2008,5,1; if(leap_year(mdate.year) month_day1+; for(i=1,days=mdate.day;i<mdate.month;i+) days+=month_dayi-1; printf("%d-%d is the %dth day in %d",mdate.month,mdate.day,days,mdate.year); 5. #include <stdio.h>void add( int *x, int *y, int n) while(n-) *x+ += *y+; void main() int i=5; static int s1=2, 1, 0, 3, 2, s25; add(s2, s1, 5); while(i-) printf("%2d", s2i); 得分五. 程序设计题(每题10分,共40分)阅读下列程序,在指定位置上填入适当的内容使程序完整。请勿改动其它内容。请将正确答案填在答题卡上。答在试卷上不得分。1.函数insert将一个指定的单精度数按递减规律插入数组num中,注:数组num中已有12个按照递减顺序排好序的单精度数。void insert( float num13, float new ) int i=11;/*answer begin*/*answer end*/ 编写函数mycmp实现库函数strcmp的功能:两个字符串的比较。int mycmp(char *p1,char *p2) /*answer begin*/*answer end*/ 3设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。#include <string.h>struct person char name20; int count;leader3=“Li”,0,“Zhang”,0,”Wang“,0; main() int i,j; char leader_name20; for(i=1;i<=10;i+) /*answer begin*/ /*answer end*/ for(i=0; i<3;i+) printf("%5s:%dn",leaderi.name,leaderi.count);4. 从键盘上输入一个字符串,将其中的小写字母转换成大写字母,然后输出到名为“test”的文本文件中保存。输入字符串以“!”结束。#include <stdio.h>void main() int i; char str80; FILE *fp; if( (fp=fopen("test","w")=NULL) printf("cannot open filen"); exit(0); printf("Input a string(end with !):"); gets(str); /*answer begin*/ /*answer end*/参考答案:一. 单项选择题:(每题2分,共20分)CBBCB BACBA二. 填空题:(每题2分,共20分)1函数说明2函数体3长整型4无符号型5 0 6 非0 7 switch 8 循环 9 extern10 static 11 #include12 #define 13 &x2314 x3215 6 16 217文本18二进制19字符(字节)20流式 三. 程序归纳题(每题2分,共10分)1求字符串长度 2 求3个double型数中的大数3 翻转整型数组 4 复制字符串5 统计指定字符串中小写字母、数字的个数 四. 程序分析题(每题2分,共10分)1 1,6 2 3 2 1 3 1 BOOK 2 CHINA 3 COMPUTER4 5-1 is the 122th day in 2008 5 2 3 0 1 2 注:标点符号错误不另扣分五. 程序设计题(每题10分,共40分) 1num12=new; 存储新值:2分 while( i>=0 && datai< datai+1 ) 循环至插入点:2分复合语句:1分 new=numi+1;暂存新值:1分 numi+1=numi; 更新旧值:2分 numi=new;更新新值:1分 i-;循环计数:1分 2 while(*p1&&*p2&&*p1=*p2) 依次比较两个字符串直至其结束:6分p1+,p2+;更新位置指示:2分 return *p1-*p2;返回差值:2分3 scanf("%s",leader_name);唱票:2分 for(j=0;j<3;j+)循环寻找得票人:2分 if(strcmp(leader_name, leaderj.name)=0) 寻找得票人:4分 leaderj.count+; 更新得票人票数:2分4 for(i=0; stri!='!' i+)依次比较各字符直至字符串结束:2分 if(stri>='a' && stri<='z') 判断是否是小写字母:2分 stri-=32; 转换为大写字母:2分 printf("Writting %s into file test",str); fputs(str,fp); 将字符串存储到文件中:2分 fclose(fp); 关闭文件:2分专心-专注-专业