期末复习题目(1)
创业者协会-挪威有哪些城市
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
if (a[i] {
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=0;i
printf(
}
高于平均分人