期末复习题目(1)

玛丽莲梦兔
775次浏览
2020年08月03日 23:41
最佳经验
本文由作者推荐

创业者协会-挪威有哪些城市


C语言期末复习题(一)

━━━━━━━━━━━━━━━━━
一、单项选择 共10题 (共计20分)
━━━━━━━━━━━━━━━━━
第1题 (2.0分)
在定义构造数据类型时,不能()。
A:说明变量
B:说明存储类型
C:初始化
D:末尾不写分号

答案:D

第2题 (2.0分)
下列运算符中优先级最高的是()。
A:<
B:+
C:&&
D:!=

答案:B

第3题 (2.0分)
已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。
A:0
B:语法错
C:1
D:假

答案:C

第4题 (2.0分)
设有说明语句:char a='72';则变量a()。
A:包含1个字符
B:包含2个字符
C:包含3个字符
D:说明不合法

答案:A

第5题 (2.0分)
假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,
则数组x在内存中所占字节数是()。


A:3
B:6
C:10
D:20

答案:D

第6题 (2.0分)
执行下列程序后,其输出结果是()。
main()
{int a=9;
a+=a-=a+a;
printf(
}
A:18
B:9
C:-18
D:-9

答案:C

第7题 (2.0分)
下列程序运行结果为:
#define P 3
#define S(a) P*a*a
main()
{int ar;
ar=S(3+5);
printf(
}
A:192
B:29
C:27
D:25

答案:B

第8题 (2.0分)
以下程序段的输出结果为()。

char c[]=

int i=0;


do ;while(c[i++]!='0');printf(
A:abc
B:ab
C:2
D:3

答案:D

第9题 (2.0分)
以下程序的执行结果是_______.
main()
{ int num = 0;
while( num <= 2 ) { num++; printf(

A:0,1,2
B:1,2,
C:1,2,3,
D:1,2,3,4,

答案:C

第10题 (2.0分)
在C语言的函数中,下列正确的说法是()。
A:必须有形参
B:形参必须是变量名
C:可以有也可以没有形参
D:数组名不能作形参

答案:C

━━━━━━━━━━━━━━━━
二、程序填空 共5题 (共计25分)
━━━━━━━━━━━━━━━━

第1题 (5.0分)
*-------------------------------------- -----------------
【程序填空】
----------------- ----------------------------------------

功能:用冒泡法对数组a 进行由小到大的排序。

-------------- -----------------------------------------*
#include
void fun(int a[],int n)
}


{
int i,j,t;
***********SPACE***********
for (j=0; 【?】;j++)
***********SPACE***********
for (i=0; 【?】;i++)
***********SPACE***********
if(【?】)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
main()
{
int i,a[10]={3,7,5,1,2,8,6,4,10,9};
***********SPACE***********
【?】;
for(i=0;i<10;i++)
printf(
}
答案:

=======(答案1)=======
j<=n-1
=========或=========
n-1>=j
=========或=========
j<=-1+n
=========或=========
-1+n>=j
=========或=========
j=========或=========
n>j
=========或=========
j
=======(答案2)=======
i=========或=========
n-j-1>i
=========或=========


i=========或=========
n-1-j>i
=========或=========
i<=n-j-2
=========或=========
i<=n-2-j

=======(答案3)=======
a[i]>a[ i + 1 ]
=========或=========
a[ i + 1 ]
=======(答案4)=======
fun(a,10)


第2题 (5.0分)
*------------------------------ -------------------------
【程序填空】
--------- ------------------------------------------------

功能:从低位开始取出长整型变量s中奇数位上的数,依次构成一
个新数放在t中。

-------------------------------- -----------------------*

#include
#include
void fun (long s, long *t)
{
long sl=10;
s = 10;
***********SPACE***********
*t = s 【?】 10;
while(s>0)
{
***********SPACE***********
s = 【?】;
***********SPACE***********
*t = s%10*sl【?】;
***********SPACE***********
sl = sl 【?】10;
}


}

main()
{
long s, t;
printf(
scanf(
fun(s, &t);
printf(
}
答案:

=======(答案1)=======
%

=======(答案2)=======
s100

=======(答案3)=======
+ *t

=======(答案4)=======
*


第3题 (5.0分)
*-------------------------------------- -----------------
【程序填空】
----------------- ----------------------------------------

功能:三角形的面积为:area=sqrt(s*(s-a)*(s-b)*(s-c)).其中
,s=(a+b+c)2,a、b、c为三角形三条边的长。定义两个带
参数的宏,一个用来求s,另一个用来求area。编写程序,
在程序中用带参数的宏求面积area。

---------------------- ---------------------------------*
#include
#include

***********SPACE***********
#【?】 S(x,y,z)(x+y+z)2
#define AREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z))

main()


{
double area;
float a,b,c,s;
printf(
***********SPACE***********
scanf(【?】,&c);
if(a+b>c&&b+c>a&&c+a>b)
{
***********SPACE***********
s=【?】;
***********SPACE***********
area=【?】;
printf(
}
}
答案:

=======(答案1)=======
define

=======(答案2)=======
&b

=======(答案3)=======
S(a,b,c)

=======(答案4)=======
AREA(s,a,b,c)


第4题 (5.0分)
*------------------------- ------------------------------
【程序填空】
---- -------------------------------------------------- ---

功能:用二分法求方程2X^3+4X^2+3X-6=0在(-10,10)之间的根
,其中 X^n代表X的n次方。

------------------------- ------------------------------*
#include
# include
main()
{
float x0,x1,x2,fx0,fx1,fx2;


do
{
printf(
scanf(
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
***********SPACE***********
}while (fx1*fx2【?】);

do
{
x0=(x1+x2)2;
fx0=x0*((2*x0-4)*x0+3)-6;
***********SPACE***********
if(fx0*fx1【?】)
{
x2=x0;
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
}
***********SPACE***********
while(【?】>=1e-5);
printf(
}
答案:

=======(答案1)=======
>0

=======(答案2)=======
<0

=======(答案3)=======
fabs(fx0)


第5题 (5.0分)
*------------------------------ -------------------------
【程序填空】


-- -------------------------------------------------- -----

功能:要求输出如下结果:
b=-1 a=65535
a=65534
a=30 b=6 c=5
按要求在空中填入合适的变量完善程序。

------------ -------------------------------------------*
#include
main()
{
***********SPACE***********
int b=-1,【?】;unsigned a;
***********SPACE***********
a=【?】;
printf(
***********SPACE***********
【?】+=b;
printf(
***********SPACE***********
b=(a=30)【?】;
printf(
}
答案:

=======(答案1)=======
c

=======(答案2)=======
b

=======(答案3)=======
a

=======(答案4)=======
(c=5)


━━━━━━━━━━━━━━━━
三、程序改错 共5题 (共计25分)
━━━━━━━━━━━━━━━━

第1题 (5.0分)

*----------------------------------------------- -------
【程序改错】
----------------------- ---------------------------------

功能:编写函数fun计算下列分段函数的值:
x*20 x<0且x≠-3
f(x)= sin(x) 0≤x<10且x≠2及x≠3
x*x+x-1 其它

----------------------------------------- -------------*

#include
#include

double fun(double x)
{
**********FOUND**********
double y
**********FOUND**********
if (x<0 || x!=-3.0)
y=x*20;
else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)
y=sin(x);
else
y=x*x+x-1;
**********FOUND**********
return x;
}

main()
{
double x,f;
printf(
scanf(
f=fun(x);
printf(
}
答案:

=======(答案1)=======
double y;

=======(答案2)=======
if (x<0 && x!=-3.0)



=======(答案3)=======
return y;


第2题 (5.0分)
*------------------------------ ------------------------
【程序改错】
-- -------------------------------------------------- ----

功能:有一数组内放10个整数,要求找出最小数和它的下标,然后
把它和数组中最前面的元素即第一个数对换位置.

------------------ ------------------------------------*
#include
main( )
{
int i,a[10],min,k=0;
printf(
for(i=0;i<10;i++)
***********FOUND***********
scanf(
for(i=0;i<10;i++)
printf(
min=a[0];
***********FOUND***********
for(i=3;i<10;i++)
***********FOUND***********
if(a[i]>min)
{
min=a[i];
k=i;
}
***********FOUND***********
a[k]=a[i];
a[0]=min;
printf(
for(i=0;i<10;i++)
printf(
printf(
}
答案:

=======(答案1)=======


scanf(

=======(答案2)=======
for(i=1;i<10;i++)
=========或=========
for(i=0;i<10;i++)
=========或=========
for(i=1;i<=9;i++)
=========或=========
for(i=0;i<=9;i++)

=======(答案3)=======
if(a[i]
=======(答案4)=======
a[k]=a[0];


第3题 (5.0分)
*----- -------------------------------------------------
【程序改错】
----------------------------------- ---------------------

功能:求1到10的阶乘的和。

---------------------------------------------- --------*
#include
main()
{
int i;
float s=0;
float fac(int n);
**********FOUND**********
for(i=1;i<10;i++)
**********FOUND**********
s=fac(i);
printf(
}
float fac(int n)
{
**********FOUND**********
int y=1;
int i;
for(i=1 i<=n;i++)


y=y*i;
**********FOUND**********
return;
}
答案:

=======(答案1)=======
for(i=1;i<=10;i++)
=========或=========
for(i=1;10>=i;i++)
=========或=========
for(i=1;i<11;i++)
=========或=========
for(i=1;11>i;i++)

=======(答案2)=======
s= s + fac(i)
=========或=========
s+=fac(i);
=========或=========
s=fac(i)+s;

=======(答案3)=======
float y=1.0;
=========或=========
float y=1;

=======(答案4)=======
return y;
=========或=========
return(y);
=========或=========
return (y);


第4题 (5.0分)
*------------------------------ ------------------------
【程序改错】
------ --------------------------------------------------

功能:一个偶数总能表示为两个素数之和。

------------ ------------------------------------------*


#include
#include

main()
{
int a,b,c,d;
**********FOUND**********
scanf(
for(b=3;b<=a2;b+=2)
{
for(c=2;c<=sqrt(b);c++)
if(b%c==0)
break;
if(c>sqrt(b))
**********FOUND**********
d=a+b;
else
break;
for(c=2;c<=sqrt(d);c++)
**********FOUND**********
if(d%c=0)
break;
if(c>sqrt(d))
printf(
}
}
答案:

=======(答案1)=======
scanf(

=======(答案2)=======
d=a-b;

=======(答案3)=======
if(d%c==0)


第5题 (5.0分)
*------------------------- -----------------------------
【程序改错】
- -------------------------------------------------- -----

功能:读入一个整数k(2≤k≤10000),打印它的所有质因子(即


所有为素数的因子)。
例如:若输入整数:2310,则应输出:2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。

---------------- --------------------------------------*

#include
#include

**********FOUND**********
isPrime(integer n )
{
int i, m;
m = 1;
for ( i = 2; i < n; i++ )
**********FOUND**********
if ( n%i )
{
m = 0;
break;
}
**********FOUND**********
return n
}

main( )
{
int j, k;
printf(
scanf(
printf(
for( j = 2; j <= k; j++ )
if((!( k%j))&&( IsPrime(j))) printf(
printf(
}
答案:

=======(答案1)=======
IsPrime(int n)

=======(答案2)=======
if(!(n%i))

=======(答案3)=======


return m


━━━━━━━━━━━━━━━━
四、程序设计 共2题 (共计30分)
━━━━━━━━━━━━━━━━

第1题 (15.0分)
*--------------------------------------------- ---
【程序设计】
------------------------------- -------------------

功能:求一个给定字符串中的字母的个数。

----------------------------------------- -------*

#include
void wwjt();

int fun(char s[])
{

**********Program**********





********** End **********

}

main()
{
char str[]=
int k;
k=fun(str);
printf(
wwjt();

}

void wwjt()
{


FILE *IN,*OUT;
char sin[80];
int iOUT,i;
IN=fopen(
if(IN==NULL)
{
printf(
}
OUT=fopen(
if(OUT==NULL)
{
printf(
}
for(i=0;i<10;i++)
{
fscanf(IN,
iOUT=fun(sin);
}
fprintf(OUT,
fclose(IN);
fclose(OUT);
}
答案:----------------------
int i,k=0;
for(i=0;s[i]!='0';i++)
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
k++;
return k;
----------------------

第2题 (15.0分) *----------------------------------------------- --------
【程序设计】
-------------------------- -------------------------------

题目:C语言编程题实现以下功能:
1) 从键盘输入10个学生的成绩,计算平均成绩ave
2) 统计及格人数pass,计算高于平均分的学生的人数better
3) 将10个学生成绩排名。

--------------------------- ----------------------------*
#include
#define N 10
void main()


{
int i,j,a[N],ave,sum=0,pass=0,better=0,t;

**********Program**********


********** End **********
printf(平均分:%dn及格人数%dn
数%dn
}

答案: for(i=0;i {
scanf(
sum+=a[i];
}
ave=sumN;
for(i=0;i {
if(a[i]>=60)
pass++;
if(a[i]>ave)
better++;
}
for(i=0;i for(j=i+1;j {
if (a[i] {
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=0;i {
printf(
}


高于平均分人

酒精灯的使用-延庆一中


高邮教育信息网-档案自查报告


青海交通职业技术学院-小学生清明节演讲稿


车震是什么意思-中国式平衡满分作文


男士公文包-福建阳光高考信息平台


淮阴侯-2015重庆高考数学


唐山地震级数-童年读后感100字


张治中简介-定海教育网