安徽大学学年c语言期末卷子Word下载.docx
《安徽大学学年c语言期末卷子Word下载.docx》由会员分享,可在线阅读,更多相关《安徽大学学年c语言期末卷子Word下载.docx(18页珍藏版)》请在冰点文库上搜索。
![安徽大学学年c语言期末卷子Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/088eb1d9-dd27-447f-9963-0230e92c5643/088eb1d9-dd27-447f-9963-0230e92c56431.gif)
6.下列程序段的执行结果是______。
inti,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,4B)7,5C)10,6D)14,7
7.下列程序的执行结果是______。
#include"
stdio.h"
string.h"
main()
staticchars[10]={'
C'
'
h'
i'
n'
a'
};
%d\n"
strlen(s));
A)6B)5C)11D)10
8.函数的数据类型是______决定的。
A)调用该函数时临时B)调用函数的实参
C)return语句的表达式类型D)函数的形参
9.执行下列程序段后,*(p+5)的值是______。
staticchars[]="
Hello"
;
char*p;
p=s;
A)'
o'
B)'
\0'
C)'
的地址D)不确定的值
10.以下程序的输出结果是______。
staticinta[]={1,2,3,4,5,6},*p;
p=a;
*(p+3)+=2;
*p,*(p+3));
A)0,5B)1,5C)0,6D)1,6
11.在以下定义中,标识符P______。
int(*p)[3];
A)定义不合法。
B)是一个指针数组名,每个元素是一个指向整型变量的指针。
C)是一个指针,它指向一个具有三个元素的一维数组。
D)是一个指向整型变量的指针。
12.sizeof(int)是______。
A)一个整型表达式B)一个不合法的表达式
C)一种函数调用D)一条语句
13.有宏定义:
#defineMULT1(a,b)a*b
#defineMULT2(a,b)(a)*(b)
在后面的程序中有宏引用:
y=MULT1(3+2,5+8);
z=MULT2(3+2,5+8);
则y和z的值是______。
A)y=65,z=65B)y=21,z=65C)y=65,z=21D)y=21,z=21
14.设有程序段:
unionMYTYPE{longx;
inty[4];
charz[6];
}them;
main(){printf(“%d\n”,sizeof(them));
则程序的输出结果是______。
A)18B)6C)8D)4
15.以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式
是______。
A)FILE*fp;
B)FILE*fp;
fp=fopen("
file1"
"
r"
);
r+"
C)FILE*fp;
D)FILE*fp;
rb"
rb+"
16.设有如下定义:
structsk{inta;
floatb;
}data,*p;
且p=&
data;
则对data中a域的正确引用是().
A)(*p).data.aB)(*p).aC)p->
data.aD)p.data.a
17.若fun(intx){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++)
%s\n"
p);
A)ABCDB)AC)DD)ABCD
BCDBCABC
CDCBAB
DDAA
20.下列程序段的输出是______。
intfun(intx)
{
staticinta=3;
a+=x;
returna;
}
voidmain(void)
intk=2,m=1,n;
n=fun(k);
n=fun(m);
printf(“%d\n”,n);
A)3B)4C)6D)9
得分
二.填空题:
(每空1分,共20分)。
1.C语言有⑴、⑵、⑶、⑷和⑸五种常量。
2.C程序的变量不仅要事先⑹,而且还必须⑺后才能使用。
3.C语言在给出逻辑运算结果时,以⑻代表“真”,以⑼代表“假”;
在判断一个量是否为“真”时,以⑽代表“假”,以⑾代表“真”。
4.C语言规定只有⑿数组和⒀数组才能初始化;
这种数组不赋初值,系统会对所有数组元素自动赋以⒁值。
5.对两个指针变量进行关系运算的条件是⒂,其结果表示⒃。
6.一个C文件是一个⒄或⒅,它把数据看成是⒆,对文件的存取是以⒇为单位。
三.程序设计题(每空2分,共40分)
阅读下列程序,在横线上填入适当的内容使程序完整。
请将正确答案填在答题卡相应题目的横线上。
1.下列程序是求Fibonacci数列:
1,1,2,3,5,8……的前40个数,要求每行输出4个数。
longintf1,f2;
inti;
f1=1;
f2=1;
for(i=1;
=⑴;
%12ld%12ld"
f1,f2);
if(⑵)printf("
\n"
f1=⑶;
f2=⑷;
2.下列程序是求一个3×
4矩阵中值最小元素。
min_value(⑸)
{inti,j,k,min;
⑹=array[0][0];
for(i=0;
3;
for(j=0;
j<
4;
j++)
if(⑺)min=⑻;
⑼;
{staticinta[3][4]={1,2,3,4,5,6,7,8,9};
minvalueis%d\n"
min_value(⑽));
3.下列程序的功能是:
将字符串a复制到字符串b中。
voidcopy_string(char*from,⑾)
;
for(;
*from;
⑿)
⒀;
*to=⒁;
{char*a="
Iamaboy!
"
char*b="
Thisisatest!
⒂;
a=%s\a=%s\n"
a,b);
4.有一个班,3个学生,各学四门棵。
下列程序的功能是:
查找有一门以上课程不及格的学生,打印出他们的全部课程的成绩。
{⒃;
staticfloatscore[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
search(score,3);
voidsearch(float(*p)[4],intn)
{inti,j,flag;
n;
{flag=0;
if(⒄)flag=1;
if(⒅)
{printf("
No.%disfail\n"
j+i);
⒆;
%5.1f"
⒇);
}
参考答案:
CBDBBCBCBDCABBBBCCAC
(每题2分,共20分)
1常数2字符3字符串4、转义序列5符号常量
6定义7赋值819010非0
11012static13extern14015指向同一数组
16位置的前后17字节流18二进制流19一连串的字符20字符(字节)
三.程序归纳题(每题2分,共40分)
1202i%5==0
3f1+f24f1+f2
5intarray[3][4]6min
7min<
array[i][j]8array[i][j]
9returnmin10a
11char*to12from++,to++
13*to=*from14‘\0’
15copy_string(a,b)16voidsearch(float(*p)[4],intn)
17p[j][i]<
6018flag==1
19i<
420p[j][i]
安徽大学2008-2009学年第学期
《C语言程序设计》期末考试试卷(B卷120分钟)
1.执行程序:
后,a的值是______。
A)60B)20C)15D)10
2.程序段:
intx=023;
的输出是______。
3.程序段:
staticchars[10]={'
A)6B)5C)11D)10
4.若fun(intx){printf(“%d\n”,x);
A)返回值为void类型B)返回值类型无法确定
5.有宏定义:
且引用宏:
6.程序段chars[]="
*p;
执行后,*(p+5)的值是______。
7.程序段:
char*s=”ABCD”,*p;
p++)printf("
A)ABCDB)AC)DD)ABCD
8.若定义:
int(*p)[3];
则标识符p______。
9.定义:
则正确引用成员a的方式是______。
A)p.data.aB)(*p).aC)p->
data.aD)(*p).data.a
10.以二进制只读方式打开一个已有的文本文件file1,正确调用fopen函数的方式是______。
B)FILE*fp;
C)FILE*fp;
D)FILE*fp;
(每空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{inty,m,d;
}today,*pdata;
则为today分配内存____字节,为pdata分配内存____字节。
15.C语言文件按数据的存放形式可分为________文件和_________文件。
16.C语言文件是一个________序列,这类文件称为_________文件。
三.程序归纳题(每题2分,共10分)
阅读下列函数,总结其主要功能填在答题卡相应的横线上。
1.intfun1(char*str){char*ptr=str;
while(*ptr++);
returnptr-str-1;
2.doublefun2(doublex,doubley,doublez){
returnx>
(y>
z?
y:
z)?
x:
z);
3.voidfuns3(intnum[],intsize){inti=0,tmp;
while(i<
size/2)tmp=num[i],num[i]=num[size-i-1],num[size-i-1]=tmp,i++;
4.voidfun4(char*f,char*t)
{for(;
*f!
='
f++,t++)*t=*f;
*t='
5.voidfun5(char*ps){inta1=0,a2=0;
while(*ps!
='
)
{if(*ps>
&
*ps<
z'
)a1++;
elseif(*ps>
0'
9'
)a2++;
p++;
%d,%d\n"
a1,a2);
四.程序分析题(每题2分,共10分)
阅读程序,将其运行结果填在答题卡相应题目的横线上。
1.#include"
voidmain(){
2.#include"
voidmain(){intx=1;
{intx=2;
{intx=3;
%2d"
x);
3.#include<
stdio.h>
#include<
string.h>
voidsort(char**str,intn){
char*tmp;
inti,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;
voidmain(){
char**ps,*str[3]={"
BOOK"
,"
COMPUTER"
CHINA"
};
ps=str;
sort(ps,3);
i++)printf("
%d%s"
i+1,str[i]);
4.#include<
intleap_year(intyear){
returnyear%4==0&
year%100!
=0||year%400==0;
voidmain(){
intmonth_day[]={31,28,31,30,31,30,31,31,30,31,30,31},days,i;
structdate{
intyear;
intmonth;
intday;
}mdate={2008,5,1};
if(leap_year(mdate.year))
month_day[1]++;
for(i=1,days=mdate.day;
mdate.month;
days+=month_day[i-1];
%d-%disthe%dthdayin%d"
mdate.month,mdate.day,days,mdate.year);
5.#include<
voidadd(int*x,int*y,intn){
while(n--)*x+++=*y++;
inti=5;
staticints1[]={2,1,0,3,2},s2[5];
add(s2,s1,5);
while(i--)printf("
s2[i]);
五.程序设计题(每题10分,共40分)
阅读下列程序,在指定位置上填入适当的内容使程序完整。
请勿改动其它内容。
请将正确答案填在答题卡上。
1.函数insert将一个指定的单精度数按递减规律插入数组num中,注:
数组num中已有12个按照递减顺序排好序的单精度数。
voidinsert(floatnum[13],floatnew)
{inti=11;
/***answerbegin***/
……
/***answerend***/}
2.编写函数mycmp实现库函数strcmp的功能:
两个字符串的比较。
intmycmp(char*p1,char*p2)
{/***answerbegin***/
3.设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。
structperson
{charname[20];
intcount;
}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};
main()
{inti,j;
charleader_name[20];
=10;
{/***answerbegin***/
/***answerend***/}
%5s:
leader[i].name,leader[i].count);
4.从键盘上输入一个字符串,将其中的小写字母转换成大写字母,然后输出到名为“test”的文本文件中保存。
输入字符串以“!
”结束。
voidmain()
charstr[80];
FILE*fp;
if((fp=fopen("
test"
w"
))==NULL)
cannotopenfile\n"
exit(0);
Inputastring(endwith!
):
gets(str);
/***answerbegin***/
……
/***answerend***/
CBBCBBACBA
1函数说明2函数体3长整型4无符号型50
6非07switch8循环9extern10static
11#include12#define13&
x[2][3]14x[3][2]156
16217文本18二进制19字符(