C语言程序设计模拟卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华东理工大学继续教育学院成人教育
《C语言程序设计》课程期末模拟试卷
一、选择题
1. C语言并不是非常严格的算法语言,以下关于C语言不严格性的叙述中,不正确的是( D):
A大写字母和小写字母的意义相同
B有些不同类型的变量可以在一个表达式中运算
C表达式左边变量和右边的值可以是不同类型的
D同一个运算符号在不同的场合可以有不同的含义
2. 在C语言程序中,以下说法正确的是(B)。

A函数的定义可以嵌套,但函数的调用不可以嵌套
B函数的定义不可以嵌套,但函数的调用可以嵌套
C函数的定义和函数的调用都不可以嵌套
D函数的定义和函数的调用都可以嵌套
3.若有以下定义和语句,则输出结果是( B)
main()
{ float x;
int i;
x=5.6;
i= (int)x;
printf(“x=%f,i=%d”,x,i);
}
A 5.6 4
B 5.6 5
C 5 5
D 6 6
4.若有以下定义和语句,则输出结果是( B)
char s[12]="verygood";
printf("%d",strlen(s));
A 12
B 8
C 7
D 6
5. 下列运算符优先级最高的是( D)。

A >=
B &&
C !
D ++
6. 设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是(D)。

A 552
B 144
C 264
D -264
7. 以下关于C语言字符数组的说法中,不正确的是( B):
A在C语言中可用字符数组存放字符串
B可以用关系运算符对字符数组进行比较
C字符数组中的字符串可以整体输入、输出
D字符数组中的字符串可以按单个字符输入、输出
8. 在C语言中,回车符是( C)。

A '\n‟
B '\t‟
C '\r‟
D '\b‟
9. 设a=2,b=3,执行表达式c=b*=a-1;变量c的值是( B)
A 5
B 3
C 2
D 4
10.若在C语言程序中使用以下的二维数组定义语句并赋以部分初值,其中不正确的定义只有( B):
A int a[2][3]={{4},{5,6}}
B int a[2][3]={{4},{5},{6}}
C int a[2][3]={4,5,6}
D int a[2][3]={{4},5,6}
11. 设有如下程序段,下面描述中正确的是(C)。

int k=10; while(k=0) k=k-1;
A 循环执行一次
B 循环是无限循环
C 循环体语句一次也不执行
D 循环体语句执行一次
12.数组名作为实参数传递给函数时,数组名被处理为(C)。

A 该数组的长度
B 该数组的元素个数
C 该数组的首地址
D 该数组中各元素的值
13.关于return语句,下列正确的说法是(A)。

A 可以在同一函数中出现多次
B 在主函数中不能出现
C 必须在每个函数中出现
D 只能在除主函数之外的函数中出现一次
14. 设a,b为整型变量,执行scanf(“a=%d,b=%d”,&a,&b);后要使a值为5,b值为9,则从键盘的正确输入是(C)。

A 5 9
B 5,9
C a=5,b=9
D A=5,B=9
15.运算符是有优先级的,在C语言中下列哪一个叙述是正确的?( B )
A 逻辑运算符高于算术运算符,算术运算符高于关系运算符
B 算术运算符高于关系运算符,关系运算符高于逻辑运算符
C 算术运算符高于逻辑运算符,逻辑运算符高于关系运算符
D 关系运算符高于逻辑运算符,逻辑运算符高于算术运算符
16假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是(B)。

A 7
B 8
C 9
D 2
17.以下函数调用语句中含有(A)个实参。

func((e1,e2),(e3,e4,e5));
A 2
B 3
C 5
D 语法错误
18. 设有如下定义:
int x=6,y=4,z=2;
则语句printf(“%d”,z+=x/y));
的输出结果是(A)。

A.3 B.2 C.5 D.4
19.以下定义结构体类型st1,其中正确的是(B)。

A typedef struct student
{ int num; int age; }STD;
STD st1;
B struct st1{int num,age;}s;
C struct { int num; float age;}st1;
D struct st1 {int num; int age; }
20. C语言源程序的基本单位是(B)。

A 过程
B 函数
C 子程序
D 标识符
21. 选出年龄在40到50(包括40,不包括50)之间的人,其C语言表达式为:(D)
A(年龄>=40)and(年龄<50)
B(50>年龄>=40)
C(年龄>=40)&(年龄<50)
D(年龄>=40)&&(年龄<50)
二、判断题。

对的划“√”,错的划“×”。

1. 如果j=3;则执行k=++j后k=4;j=4。

(T)
2.函数strlen("stop ")的值是5。

(F)
3. break语句用在循环体中,可结束本层循环。

(T)
4.函数的递归调用不过是一个函数直接或间接地调用它自身。

(T)
5.函数strcmp("stop ","student ")返回的值是1。

(F)
6. 若i=5%-3;则i=-2。

( F)
7. C语言源程序的基本单位是函数。

