资源描述
.. -
试卷代号:6111A卷
?程序设计语言?期末试卷
〔试卷总分:100分,考试时间:120分钟,答案写在答卷纸上〕
一、单项选择题〔每题2分,共40分〕
1.组成C程序的根本单位是C。
A〕表达式与语句 B〕假设干文件 C〕函数D〕main函数
2.有关以下函数的哪些说法是正确的____B____。
int add( int x;int y)
{
z=x+y;
return z;
}
A〕此函数能单独运行
B〕此函数存在语法错误
C〕此函数通过main函数能调用
D〕此函数没有语法错误
3.以下数据中,为字符的是_____D___。
A〕'AB'B〕"A"C〕HowD〕'A'+2
4.以下表达式没有错误的选项是_____C___。
int x,*p;
A〕5.0%2 B〕x+1=5C〕&pD〕&〔x+1〕
5.任何复杂的程序,都是由______C__构成的。
A〕分支构造、顺序构造、过程构造 B〕循环构造、分支构造、过程构造
C〕顺序构造、循环构造、分支构造 D〕循环构造、分支构造
6.以下选项中,合法的C语言关键字是__C______。
A〕integer B〕CharC〕short D〕Long
7.假设有说明语句:int y[][4]={0,0,0,0,0,0}; 那么正确的表达是________。
A〕数组y的每个元素都可得到初值0
B〕二维数组y的行数为1
C〕该说明等价于int y[0][4]={0};
D〕有元素y[0][0]至y[0][5]可得到初值,其余元素均得不到初值0
8.假设有以下变量说明和数据的输入方式,那么正确的输入语句为________。
变量说明:float x1,x2;
数据的输入方式:4.52<回车>
3.5<回车>
A〕scanf〔“%f,%f〞,&x1,&x2〕;B〕scanf〔“%f%f〞,&x1,&x2〕;
C〕scanf〔“%3.2f,%2.1f〞,&x1,&x2〕;D〕scanf〔“%3.2f%2.1f〞,&x1,&x2〕;
9.:int a,*p=&a; 那么为了得到变量a的值,以下错误的表达式为___C_____。
A〕p[0]B〕*pC〕&*a D〕*&a
10.假设有定义:int b[5];那么以下对b 数组元素的正确引用是________。
A〕*&b[5]B〕b+2
C〕*〔*〔b+2〕〕D〕*〔b+2〕
11.设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句__B______。
if (x=y) printf(" x is equal to y.");
A〕语法错 B〕不能判断x和y是否相等
C〕编译出错D〕能判断x和y是否相等
12.以下有关switch语句的正确说法是______B__。
A〕break语句是语句中必须的一局部
B〕在switch 语句中可以根据需要使用或不使用break语句
C〕break语句在switch 语句中不可以使用
D〕在switch 语句中的每一个case都要用break语句
13.假设用数组名作为函数调用时的参数,那么实际上传递给形参的是___D_____。
A〕数组元素的个数 B〕数组的第一个元素值
C〕数组中全部元素的植 D〕数组首地址
14.假设主调用函数为double型,被调用函数定义中没有函数类型说明,而return语句中的表达式为float型,那么被调用函数返回值的类型是____B___。
A〕float 型 B〕int型 C〕double型 D〕类型错误
15.以下表达正确的选项是___D_____。
A〕函数的定义和函数的调用均不可以嵌套
B〕函数的定义和函数的调用均可以嵌套
C〕函数的定义可以嵌套,但函数的调用均不可以嵌套
D〕函数的定义不可以嵌套,但函数的调用均可以嵌套
16.但凡在函数中未指定存储类别的局部变量,其隐含的存储类别是___C_____。
A〕静态〔static〕 B〕外部〔extern〕
C〕自动〔auto〕 D〕存放器〔register〕
17.以下有关宏替换的表达不正确的选项是____A____。
A〕宏名必须用大写字母表示 B〕宏替换不占用运行时间
C〕宏名不具有类型 D〕宏替换只是字符替换
18.以下对字符串的定义中,错误的选项是A。
A〕char str[5]= "abcde" ; B〕char str[ ]= "abcde";
C〕char *str ="abcde"; D〕char str[ ]={ 'a', 'b', 'c', 'd', 'e', '\0'};
19.说明语句“int(*p)( ); 〞的含义是____C___ 。
A〕p是一个指向一维数组的指针变量
B〕p是指针变量,指向一个整型数据
C〕p是一个指向函数的指针,该函数返回一个int型数据
D〕以上都不对
20.C语言中构造体类型变量在程序执行期间____A____。
A〕所有成员一直驻留在存中 B〕只有一个成员驻留在存中
C〕局部成员驻留在存中D〕没有成员驻留在存中
二、程序阅读题〔每题3分,共30分〕
1.写出以下程序的运行结果。
#include<stdio.h>
void main()
{
int num=0;
while (num++<=2);
printf("%d ",num);
}
3
2.写出以下程序的运行结果。
#include<stdio.h>
void main()
{int a[]={1,3,5,7,9};
int y=1,x,*p;
p=&a[1];
for(x=0; x<3; x++) y+=*(p+x);
printf("%d\n",y);
}16
3.阅读以下程序,写出程序的功能。
#include<stdio.h>
void main()
{
int a[10]={2,4,0,-5,10,6,-8,9,6,7};
int i,s=0,count=0;
for(i=0; i<10; i++)
if(a[i]>0) s+=a[i],count++;
else continue;
printf ("s= %d , count=%d\n", s ,count);
}
4.阅读以下函数,写出此函数的功能。
void fun(char A[ ],int n)
{
char tmp;
int k;
for (k=0; k<n/2; k++)
{
tmp=A[k]; A[k]=A[n-k-1]; A[n-k-1]=tmp;
}
}
5.阅读以下程序,写出此程序的功能。
#include<stdio.h>
void main()
{
char ch;
int c=0,s=0,n=0,other=0;
while ((ch=getchar())!='\n')
{
if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) c++;
else if (ch==' ') s++;
else if (ch>='0'&&ch<='9') n++;
else other++;
}
printf("Char:%d\nSpace:%d\nNumber:%d\nOther:%d\n",c,s,n,other);
}
6.以下程序有2个文件组成,写出运行结果。
/* file 1 */
#include <stdio.h>
int x=20;
int y=20;
void func_add(void)
{ y=10+x;
x*=2;
}
void main()
{ extern void func_sub(); /* 声明一个外部函数 */
x+=5;
func_add();
func_sub();
printf( "x=%d; y=%d\n", x, y);
}
/* file 2 */
extern int x; /* 声明一个外部变量 */
void func_sub()
{ x-=5;}
7.阅读下面的程序,写出它的运行结果。
#include<stdio.h>
long func(int m)
{
long s;
if (m==1)
s=1;
else s=m+func(m-1);
return(s);
}
void main()
{
long y;
y=func(4);
printf( "%2d",y);
}
8.假设输入一个整数15,写出以下程序的运行结果。
#include <stdio.h>
int sub(int a);
void main()
{
int a,e[10],c,i=0;
scanf("%d",&a);
while (a!=0)
{
c=sub(a);
a=a/2;
e[i]=c;
i++;
}
for(;i>0;i--) printf ("%d", e[i-1]);
}
int sub(int a)
{
int c;
c=a%2;
return(c);
}
9.写出下面程序的运行结果。
#include <stdio.h>
func(int a[][3])
{
int i,j,sum=0;
for (i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j) sum=sum+a[i][j];
return(sum);
}
void main()
{
int a[3][3]={1,3,5,7,9,11,13,15,17},sum;
sum=func(a);
printf("sum=%d\n",sum);
}
10.写出以下函数的功能。
void fun1( char *s1, const char *s2 )
{
while ( *s1 != '\0' )
++s1;
for ( ; *s1 = *s2; s1++, s2++ )
;
}
三、程序填空题〔每空2分,共20分〕
1.以下程序对输入的1000以下的整数,求出其相应的个位数、十位数和百位数。
#include<stdio.h>
void main()
{
int x,a,b,c;
do{
printf("输入一个1000以下的整数:");
scanf("%d",&x);
printf("\n");
}while( (1) );
a=x/100;
b=(x-a*100)/10;
c= (2) ;
printf("%d的个位数是%d,十位数是%d,百位数是%d\n",x,c,b,a);
}
2.以下程序完成对键盘输入的正整数求最大值和最小值,输入负数时循环完毕。请填写缺少的语句。
#include<stdio.h>
void main()
{
int i,j,n,max,min,a[100];
for(i=1; i<=100; i++)
{
scanf("%d,",&a[i]);
if(a[i]<0) (3) ;
}
n=i-1;
min=max=a[1];
for(j=2; j<=n; j++)
{
if( (4) ) max=a[j];
if( (5) ) min=a[j];
}
printf("n=%d\tmax=%d\tmin=%d\n",n,max,min);
}
3.以下函数的功能是删除字符串s中的数字字符,请填写缺少的语句。
void delnum(char s[])
{
int i,j;
for( i=0,j=0;s[i]!='\0';i++)
if ( s[i]<'0' (6) s[i]>'9')
{
s[j]=s[i];
(7) ;
}
s[j]= (8) ;
}
4.以下程序用来求数组全部元素的和,请填写缺少的语句。
#include<stdio.h>
void main( )
{
int a[ ]={0,1,2,3,4,5,6,7,8,9};
int s=0 , i, *p;
p=(9) ;
for (i=0; i<10; i++) (10) ;
printf("sum=%d", s);
}
四、编程题〔每题5分,共10分〕
1.〔5分〕编写程序,计算s=1+2+3+...+99+100。
2.〔5分〕编写程序,输出100以的所有素数〔即只能被1和自身整除的数〕。
试卷代号:6111A卷
?程序设计语言?期末试卷答案
一、单项选择题〔每题2分,共40分〕
1
2
3
4
5
6
7
8
9
10
C
B
D
C
C
C
A
B
C
D
11
12
13
14
15
16
17
18
19
20
B
B
D
B
D
C
A
A
C
A
二、程序阅读题〔每题3分,共30分〕
1
3
6
x=45; y=35
2
16
7
10
3
求数组a中所有正数的和及正数的个数。
8
1111
4
将字符数组按逆序存放。
9
sum=27
5
从键盘输入一行字符,输出字母、数字、空格和其它字符的个数。
10
将字符串s2连接到字符串s1后
三、程序填空题〔每空2分,共20分〕
⑴
x>=1000||x<=-1000
⑹
||
⑵
x-a*100-b*10或x%10
⑺
j++
⑶
break
⑻
‘\0’
⑷
a[j]>max
⑼
a
⑸
a[j]<min
⑽
s+=*(p+i)
四、编程题〔每题5分,共10分〕
1.〔5分〕参考程序:
#include<stdio.h>
void main(){
int n,s=0;
for(n=1;n<=100;n++)
s=s+n;
printf("s=%d\n",s);
}
2. 〔5分〕参考程序:
#include<stdio.h>
void main()
{
int n,i;
for(n=2; n<=100; n++){
for(i=2; i<n; i++)
if(n%i==0) break;
if(i>=n) printf("\t%d",n);
}
}
. . word.zl-
展开阅读全文