资源描述
c语言程序设计期末试题B(含答案)
一 单项选择题(每小题1分,共10分)
1.以下4组用户定义标识符中,全部合法的一组是( )
A)_total clu_1 sum
B)if -max turb
C)txt REAL 3COM
D)int k_2 _001
2.以下程序的输出结果是( )
#include <stdio.h>
main( )
{
int a = 1, b = 2, c = 3;
printf(“%d”, c>b>a);
}
A) 2 B) 1 C) 0 D) 3
3.以下正确的叙述是( )
A) 在C语言中,main函数必须位于文件的开头
B) C语言每行中只能写一条语句
C) C语言本身没有输入、输出语句
D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误
4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( )
A)scanf("%d",pa); B)scanf("%d",a);
C)scanf("%d",&pa); D)scanf("%d",*pa);
5.若有以下程序段,
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是( )
A) 0 B) 0.5 C) 1 D) 2
6.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是( )
A) a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0
7.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是( )
main( )
{
int a,b,c,d;
scanf(“%d,%d,%d%d”,&a,&b,&c,&d);
…
}
A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 4
8.有以下程序段
main( )
{
int k=0;
while(k=1) k++;
}
则while循环执行的次数是( )
A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次
9.以下程序的输出结果是( )
#include <stdio.h>
main( )
{
int a = 5, b = 4, c = 6, d;
printf(“%d”,d=a>b?(a>c?a:c): b);
}
A) 5 B) 4 C) 6 D) 不确定
10.下面是对数组a的初始化,其中不正确的是( )
A)a[5]={"ABCD"} B)a[5]={'A','B','C','D'}
C)a[5]="" D)a[5]="ABCDE"
二、填空题(每空2分,共32分)
1.结构化程序设计中的三种基本结构是 [1] 、 [2] 、 [3] 。
2.C程序的基本组成单位是 [4] 。
3.标识符的第一个字符必须是 [5] 或 [6] 。
4.实常数123.457的规范化指数表示形式是 [7] 。
5.表达式7/2的结果是 [8] 。表达式7%2的结果是 [9] 。
6.定义一个整型数组a[10],则下标最大的数组元素为 [10] 。
7.在函数的递归调用过程中,要使递归过程不是无限制进行下去,必须具有 [11] 。
8.C语言提供了 [12] 命令用来实现“文件包含”的操作。
9.已知:char c[ ]={“china”};将字符数组c中整个字符串一次输出的语句书写格式为 [13] 。
10.表达式4>3 && 7<5-!0的值为 [14] 。
11.按照变量在函数中作用域不同,可以将变量分为 [15] 和 [16] 。
三、计算题(要求写出步骤)(每题4分,共8分)
1. 设int a=12,求出表达式a+=a-=a*a运算后a的值.
2. 设a=2,b=3,x=3.5,y=2.5
求算术表达式(float)(b-a)/2+(int)x%(int)y的值
四、读下列程序,写出程序的运行结果(4×3=12)
1.已知字符A的ACSII码值为65,写出以下语句的输出结果
main( )
{
char ch=‘A’;
printf("%c,%d",ch,ch+3);
}
2. main( )
{
int a = 10;
printf(“%d ”, ++a);
printf(“%d ”, a--);
}
3.main( )
{ int t=1;
for(i=1 ; i<5 ; i++) t=t*i;
printf("%d",t);
}
4. f(int *a, int b)
{b=b+*a; *a=*a+b;}
main( )
{
int x=2,y=4;
int *p;
p=&x;
f(p,y);
printf("%d ,%d",x,y);
}
五、程序填空(每空2分,共14分)
1.下列程序段以函数swap( )调用的形式实现两个变量值的互换,请填空完善程序。
swap(int * m,int * n)
{ int temp;
temp= [1] ;
[2] ;
*n= [3] ;
}
main( )
{ int x,y;
scanf(“%d,%d”,&x,&y);
swap( [4] );
printf(%d,%d”,x,y);
}
2.下面程序是计算1-3+5-7+…… -99+101的值,请填空完善程序。
main( )
{
int i,m,t=1,s=0;
for (i=1;i<=101; [5] )
{ [6] ; s=s+m ; [7] ;}
printf(“%d\n”,s);
}
六、编程题:(共24分)
1.编程求1!+2!+3!+……+50!的值。(6分)
2.用函数的递归调用方法求下列函数式的值(要求n由用户输入),递归公式为:(8分)
1 (n=1)
total(n)=
total(n-1)+n+1 (n>1)
3.编写程序输出下列形式的杨辉三角形的前10行。(10分)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
C语言模拟试卷二答案及评分标准
一、单项选择题(每小题1分)
1. A 2. C 3. D 4. A 5. B 6. D 7. D 8. A 9. C 10. D
二、填空题(每空2分)
1. 顺序结构、选择结构、循环结构。
2. 函数
3. 字母、下划线
4. 1.23457e2或1.23457E2
5. 3、1
6. a[9]
7. 使递归结束的条件
8. #include
9. printf(“%s”,c)
10. 0
11. 全局变量、局部变量
三、计算题(要求写出步骤)(每题4分)
1.
a-=a*a a=a-a*a a=12-144= -132
a+=-132 a=a+(-132) a=-132-132= -264
2. 1.0/2+3%2=0.5+1=1.5
四、读下列程序,写出程序的运行结果(每题3分)
1. 1. A,68
2. 2. 11 11
3. 3. 24
4. 4. 8,4
五、程序填空:(每空2分)
1.*m 2.*m=*n 3. temp 4. x,y 5. i=i+2 6. m=i*t 7. t=-t
六、编程题
1.
main()
{
int i;
float t=1,s=0;
for(i=1;i<=50;i++)
{
t=t*i;
s=s+t;
}
printf("s=%e\n",s);
}
2.
total(int n)
{ int c;
if (n==1) c=1;
else c=total(n-1)+n+1;
return(c);
}
main()
{ int n;
scanf(“%d”,n);
printf(“%d”,total(n));
}
3.
main( )
{
int a[10][10],i,j;
for(i=0;i<10;i++)
{ for(j=0;j<=i;j++)
{ if((j= =0)||(i= =j)) a[i][j]=1;
else a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%d",a[i][j]);
}
printf("\n");
}
}
1、 有如下程序:
#include"stdio.h"
main( )
{ int a=8;
printf("%d,%5d,%-5d####\n",a,a,a);
printf("%d,%o,%x,%u",a,a,a,a);
}
第二个printf语句的运行结果是_______________。
你的答案:8,10,8,8 √
2、 有如下程序:
#include"stdio.h"
main( )
{ char c1='a',c2='b'; int a=97,b=98;
printf("%d,%d\n",a,b);
printf("%c,%c",c1,c2);
}
最后一个printf语句的运行结果是_______________。
你的答案:a,b √
3、 有如下程序:
#include"stdio.h"
main( )
{ int i,j; i=3; j=4;
printf("%d %d\n",i++,++j);
printf("%d,%d\n",i,j);
printf("%d,%d\n",-i++,-++j);
}
最后一个printf语句的运行结果是_______________。
你的答案:-4,-6 √
4、 有如下程序:
#include"stdio.h"
main( )
{ int a=7;
float x=2.5,y=4.7,z;
z= x + a % 3 * (int) (x + y) % 2 / 4;
printf("%f\n",z); }
程序的运行结果是______________。
你的答案:2.500000 √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
Copyright ? 2006 All rights reserved 河南科技大学
建议使用:800×600以上分辨率IE4.0以上版本浏览器
顺序结构程序设计,实验报告(共 题),用时(48分21秒),成绩(A)
1、 从键盘上输入:32 18<CR>,运行结果是_______________。
#include"stdio.h"
main( )
{ int i,j;
printf("Enter i,j\n");
scanf("%d%d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
你的答案:i=32,j=18 √
2、 如果下面程序运行结果是i=12.5,j=-4.0,从键盘应输入:_______________。
#include"stdio.h"
main( )
{ float i,j;
scanf("i=%f,j=%f",&i,&j);
printf("i=%.1f,j=%.1f\n",i,j);
}
你的答案:i=12.5,j=-4.0 √
3、 输入一个大写字母A,将它转换为小写字母a,输出小写字母a及对应的ASCII值97。
要求输出格式为:j=a,j=97。输出语句应为________________。
#include"stdio.h"
main( )
{ char i,j;
scanf("%c",&i);
j=i+32;
输出语句;
}
你的答案:printf("j=%c,j=%d",j,j); √
4、 将a,b两个变量的值交换后,要求按“a=2,b=1”格式输出。
划线处应当填写:__________________。
#include"stdio.h"
main( )
{ int a=1,b=2,t;
t=a;
a=b;
b=t;
______________ ;
}
你的答案:printf("a=%d,b=%d",a,b); √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
Copyright ? 2006 All rights reserved 河南科技大学
建议使用:800×600以上分辨率IE4.0以上版本浏览器
选择结构程序设计,实验报告(共 题),用时(84分39秒),成绩(A)
1、 下面程序的功能是实现表达式z=( x>=y ? x : y),请将程序填写完整。
#include"stdio.h"
main( )
{ int x, y, z;
printf("Please input x,y:");
scanf("%d%d",&x,&y);
if (______) z=x;
else z=y;
printf("z=%d",z);
}
你的答案:x>=y √
2、 下面程序的运行结果为_______________。
#include"stdio.h"
main( )
{ int a=3,b=5,c=8;
if(a++<3 && c--!=0) b=b+1;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
你的答案:a=4,b=5,c=8 √
3、 程序填空,从键盘上输入x的值,按下式计算y的值。
┌ x x<1
y= ┤ 2x-1 1≤x<10
└ 3x-11 x≥10
#include "stdio.h"
main( )
{ float x,y;
printf("x=");
scanf("%f",&x);
if ( ________ ) y=x;
else if( x<10&&x>=1 )
y=2*x-1;
else
y=3*x-11;
printf("y=%f\n",y);
}
你的答案:x<1 √
4、 下面程序运行时从键盘上输入15,20,运行结果为_______________。
#include "stdio.h"
main( )
{ int a,b,t;
t = 0;
scanf("%d,%d",&a,&b);
if (a>b)
t = a ;
a = b ;
b = t ;
printf("b=%d",b) ;
}
你的答案:b=0 √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
Copyright ? 2006 All rights reserved 河南科技大学
建议使用:800×600以上分辨率IE4.0以上版本浏览器
循环结构程序设计(一),实验报告(共 题),用时(23分36秒),成绩(A)
1、 求两个正整数x和y的最大公约数,请填空。
#include <math.h>
#include <stdio.h>
main( )
{ int x,y,t,i;
scanf("%d,%d",&x,&y);
if(x > y) {t = x; x = y; y = t;}
for( _______________ )
{ if( x%i==0 && y%i==0 )
break;
}
printf("Maximal Common Divisor is : %d\n",i);
}
你的答案:i=x;i>=1;i-- √
2、 计算1到100之间的奇数之和及偶数之和。请填空。
#include"stdio.h"
main( )
{ int a,b,c,i;
a=0, c=0; /* 变量赋初值 */
for(i=0;i<=100;i+=2)
{ a+=i; /* 变量a存放偶数的和 */
_______________ ;
c+=b; /* 变量c存放奇数的和 */
}
printf("Sum of Evens is %d\n",a);
printf("Sum of Odds is %d\n",c-101);
}
你的答案:b=i+1 √
3、 下面程序的功能是:计算正整数num的各位上的数字之和。例如,若输入:252,则输出应该是:9;若输入:202,则输出应该是:4。请将程序补充完整。
#include <stdio.h>
main( )
{ int num,k;
k=0;
printf("Please enter a number:") ;
scanf("%d",&num) ;
do
{ k=____________ ;
num/=10;
} while(num) ;
printf("\n%d\n",k) ;
}
你的答案:k+num%10 √
4、 求两个正整数[m,n]之间所有既不能被3整除也不能被7整除的整数之和。请填空。
#include <math.h>
#include <stdio.h>
main( )
{ int m,n,i,t;
long int s=0;
scanf("%d,%d",&m,&n);
if( m>n )
{ t=m; m=n; n=t;}
for ( _______________ )
if ( i%3 != 0 && i%7 != 0 )
s += i;
printf("Sum is : %ld\n",s );
}
你的答案:i=m;i<=n;i++ √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
Copyright ? 2006 All rights reserved 河南科技大学
建议使用:800×600以上分辨率IE4.0以上版本浏览器
循环结构程序设计(二),实验报告(共 题),用时(1分30秒),成绩(A)
1、 下面程序的功能是:输出以下图形:
*-------------->在第11列
***
*****
请把程序补充完整。
#include"stdio.h"
main( )
{ int i,j,k;
for(i=0;i<=2;i++)
{ for( j=0; j<10-i ;j++ ) printf(" ");
for( k=0; _______________ ;k++ ) printf("*");
printf("\n");
}
}
你的答案:k
2、 下面函数的功能是求出100~300间的素数和,请把程序补充完整。
#include"stdio.h"
main( )
{ int i, j, flag, sum=0;
for( i=100; i<=300; i++ )
{ flag=0;
for( j=2; j<=i-1; j++ )
if( i%j==0 ) { flag=1;break; }
if( ________ ) sum+=i;
}
printf("The sum is %d\n",sum);
}
你的答案:flag==0 √
3、 下面函数的功能是输出九九乘法表,请把程序补充完整。
#include"stdio.h"
main( )
{ int i,j;
for( i=1; i<=9; i++ )
{ for( j=1; __________; j++ )
printf("%d*%d=%-4d", i,j,i*j);
printf("\n"); }
}
你的答案:j<=i √
4、 根据公式:e= 1+1/1!+1/2!+1/3!+.......+1/n!+.....,计算e的近似值,请把程序补充完整。
#include"stdio.h"
main( )
{ long int n,j;
float sum=1,t;
for(n=1; n<=20; n++)
{ t=1.0;
for(j=1; j<=n; j++)
t=t*j;
________________;
}
printf("%10.2f\n",sum);
}
你的答案:sum=sum+1/t √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
一维数组程序设计,实验报告(共 题),用时(2分9秒),成绩(A)
1、 定义一个数组名为ftop且有5个int类型元素的一维数组,同时给每个元素赋初值为0,请写出数组的定义语句_________
你的答案:intftop[5]={0}; √
2、 下面程序的功能是:为一维数组a中的元素赋值,并按照逆序输出。请在程序中的横线上填入正确的内容。
#include "stdio.h"
void main( )
{ int i,a[10]; /* 定义循环变量i和一维数组a */
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(_________ ;i>=0;i--)
printf("%d ",a[i]); /* 按照逆序输出 */
printf("\n");
}
你的答案:i=9 √
3、 下面程序的功能是:输出一维数组a中的最小值及其下标。请在程序中的横线上填入正确的内容。
#include"stdio.h"
main( )
{ int i,p=0,a[10]; /* 定义a为数组名,p为下标名 */
for(i=0; i<10; i++)
scanf("%d",&a[i]);
for(i=1; i<10; i++)
if (a[i]<a[p])
_________ ;
printf("%d,%d",a[p],p); /* 输出一维数组a中的最小值及其下标 */
}
你的答案:p=i √
4、 下面程序的功能是:求一维数组中下标为偶数的元素之和并输出。请在程序中的横线上填入正确的内容。
#include "stdio.h"
void main()
{ int i,sum=0;
int a[ ]={2,3,4,5,6,7,8,9};
for(i=0; i<8;_________)
sum+=a[i];
printf("sum=%d\n",sum);
}
你的答案:i+=2 √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
Copyright ? 2006 All rights reserved 河南科技大学
建议使用:800×600以上分辨率IE4.0以上版本浏览器
二维数组程序设计,实验报告(共 题),用时(3分48秒),成绩(A)
1、 定义一个5行5列的二维数组a,使主对角线(含主对角线)下的所有元素初始化为1,在划线处填空。
int i,j,a[5][5];
for(i=0; i<5; i++)
for(j=0; j<5; j++)
if( _________ ) a[i][j]=1;
你的答案:i>=j √
2、 求一个4×4矩阵的主对角线元素之和
#include "stdio.h"
void main()
{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,sum=0;
for(i=0; i<4; i++)
_________;
printf(“sum=%d\n”,sum);
}
你的答案:sum+=a[i][i] √
3、 求二维数组a中的最大元素及其下标,填空并运行程序。
#include "stdio.h"
void main()
{int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
int i,j,max,l,c;
max=a[0][0];
for(i=0; i<4; i++)
for(j=0; j<4; j++)
if( max<a[i][j] ) { _________ ;l=i;c=j;}
printf(“max=%d,l=%d,c=%d%\n”,max,l,c);
}
你的答案:max=a[i][j] √
4、 统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩,填空并运行程序。
#include "stdio.h"
void main()
{ int stu[3][4],i,j,t[3];
float a[3],sum=0;
for(i=0; i<3; i++)
for(j=0; j<4; j++)
scanf("%d",&stu[i][j]);
for(i=0; i<3; i++)
{ t[i]=0;
for(j=0; j<4; j++)
{ sum+=stu[i][j];
t[i]+=stu[i][j];
}
printf("%-6d",t[i]);
_________ ;
printf("%-6.2f\n",a[i]);
}
printf("average = %.2f\n",sum/12.0);
}
你的答案:a[i]=(float)t[i]/4 √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
Copyright ? 2006 All rights reserved 河南科技大学
建议使用:800×600以上分辨率IE4.0以上版本浏览器
字符数组程序设计,实验报告(共 题),用时(8分45秒),成绩(A)
1、 1. 下面程序运行的结果是:________________
#include "stdio.h"
void main()
{char a[11]={ ’I’, ' ','a’, 'm’,' ', 'a’, ' ', 'b’, 'o’, 'y’};
printf("%s\n",a); }
你的答案:Iamaboy √
2、 2.下面的程序用来实现将两个字符串连接起来。请将源程序补充完整,
#include "stdio.h"
void main()
{char str1[100],str2[100];
int i=0,j=0;
printf("please input the string1:");
gets(str1);
printf("please input the string2:");
gets(str2);
for(i=0;str1[i]!='\0';i++);
for(j=0;str2[j]!='\0';j++)
{str1[i]=str2[j];
i++;}
_____________;
printf("the catenated string is %s",str1);
}
你的答案:str1[i]=’\0’ √
3、 3.下面程序的功能是用strcat函数实现将字符串2连接到字符串1的后面并输出,请补充完整。
#include "stdio.h"
#include "string.h"
void main()
{char str1[80]="This Is a ",str2[80]="c Program";
printf("String1 is: %s\n",str1);
printf("String2 is: %s\n",str2);
_____________;
printf("Result is: %s\n",str1);
}
你的答案:strcat(str1,str2) √
4、 4.下面的程序用来实现将一个字符串中的所有大写字母转换为小写字母并输出。请将源程序补充完整。
例如,当字符串为"This Is a c Program"
输出:"this is a c program"
#include "stdio.h"
void main()
{char str[80]="This Is a c Program";
int i;
printf("String is: %s\n",str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='A' && str[i]<='Z')
________________;
printf("Result is: %s\n",str);
}
你的答案:str[i]=str[i]+32 √
思考题分数:60分,源代码分数:40分。应提交源代码:5个,实际提交源代码:5个。
Copyright ? 2006 All rights reserved 河南科技大学
建议使用:800×600以上分辨率IE4.0以上版本浏览器
函数,实验报告(共 题),用时(0分30秒),成绩(A)
1、 下面程序的功能是:判别一个整数数组中各元素的值,若大于0 则输出该值,若小于或等于0则输出0值。请在程序中的横线上填入适当的内容,将程序补充完整。
#include "stdio.h"
void nzp(int v)
{ int i=0;
if(v>0) printf("%d ",v);
else printf("%d ",i);
}
void main()
{ int a[5],i;
printf("input 5 numbers\n");
for(i=0;i<5;i++)
{ scanf("%d",&a[i]);
______________ }
}
你的答案:nzp(a[i]); √
2、 一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9。下面程序的功能
展开阅读全文