( T)
8. 若有定义:int a;则scanf(“%d",a);可以给变量a赋值。

(T)
9. 若有定义:int a[10];则a++是合法的表达式。

(F)
10. 任何数组在使用前必须先定义。

(T)
11.通过return语句,函数可以带回一个或一个以上的返回值。

(F)
12.若有定义:char s[ ]="china";则Turbo C系统为数组s开辟6个字节的内存单元。

( T)
13. 若a=0; b=0.5; x=0.3;则a<=x<=b的值为0。

(T)
14. int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。

(F)
15. 若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。

( T)
16.若int i=5;则printf(“%d,%d”,i++,++i);的运行结果是6,6。

(T)
17. 在C语言中,函数的定义不可以嵌套,但函数可以嵌套调用。

(T)
18. 在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。

( T )
19.若有定义:char s[ ]="china";则Turbo C系统为数组s开辟6个字节的内存单元。

( T )
20. 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。

( F )
三、写出下列程序的运行结果
1. #include <stdio.h>
main()
{ int i,sum=0;
i=1;
while(i<=50)
{ sum=sum+i;
i++;
}
printf("%d",sum);
}
该程序的运行结果是:1275。

2. #include<stdio.h>
main( )
{ int i=0;
for(i=0;i<6;i++)
putchar(…a‟+i);
}
该程序的运行结果是:abcdefghij 。

四、编程题。

1.用冒泡法对任意10个整数排序。

main()
{ int a[11],i,j,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i < 10;i++)
for(j=1;j < 10-2;j++)
if(a[j+1]>a[j])
{ t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%4d",a[i]);
printf(“\n”);
}
2.求100-1000之间的水仙花数,即这个数等于它的百位、十位和个位数的立方和。

#include "stdio.h"
int main()
{
int x, y, z;
printf("100到1000之间的水仙花数有:\n");
for(int a=100;a<=1000;a++)
{
x = a / 100;
y = (a - x * 100) / 10;
z = a - x * 100 - y * 10;
if (a == x*x*x + y*y*y + z*z*z)
{
printf("%d\n", a);
}
}
getchar();
}
3.从键盘输入大写字母,用小写字母输出。

#include "stdio.h"
main()
{ char c1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}
4有一个3×4的矩阵,求所有元素中的最大值。

#include <stdio.h>
int main()
{ int i,j,a[3][4],max;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{ if(max<a[i][j])
max=a[i][j];
}
printf("最大值为:%d\n",max);
return 0
}
5. 求给定的10个学生的平均成绩。

float average (float array[10])
{ int i;
float aver, sum=array[0];
for (i=1;i<10;i++)
sum= sum+array[i];
aver= sum/10
return aver ;
}
P134 5.10
求100~200的全部素数
#include<stdio.h>
#include<math.h>
int main( )
{int n,k,i,m=0;
for (n=101;n<=200;n=n+2)
{k=sqrt(n);
for (i=2;i<=k;i++)
if (i>k+1)
{printf(“%d”,n)
m=m+1
}
if(m%10= =0) printf(“\n”)
}
printf(“\n”)
return 0;
}
P137
8.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

例如,153是水仙花数,因为153=1^3+5^3+3^3
#include "stdio.h"
int main(void)
{
int i,j,k,num;
printf("水仙花数为:");
for(num=100;num<1000;num++)
{
i=num/100;
j=num/10%10;
k=num%10;
if(num==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",num);
}
}
printf("\n");
return 0;
}
9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如。

6的因子为1,2,3,而6=1+2+3,因此6是“完数”。

编程序找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are 1,2,3
#include <stdio.h>
int main()
{
int n,temp,sum;
for(n=1;n<1000;n++)
{
sum= 0;
for(temp=1;temp<n;temp++)
{
if(n%temp==0)
{
sum=sum+temp;
}
}
if(sum==n)
{
printf("%d its factors are ",n);
for(temp=1;temp<n;++temp)
{
if(n%temp==0)
{
printf("%d ",temp);
}
}
printf("\n");
}
}
return 0;
}
P143.6.3
有10个地区的面积,要求对他们按由小到大的顺序排列#include<stdio.h>
int main()
{
int a[10];
int i,j,t;
printf(“input 10 numbers :\n”);
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
printf(“\n”)
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t}
printf(“the sorted numbers :\n”);
for(i=0;i<10;i++)
printf(“%d”,a[i]);
printf(“\n”)
return 0;
}
P150 6.5
有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

#include<stdio.h>
int main()
{int i,j,row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<3;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf(“max=%d\nrow=%d\ncolum=%d\n”,max,row,colum);
return 0;
}
P195 7.13
有一个3×4的矩阵,求所有元素中的最大值
#include<stdio.h>
int main()
{ int max_value(int array[][4]);
int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}},
printf(“Max valur is %d\n”;max_value(a));
return 0;
}
int max_value(int array[][4])
{ int i,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)max=array[i][j];
return(max);
}
(注:与上面第四题方法不同)
第11 / 11 页。

相关文档
最新文档