安徽⼤学C语⾔期末试卷(含答案)
安徽⼤学C语⾔程序设计期末试题
⼀. 单项选择题:(每题2分,共20分)
1.执⾏程序: int a; printf("%d \n", (a=3*5, a*4, a+5) );后,a的值是______。
A)60 B)20 C)15 D)10
2.程序段:int x=023; printf("%d \n", --x );的输出是______。
A)19 B)18 C)23 D)22
3.程序段:static char s[10]={'C','h','i','n','a'}; printf("%d\n",strlen(s));的输出是______。
A)6 B)5 C)11 D)10
4.若fun( int x) { printf(“%d\n”,x);}, 则fun_______。
A)返回值为void 类型B)返回值类型⽆法确定
C)返回值为int类型D)没有返回值
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的值是______。
A)y=65,z=65 B)y=21,z=65 C)y=65,z=21 D)y=21,z=21
6.程序段char s[]="Hello", *p; p=s;执⾏后,*(p+5)的值是______。
A)'o' B)'\0' C)'o'的地址D)不确定的值
7. 程序段:char *s=”ABCD”, *p; for( p=s; *p ; p++) printf("%s\n", p);的输出是______。
A)ABCD B)A C)D D)ABCD
BCD B C ABC
CD C B AB
D D A A
8. 若定义:int (*p)[3]; 则标识符p______。
A)定义不合法。
B)是⼀个指针数组名,每个元素是⼀个指向整型变量的指针。
C)是⼀个指针,它指向⼀个具有三个元素的⼀维数组。
D)是⼀个指向整型变量的指针。
9. 定义: structsk {int a; float b;} data,*p; 且p=&data 则正确引⽤成员a的⽅式是______。
A) p.data.a B) (*p).a C) p->data.a D) (*p).data.a
10. 以⼆进制只读⽅式打开⼀个已有的⽂本⽂件file1,正确调⽤fopen函数的⽅式是______。A)FILE *fp; B)FILE *fp;
fp=fopen("file1","rb"); fp=fopen("file1","r+");
C)FILE *fp; D)FILE *fp;
fp=fopen("file1","r"); fp=fopen("file1","rb+");
⼆. 填空题:(每空1分,共20分)
请将正确答案填在答题卡相应题⽬的横线上。答在试卷上不得分。
1.C程序⼀个函数的定义由__________和____________两部分组成。2.C语⾔的整型变量可分为基本型、短整型、
________和________。3.C语⾔在判断⼀个量是否为“真”时,以____代表“假”,以____代表“真”。4.C语⾔中的break 语句只能⽤于______和______语句。
5.对________和________型数组不赋初值,系统会对所有元素⾃动赋以0值。
6.C语⾔中“⽂件包含”是通过____________命令完成的,⽽符号常量是通过____________
命令定义的。
7.对于数组x[5][5],*(x+2)+3表⽰__________,*(x[3]+2)表⽰__________。
8.若定义:struct {int y, m, d;} today, *pdata; 则为today 分配内存 ____ 字节,为pdata 分
配内存 ____ 字节。
9.C语⾔⽂件按数据的存放形式可分为________⽂件和_________⽂件。10.C语⾔⽂件是⼀个________序列,这类⽂件称为_________⽂件。
三. 程序归纳题(每题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( intnum[], int size ){ int i=0, tmp;
while( i
{ 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); }
c语言大学教程
阅读程序,将其运⾏结果填在答题卡相应题⽬的横线上。答
在试卷上不得分。
1. #include "stdio.h"
void main() {
staticint a[]={1,2,3,4,5,6},*p;
p=a; *(p+3)+=2;
printf("%d,%d\n",*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
#include
void sort( char **str, int n){
char *tmp; inti,j;
for( i=0; i
for( j=0; j
if(strcmp(str[j],str[j+1])>0)
tmp=str[j], str[j]=str[j+1], str[j+1]=tmp; }
void main() {
char **ps,*str[3]={ "BOOK","COMPUTER","CHINA"};int i;
ps=str; sort(ps,3);
for(i=0; i<3; i++) printf("%d %s ",i+1, str[i]); }
4. #include
intleap_year(int year){
return year%4==0 && year%100!=0 || year%400==0; }
void main(){
intmonth_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_ar))
month_day[1]++;
for(i=1,days=mdate.day;i
days+=month_day[i-1];
printf("%d-%d is the %dth day in %d",
5. #include
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}, s2[5];
add(s2, s1, 5);
while(i--) printf("%2d", s2[i]); }
阅读下列程序,在指定位置上填⼊适当的内容使程序完整。
请勿改动其它内容。请将正确答案填在答题卡上。答在试卷上不得分。
1.函数insert将⼀个指定的单精度数按递减规律插⼊数组num中,注:数组num中已有12
个按照递减顺序排好序的单精度数。
void insert( float num[13],float new )
{ int i=11;
/***answer begin***/
……
/***answer end***/ }
2.编写函数mycmp实现库函数strcmp的功能:两个字符串的⽐较。
intmycmp(char *p1,char *p2)
{ /***answer begin***/
……
/***answer end***/ }
3.设有三个候选⼈,每次输⼊⼀个得票的候选⼈的名字,要求最后输出各⼈得票结果。#include struct person
{ char name[20];
int count;
}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};
main()
{ inti,j; char leader_name[20];
for(i=1;i<=10;i++)
{/***answer begin***/
……
/***answer end***/}
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
}
4. 从键盘上输⼊⼀个字符串,将其中的⼩写字母转换成⼤写字母,然后输出到名为“test”的
⽂本⽂件中保存。输⼊字符串以“!”结束。
#include
void main()
{
int i; char str[80]; FILE *fp;
if( (fp=fopen("test","w"))==NULL)
{ printf("cannot open file\n");
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 extern 10 static
11 #include 12 #define 13 &x[2][3] 14 x[3][2] 15 6
16 2 17⽂本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 COMPUTER
4 5-1 is the 122th day in 2008
5 2 3 0 1 2 注:标点符号错误不另扣分
五. 程序设计题(每题10分,共40分)
1.num[12]=new; 存储新值:2分
while( i>=0 && data[i]
{ 复合语句:1分
new=num[i+1]; 暂存新值:1分
num[i+1]=num[i]; 更新旧值:2分

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。