二级c语言程序设计.docx
《二级c语言程序设计.docx》由会员分享,可在线阅读,更多相关《二级c语言程序设计.docx(53页珍藏版)》请在冰豆网上搜索。
二级c语言程序设计
1
一.单项选择题:
(每题2分,共20分)
下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确选项填在答题卡相应题目的横线上。
答在试卷上不得分。
1.执行程序:
inta;printf("%d\n",(a=3*5,a*4,a+5));后,a的值是______。
A)60B)20C)15D)10
2.程序段:
intx=023;printf("%d\n",--x);的输出是______。
A)19B)18C)23D)22
3.程序段:
staticchars[10]={'C','h','i','n','a'};printf("%d\n",strlen(s));的输出是______。
A)6B)5C)11D)10
4.若fun(intx){printf(“%d\n”,x);},则fun_______。
A)返回值为void类型B)返回值类型无法确定
C)返回值为int类型D)没有返回值
5.有宏定义:
#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
6.程序段chars[]="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)ABCDB)AC)DD)ABCD
BCDBCABC
CDCBAB
DDAA
8.若定义:
int(*p)[3];则标识符p______。
A)定义不合法。
B)是一个指针数组名,每个元素是一个指向整型变量的指针。
C)是一个指针,它指向一个具有三个元素的一维数组。
D)是一个指向整型变量的指针。
9.定义:
structsk{inta;floatb;}data,*p;且p=&data;则正确引用成员a的方式是______。
A)p.data.aB)(*p).aC)p->data.aD)(*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{inty,m,d;}today,*pdata;则为today分配内存____字节,为pdata分配内存____字节。
9.C语言文件按数据的存放形式可分为________文件和_________文件。
10.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:
(y>z?
y:
z);}
3.voidfuns3(intnum[],intsize){inti=0,tmp;
while(i4.voidfun4(char*f,char*t)
{for(;*f!
='\0';f++,t++)*t=*f;*t='\0';}
5.voidfun5(char*ps){inta1=0,a2=0;
while(*ps!
='\0')
{if(*ps>='a'&&*ps<='z')a1++;
elseif(*ps>='0'&&*ps<='9')a2++;
p++;}
printf("%d,%d\n",a1,a2);}
得分
四.程序分析题(每题2分,共10分)
阅读程序,将其运行结果填在答题卡相应题目的横线上。
答在试卷上不得分。
1.#include"stdio.h"
voidmain(){
staticinta[]={1,2,3,4,5,6},*p;
p=a;*(p+3)+=2;
printf("%d,%d\n",*p,*(p+3));}
2.#include"stdio.h"
voidmain(){intx=1;
{intx=2;
{intx=3;printf("%2d",x);}
printf("%2d",x);}
printf("%2d",x);}
3.#include
#include
voidsort(char**str,intn){
char*tmp;inti,j;
for(i=0;ifor(j=0;jif(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"};
inti;
ps=str;sort(ps,3);
for(i=0;i<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;idays+=month_day[i-1];
printf("%d-%disthe%dthdayin%d",
mdate.month,mdate.day,days,mdate.year);}
5.#include
voidadd(int*x,int*y,intn){
while(n--)*x+++=*y++;}
voidmain(){
inti=5;staticints1[]={2,1,0,3,2},s2[5];
add(s2,s1,5);
while(i--)printf("%2d",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***/
……
/***answerend***/}
3.设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。
#include
structperson
{charname[20];
intcount;
}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};
main()
{inti,j;charleader_name[20];
for(i=1;i<=10;i++)
{/***answerbegin***/
……
/***answerend***/}
for(i=0;i<3;i++)
printf("%5s:
%d\n",leader[i].name,leader[i].count);
}
4.从键盘上输入一个字符串,将其中的小写字母转换成大写字母,然后输出到名为“test”的文本文件中保存。
输入字符串以“!
”结束。
#include
voidmain()
{
inti;charstr[80];FILE*fp;
if((fp=fopen("test","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);}
printf("Inputastring(endwith!
):
");
gets(str);
/***answerbegin***/
……
/***answerend***/
}
2
一、选择题(本题共20道小题,共40分。
)
1.有下列程序
#include
main()
{
union
{
intk;
chari[2];
}*s,a;