《程序设计与算法语言》模拟题
- 格式:doc
- 大小:62.50 KB
- 文档页数:5
第 1 页(共 5 页) 《程序设计与算法语言》期未考试模拟题
一、单项选择题(本题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.一个C语言程序的执行是从( )。
A. main( )函数开始,直到main( ) 函数结束
B. 第一个函数开始,直到最后一个函数结束
C. 第一个语句开始,直到最后一个语句结束
D. main( )函数开始,直到最后一个函数结束
2.若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是( )。
A. *p B. a[10] C. *a D. p-a
3.若有定义:int x; 要将x强制转换为双精度型,应该写成( )。
A. x(double) B. (x)double C. (double)x D. x*double
4.已知:int a=5; 执行以下的程序段后输出结果为( )。
do
{ printf("%d",a--);
} while (!a);
A. 5 B. 4 C. 陷入死循环 D. 5 4 3 2 1
5. 将两个字符串连接起来组成一个字符串时,选用( )函数。
A. strlen() B. strcpy() C. strcat() C. strcmp()
6. 对于C语言的函数,下列叙述中正确的是( )。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可以嵌套,但函数调用不能嵌套
C.函数的定义和调用都不能嵌套
D.函数的定义和调用都可以嵌套
7.下述循环的循环次数是( )
int k=2;
while(k=0)
{ printf("k,");
k--;}
A、无限次 B、0次 C、1次 D、2次
8.下列字符列中,合法的浮点型常量是:( )
A. 457 B. 6e5.3 C. e7 D. 123e6
9.若用一维数组名作为调用函数时的实参,则传递给形参的是:( )
A 数组首元素的地址 B. 数组首元素的值
C 数组元素的个数 D. 数组中全部元素的值
10.执行下列程序
int a[3][3]={{1},{2},{3}};
int b[3][3]={1,2,3};
main()
{ printf("%d\n",a[1][0]+b[0][0]);}
后输出的结果是( )
A.0 B.1 C.2 D.3
二、填空题(本大题共10小题,每小题2分,共20分)
1. 执行循环结构或switch结构中的 语句能够立即退出该结构。 第 2 页(共 5 页) 2. 使用两个下标的数组称为 数组。
3. 复合语句是由一对 _______括起来的若干语句组成的。
4. 若有以下定义语句:int a=5; printf("%d ",a++); 则输出结果是____________。
5. 若定义x和y为double型变量,且x=1,则表达式 y=x+3/2的值是__________。
6. C语言中有两种数据类型: 和 可以使用signed修饰符。
7. 初始化值是0.618的双精度变量a的定义形式为____________。
8. 设char str[]="This_is_a_book!";则数组str的长度应是____________。
9.为了避免可能出现的歧义,C语言对if…else语句配对规则规定为:else总是与
__________________ 配对。
10. 不能进行%运算的数据类型是__________________.
三、分析程序,写出程序运行结果(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到各题右侧的空白处,若输出结果为不确定的地址值,请用文字在相应输出处注明
1.
int main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("%d,%d,%d\n",b,c,d);
return 0;
}
2.
#include
int main()
{
int x=2,y=5,z=1,i=1;
do
{
z=z*x;
i=i+1;
}while (i<=y);
printf("z=%d", z) ;
}
3.
#include
int main()
{
long a=20,b=40,l=0;
int m,i;
for(m=a; m<=b; m++)
{
for(i=2; i if(m%i==0) break; 第 3 页(共 5 页) if(i==m) { printf("%5d ",m); } } } 4. #include int scmp(const char* str1,const char* str2) { char* p1=(char*)str1; char* p2=(char*)str2; while(*p1 && *p1==*p2) { p1++; p2++; } return *p1 - *p2; } int main() { char* s1="FEDA"; char* s2="FEDC"; printf("%d\n",scmp(s1,s2)); } 四、程序填充题(本大题共4小题,每小题6分,共24分) 根据问题说明,分析下列程序,将程序中空缺的语句补充完整,使其能正确运行。 1. 以下rev函数翻转参数数组a里元素的位置,数组a的元素个数为n。 void rev(int n, int a[]) { int x, i, j; _________________ while(i < j) { x = a[i]; a[i] = a[j]; a[j] = x; _________________ } } int main () { int i, b[] = {1, 2, 3, 4, 5, 6, 7}; rev(7, b); printf("After reversion:\n"); for (i = 0; i < 7; ++i) printf("b[%d] = %d\n", i, b[i]); return 0; 第 4 页(共 5 页) } 2.n个数,已按从小到大顺序排列. 在主函数输入一个数,调用一个函数,它把键入的数插入到原有的数列中,保持大小顺序,输出插入前后的两个数组,并将被挤出的最大数(有可能是被插入数)返回给主函数输出. #include int Insert(int a[], int n, int value); int main() { int array[]={12,29,34,56,72,83,88,91}; int i,size=sizeof(array)/sizeof(*array); int aValue,max; printf("\nplease input a number :\n"); scanf("%d",&aValue); max= Insert(array,size,aValue); printf("\n最大数: %d\n",max); printf("插入后的数组:\n"); for(i=0; i printf("%d ",array[i]); system("pause"); return 0; } int Insert(int a[], int n, int value) { int i,retValue; if(a[n-1]<=value) return value; retValue= for(i=n-2; i>=0&&a[i]>value; i--) { a[i+1]= } a[i+1]=value; return retValue; } 3.下面程序输入一个整数m, 判断其是否为素数。 #include #include int main() { int i; long m; 第 5 页(共 5 页) double sqrtm; printf("please input a number:\n"); scanf("%d",&m); sqrtm=sqrt(m); for(i=2; i<=sqrtm; i++) if( __________________ ) break; if( __________ ) printf(" %d is prime.\n",m); else printf(" %d isn’t prime.\n",m); } 4. #include #include main() { double pi, sum = 0, term, sign = 1.0; int count = 0, n = 1; term = 1.0; for (;fabs(term) >= 1e-4;) { term = sign / n; sum = sum + term; count ++; sign = n = n + 2; } pi = printf("pi = %f\ncount = %dn=%d\n", pi, count,n); system("pause"); } 五、程序设计题(共2小题, 每小题10分,共20分)。 1、编程计算组合数)!(!!kmkmCpkm的值。 2、利用公式ijijijbac计算nm阶矩阵A和nm阶矩阵B之和,已知ija为矩阵A的元素,ijb为矩阵B的元素,ijc为矩阵C的元素(i=1,2,…,m;j=1,2,…,n)。