《C语言程序设计Ⅰ》寒假作业.docx
《《C语言程序设计Ⅰ》寒假作业.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计Ⅰ》寒假作业.docx(27页珍藏版)》请在冰点文库上搜索。
《C语言程序设计Ⅰ》寒假作业
C语言程序设计寒假作业
说明:
1、此次作业要求打印(正反面打印)出来后直接在打印纸上答题,开学第1周理论课时带来;
2、寒假作业分三部分,其中第2、3部分为学期末抽查考试试卷和期末考试试卷,大家认真做一遍,开学第一周公布答案;
3、开学第一周实验课测试指法,请大家寒假期间练习;
4、希望同学们假期复习巩固所学内容,学有余力的同学尽量做预习工作。
一、单选题
1、下面关于C语言特点的描述,不正确的是()。
A、C语言兼有高级语言和低级语言的双重特点,执行效率高
B、C语言既可以用来编写应用程序,又可以用来编写系统软件
C、C语言是一种结构式模块化程序设计语言
D、C语言的可移植性较差
2、C语言规定,在一个源程序中,main函数的位置()。
A、必须在最开始B、可以任意C、必须在最后D、必须在系统调用的库函数的后面
3、下列说法中正确的是()。
A、C程序书写时,不区分大小写字母B、C程序书写时,一行只能写一个语句
C、C程序书写时,一个语句可分成几行书写D、C程序书写时每行必须有行号
4、以下关于算法的说法中,错误的是()。
A、一个算法应包含有限个步骤
B、在计算机上实现的算法是用来处理数据对象的
C、算法的目的是为了求解
D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现
5、下列数据中,不合法的C语言实型数据是()。
A、0.123B、123e3C、2.1e3.5D、789.0
6、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是()。
A、a==1B、++i;C、a=a++=5;D、a=int(i);
7、已有定义inta=6;则执行语句a+=a-=a*a;后,a的值为()。
A、36B、0C、-24D、-60
8、若有以下程序段,其输出结果是()。
inta=0,b=0,c=0;
c=(a-=a-5),(a-=3,++b);
printf(“%d,%d,%d\n”,a,b,c);
A、0,0,-10B、2,1,5C、-10,-3,-10D、3,3,-10
9、有以下定义:
inti=10,j=1;执行语句printf("%d,%d\n",i--,++j);后输出结果是()。
A、9,2B、10,2C、9,1D、10,1
10、字符串"\t\"\065\xff\n"的长度为()。
A、5B、14C、8D、输出项不合法,无正常输出
11、已有定义:
charc;执行赋值语句c=('z'-'a')/2+'A';后,变量c的值为()。
A、MB、NC、OD、Q
12、以下4个选项中,不能看做一条语句的是()。
A、;B、a=5,b=2.5,c=3.6;C、if(a<5);D、if(b!
=5)x=2;y=6;
13、设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是()。
A、a&&bB、a<=bC、a||b+c&&b-cD、!
((a
c||1)
14、若有定义语句inta,b;doublex;则下列选项中没有错误的是()。
A、switch(x%2)B、switch((int)x/2.0)
{case0:
a++;break;{case0:
a++;break;
case1:
b++;break;case1:
b++;break;
default:
a++;b++;default:
a++;b++;
}}
C、switch((int)x%2)D、switch((int)(x)%2)
{case0:
a++;break;{case0.0:
a++;break;
case1:
b++;break;case1.0:
b++;break;
default:
a++;b++;default:
a++;b++;
}}
15、以下程序段的输出结果是()。
main()
{intx,y,z;
x=0;y=2;z=3;
switch(x)
{case0:
switch(y==2)
{case1:
printf("*");break;
case2:
printf("%");break;
}
case1:
switch(z)
{case1:
printf("$");
case2:
printf("*");break;
default:
printf("#");
}
}
}
A、*B、%C、$*D、*#
16、以下程序的输出结果是()。
main()
{inta=45,b=40,c=50,d;
d=a>=30?
b:
c;
switch(d)
{case30:
printf("%d",a);
case40:
printf("%d",b);
case50:
printf("%d",c);break;
default:
printf("#");
}
}
A、304050#B、304050C、4050D、#
17、以下程序的输出结果是()。
main()
{inta,b,c,x=35;
a=b=c=0;x=35;
if(!
a)
x--;
elseif(b);
if(c)
x=3;
else
x=4;
printf("%d\n",x);
}
A、35B、4C、3D、4
18、对以下循环:
for(a=0,b=0;(b!
=123)&&(a<=4);a++);说法正确的是()。
A、无限循环B、循环次数不定C、执行4次D、执行5次
19、在下列程序中,while循环的循环次数是()。
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;
}
......
}
A、1B、10C、6D、死循环、不能确定次数
20、以下程序的输出结果是()。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)
break;
elsei--;
}
i+=11;
a+=i;
}
printf("%d\n",a);
}
A、21B、32C、33D、11
21、当输入为"quert?
"时,下面程序的执行结果是()。
main()
{while(putchar(getchar())!
='?
');}
A、quertB、RvfsuC、quert?
D、rvfsu?
22、以下能正确计算1×2×3×…×10的程序段是()。
A、do{i=1;s=1;s=s*i;i++;}while(i<=10);B、do{i=1;s=0;s=s*i;i++;}while(i<=10);
C、i=1;s=1;do{s=s*i;i++;}while(i<=10);D、i=1;s=0;do{s=s*i;i++;}while(i<=10);
23、以下能对一维数组a进行正确初始化的语句是()。
A、inta[10]=(0,0,0,0,0);B、inta[10]={};C、inta[]={0};D、inta[10]="abcdefg";
24、以下不能给数组的首元素赋值的语句是()。
A、inta[2]={1};B、inta[2]={1*2};C、inta[2];scanf(“%d”,a);D、inta[2];a[1]=1;
25、设有charstr[10];下列语句正确的是()。
A、scanf("%s",&str);B、printf("%c",str);C、printf("%s",str[0]);D、printf("%s",str);
26、以下不能对二维数组a进行正确初始化的语句是()。
A、inta[2][3]={0};B、inta[][3]={{1,2},{0}};
C、inta[2][3]={{1,2},{3,4},{5,6}};D、inta[][3]={1,2,3,4,5,6};
27、设有两字符串"Beijing"、"China"分别存放在字符数组str1[20],str2[20]中,下面语句中能把"China"连接到"Beijing"之后的为()。
A、strcpy(str1,str2);B、strcpy(str1,"China");C、strcat(str1,"China");D、strcat("Beijing",str2);
28、C语言规定:
函数返回值类型是由()。
A、return语句中的表达式类型决定B、调用该函数时的主调函数类型决定
C、调用该函数时系统临时决定D、定义该函数时所指定的函数类型决定
29、下面函数调用语句func((exp1,exp2),(exp3,exp4,exp5))中实参的个数为()。
A、1B、2C、4D、5
30、建立函数的目的之一是()。
A、提高程序的执行效率.B、提高程序的可读性C、减少程序的篇幅D、减少程序文件所占内存
31、有如下程序,该程序的输出的结果是()。
intrunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
A、12B、13C、14D、15
32、有如下程序,该程序的输出结果是()。
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
}
main()
{printf(“%d\n”,fib(3));}
A、2B、4C、6D、8
33、以下函数的功能是:
通过键盘输入数据,为数组中的所有元素赋值。
在下划线处应填入的是()。
#defineN10
voidarrin(intx[N])
{inti=0;
while(iscanf("%d",_________);
}
A、x+IB、&x[i+1]C、x+(i++)D、&x[++i]
34、有如下程序段,运行的结果为()。
intf(inta,intb);
main()
{inti=2,p,k=1;
p=f(i,++k);
printf(“%d,%d”,k,p);
}
intf(inta,intb)
{intc;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
}
A、1,0B、2,0C、2,-1D、1,1
35、以下程序的运行结果是()。
main()
{inta=2,i;
for(i=0;i<3;i++)
printf(“%4d”,f(a));
}
f(inta)
{intb=0,c=3;
b++;c++;
return(a+b+c);
}
A、71013B、777C、7911D、789
二、编程题
1、编程实现以下功能:
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。
例如:
a=2,n=3,则Sn=2+22+222=246。
(其中的a,n由键盘输入,输入a、n的值分别为1和9)。
2、编程实现以下功能:
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13,求这个数列的前n(n>10,由键盘输入20)项之和。
3、编程实现以下功能:
计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个)。
4、编程实现以下功能:
在主函数中,由键盘输入10个互不相同的整数存放在一维数组a中,从键盘上输入数x,若x属于a数组,则将其从a中删除。
在主函数中,通过调用以下几个自定义函数分别完成x的查找和删除及删除x前后显示a的元素值。
自定义函数的首部及功能如下:
⑴voidmyout(intarr[],intn):
该函数用于输出含有n个整数的数组;
⑵intdelx(intarr[],intn,intx):
该函数用于删除n个数组元素中的值等于x的元素,并返回删除后数组元素的个数。
一、单选题(每题1分,共30分)
1、以下叙述不正确的是()。
A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个main函数
C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面
2、C语言程序经过连接以后生成的文件名的后缀为()。
A、.cB、.objC、.exeD、.cpp
3、C语言编译程序的首要工作是()。
A、检查C语言程序的语法错误B、检查C语言程序的逻辑错误
C、检查程序的完整性D、生成目标文件
4、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是()。
A、确定性B、有穷性C、零个或多个输出D、零个或多个输入
5、以下不属于结构化程序设计三种基本结构之一的是()。
A、顺序B、递归C、循环D、选择
6、下列可用于C语言用户标识符的一组是()。
A、void,define,WORDB、a3_b3,_123,CarC、For,-abc,IFCaseD、2a,DO,sizeof
7、若有说明语句:
charc='\72';则变量c()。
A、包含1个字符B、包含2个字符C、包含3个字符D、说明不合法,c的值不确定
8、当c的值不为0时,能正确将c的值赋给变量a和b的选项是()。
A、c=b=aB、(a=c)||(b=c)C、(a=c)&&(b=c)D、a=c=b
9、若已经定义好变量a,i且变量i已正确赋值,下列合法的语句是()。
A、a==1B、a=int(i);C、a=a++=5;D、++i;
10、设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为()。
A、intB、floatC、doubleD、不确定
11、若变量已定义为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是()。
A、10<回车>22<回车>33<回车>B、10.0,22.0,33.0<回车>
C、10.0<空格>22.0<空格>33.0<回车>D、102233<回车>
12、C语言中,定义PI为一个符号常量,下面正确的是()。
A.#includePI3.14B.includePI3.14
C.#definePI3.14D.definePI3.14
13、定义了一个整型变量x,能正确表示x的值小于1或大于10的C表达式是()。
A、x<1orx>10B、1010;D、x<1&&x>10;
14、已知intx=6,y=2,z;则执行语句z=x=x>y;后,变量z的值为()。
A.0B.1C.4D.5
15、下面程序段的输出结果是()。
intx=1,y=10;
if(x=y)printf("AAA");
elseprintf("BBB");
A、AAAB、BBBC、AAABBBD、不确定
16、下面程序段的输出结果是()。
for(x=9;x>0;x--)
if(x%3!
=0)
{printf("%d",--x);
continue;
}
A、741B、852C、963D、875421
17、下列说法中错误的是()。
A、只能在循环体内使用break语句
B、在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C、continue语句并没有使整个循环终止
D、continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
18、以下不能把字符串:
Hello!
赋给数组b的语句是()。
A、charb[10]={'H','e','l','l','o','!
'};B、charb[10];b="Hello!
";
C、charb[10];strcpy(b,"Hello!
");D、charb[10]="Hello!
";
19、若有定义inta[]={1,2,3},b[3]={1,2,3};,表达式a==b的结果是()。
A、不能比较B、结果为真C、结果为假D、结果不确定
20、有字符数组charstr[3][20]={"111","222","333"};执行以下语句后输出的是()。
printf("%s\n",str[2]);
A、111B、222C、333D、输出语句出错
21、已知:
chara[20]="abc",b[20]="abcde";则执行以下语句后的输出结果为()。
printf("%d",strlen(strcpy(a,b)));
A、5B、6C、11D、以上答案都不正确
22、判断字符串s1不等于字符串s2,以下正确的是()。
A、if(s1!
=s2)B、if(strcmp(s1,s2)!
=0)C、if(strcmp(s1,s2)>0)D、if(strcmp(s1,s2)<0)
23、下列描述中不正确的是()。
A、字符型数组中可以存放字符串B、可以对字符型数组进行整体输入、输出
C、可以对整型数组进行整体输入、输出D、不能通过赋值运算符“=”对字符型数组进行整体赋值
24、下列关于return语句的说法,正确的是()。
A、只能在除主函数之外的函数中出现一次B、必须在每个函数中都出现
C、在同一个函数中可以多次出现D、只能返回数值类型的值
25、以下关于函数参数的说法正确的是()。
A、实参与其对应的形参各占用独立的存储单元B、实参与其对应的形参共占用一个存储单元
C、形参是虚拟的,不占用存储单元D、实参与对应的形参同名时才共占用存储单元
26、以下所列的函数首部定义中,正确的是()。
A、doublefun(intx,inty)B、doublefun(intx;inty)C、doublefun(intx,inty);D、doublefun(intx,y);
27、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为()。
A、地址传递B、单向值传递
C、由实参传给形参,再由形参传回给实参D、由用户指定传递方式
28、数组名作为实参传递给形参时,数组名被处理为()。
A、该数组的长度B、该数组的元素个数C、该数组的首地址D、该数组中各元素的值
29、以下关于c函数的定义与调用,正确的是()。
A、函数定义可嵌套,函数调用不可嵌套B、函数定义和函数调用都可以嵌套
C、函数定义不可以嵌套,函数调用可以嵌套D、函数定义和函数调用都不可以嵌套
30、关于C的函数,以下叙述中正确的是()。
A、实参和形参可以起相同的名字,这样可以节省存储单元
B、调用函数时,实参和形参的个数必须相同,对应参数的数据类型也必须一致
C、所有函数都能被其他函数调用,而且主调函数必须在被调函数后面
D、函数中允许出现多个return语句,因此运行程序后函数可以得到多个返回值
二、程序分析题(每题5分,共20分)
1、写出以下程序运行结果:
main()
{inta[3][3]={1,1,1,2,2,2,3,3,3},i=0,sum=0;
for(i=0;i<3;i++)
sum=sum+a[1][i];
printf("%d\n",sum);
}
2、写出以下程序运行的结果。
main()
{inta=7;
switch(a)
{case10:
case9:
a++;
case8:
case7:
a+=a;
case6:
a+=3;break;
default:
a+=4;
}
printf("a=%d\n",a);
}
3、程序运行后若从键盘输入1357,写出程序运行的结果。
main()
{inta,b;
scanf("%d",&b);
while(b!
=0)
{a=b%10;
b=b/10;
printf("%d",a);
}
}
4、以下程序运行后若从键盘输入GZ2010AsiaGames,写出程序运行结果。
main()
{voidmyf(charp[]);
chara[100];
gets(a);
myf(a);
puts(a);
}
voidmyf(charp[])
{inti=0;
while(p[i]!
='\0')
{while(p[i]>='0'&&p[i]<='9')
strcpy(p+i,p+i+1);
i++;
}
}
三、程序填空题(每空2分,共30分)