安徽大学期末试卷安徽大学c语言试卷(3).doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽大学20 -20 学年第学期
《C语言程序设计》期末考试试卷(A卷120分钟)年级院系专业姓名学号座位号
1.下面程序段执行后,a的值是______。
int a;
printf("%d \n", (a=3*5, a*4, a+5) );
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.执行下列语句后,a的值是______。
int a=8;
a+=a-=a*a;
A)-240 B)64 C)112 D)-112
4.执行下列语句后,输出的值是______。
int x=6;
printf("%d,%d,%d\n",x,x++,--x);
A)5,5,5 B)6,5,5 C)7,6,5 D)5,6,5
5.指出下列程序段所表示的逻辑关系是______。
if(a<b)
{
if(c==d)
x=1;
}
else
x=2;
A)若a<b且c=d,则x=1;若a>=b且c!=d,则x=2。
B)若a<b且c=d,则x=1;若a>=b,则x=2。
C)若a<b且c=d,则x=1;若a<b且c!=d,则x=2。
D)若a<b且c=d,则x=1;若c!=d,则x=2。
6.下列程序段的执行结果是______。
int i,x;
for(i=1,x=1;i<=20;i++)
{
if(x>=10) break;
if(x%2==1)
{
x+=5;
continue;
}
x-=3;
}
printf("%d,%d\n",x,i);
A)6,4 B)7,5 C)10,6 D)14,7 7.下列程序的执行结果是______。
#include "stdio.h"
#include "string.h"
main()
{
static char s[10]={'C','h','i','n','a'};
printf("%d\n",strlen(s));
}
A)6 B)5 C)11 D)10 8.函数的数据类型是______决定的。
A)调用该函数时临时B)调用函数的实参
C)return语句的表达式类型D)函数的形参
9.执行下列程序段后,*(p+5)的值是______。
static char s[]="Hello";
char *p;
p=s;
A)'o' B)'\0' C)'o'的地址D)不确定的值10.以下程序的输出结果是______。
#include "stdio.h"
main()
{
static int a[]={1,2,3,4,5,6},*p;
p=a; *(p+3)+=2;
printf("%d,%d\n",*p,*(p+3));
}
A)0,5 B)1,5 C)0,6 D)1,6
11.在以下定义中,标识符P______。
int (*p)[3];
A)定义不合法。
B)是一个指针数组名,每个元素是一个指向整型变量的指针。
C)是一个指针,它指向一个具有三个元素的一维数组。
D)是一个指向整型变量的指针。
12.sizeof(int)是______。
A)一个整型表达式B)一个不合法的表达式
C)一种函数调用D)一条语句
13.有宏定义:#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 14.设有程序段:
union MYTYPE { long x; int y[4]; char z[6];}them;
main(){ printf(“%d\n”,sizeof(them)); }
则程序的输出结果是______。
A)18 B)6 C)8 D)4
15.以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式
是______。
A)FILE *fp; B)FILE *fp;
fp=fopen("file1","r"); f p=fopen("file1","r+");
C)FILE *fp; D)FILE *fp;
fp=fopen("file1","rb");
fp=fopen("file1","rb+");
16. 设有如下定义:
struct sk {int a; float b;} data,*p;
且 p=&data; 则对data中a域的正确引用是 ( ).
A) (*p).data.a B) (*p).a
C) p->data.a D) p.data.a
17.若fun( int x) { printf(“%d\n”,x);}, 则fun_______。
A)返回值为 void 类型B)返回值无法确定
C)返回值为 int 类型D)没有返回值
18.实参和和形参之间的数据传送是_______。
A)地址传送B)实参传给形参,再由形参传给实参
C)值传送D)由用户指定传送方式
19.以下程序的输出结果是______。
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
20.下列程序段的输出是______。
int fun( int x)
{
static int a=3;
a+=x;
return a;
}
void main( void )
{
int k=2, m=1, n;
n=fun(k);
n=fun(m);
printf( “%d\n”, n);
}
A)3 B)4 C)6 D)9
1.C语言有、、、和五种常量。
2.C程序的变量不仅要事先,而且还必须后才能使用。
3.C语言在给出逻辑运算结果时,以代表“真”,以代表“假”;在判断一个量是否为“真”时,以代表“假”,以代表“真”。
4.C语言规定只有数组和数组才能初始化;这种数组不赋初值,系统会对所有数组元素自动赋以值。
5.对两个指针变量进行关系运算的条件是,其结果表
示。
6.一个C文件是一个或,它把数据看成是,对文件的存取是以为单位。
1.下列程序是求Fibonacci数列:1,1,2,3,5,8……的前40个数,要求每行输出4个数。
main()
{
long int f1,f2;
int i;
f1=1 ; f2=1;
for(i=1;i<= ;i++)
{
printf("%12ld %12ld ",f1,f2);
if( ) printf("\n");
f1= ;
f2= ;
}
}
2.下列程序是求一个3×4矩阵中值最小元素。
min_value( )
{ int i,j,k,min;
=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if( ) min= ;
;
}
main()
{ static int a[3][4]={ 1,2,3,4,5,6,7,8,9 }; printf("min value is %d\n",min_value( )); }
3.下列程序的功能是:将字符串a复制到字符串b中。
void copy_string(char *from, ⑾ )
{
for(;*from; )
;
*to= ;
}
main()
{ char *a="I am a boy!";
char *b="This is a test!";
;
printf("a=%s\a=%s\n",a,b);
}
4.有一个班,3个学生,各学四门棵。
下列程序的功能是:查找有一门以上课程不及格的学生,打印出他们的全部课程的成绩。
main()
{ ;
static float score[3][4]=
{1,2,3,4,5,6,7,8,9,10,11,12};
search(score,3);
}
void search( float (*p)[4], int n)
{ int i,j,flag;
for(j=0;j<n;j++)
{ flag=0;
for(i=0;i<4;i++)
if( ) flag=1;
if( )
{ printf("No.%d is fail\n",j+i);
for(i=0; ;i++)
printf("%5.1f ", );
printf("\n");
}
}
}
安徽大学20 -20 学年第学期
《C语言程序设计》期末考试试卷(B卷120分钟)
一. 单项选择题:(每题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. 定义: struct sk {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分)
7.C程序一个函数的定义由_________和_________两部分组成。
8.C语言的整型变量可分为基本型、短整型、________和________。
9.C语言在判断一个量是否为“真”时,以____代表“假”,以____代表“真”。
10.C语言中的break语句只能用于______和______语句。
11.对________和________型数组不赋初值,系统会对所有元素自动赋以0值。
12.C语言中“文件包含”是通过____________命令完成的,而符号常量是通过____________命令定义的。
13.对于数组x[5][5],*(x+2)+3表示_________ _,*(x[3]+2)表示__________。
14.若定义:struct {int y, m, d;} today, *pdata; 则为today 分配内存 __ __ 字节,为pdata分配内存 __ __ 字节。
15.C语言文件按数据的存放形式可分为________文件和_________文件。
16.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( int num[], int size ){ int i=0, tmp;
while(i<size/2)
{tmp=num[i],num[i]=num[size-i-1],num[size-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,%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 <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(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 <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_day[1]++;
for(i=1,days=mdate.day;i<mdate.month;i++)
days+=month_day[i-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}, s2[5];
add(s2, s1, 5);
while(i--) printf("%2d", s2[i]); }
五. 程序设计题(每题10分,共40分)
1.函数insert将一个指定的单精度数按递减规律插入数组num中,
注:数组num中已有12个按照递减顺序排好序的单精度数。
void insert( float num[13], float new )
{ int i=11;
/***answer begin***/
/***answer end***/ }
2.编写函数mycmp实现库函数strcmp的功能:两个字符串的比较。
int mycmp(char *p1,char *p2)
{ /***answer begin***/
/***answer end***/ }
3.设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。
#include <string.h>
struct person
{ char name[20];
int count;
}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};
main()
{ int i,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 <stdio.h>
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***/
}。