专升本C语言历年考试题及答案
江西财经大学2005年
专升本选拔考试《C语言程序设计》试卷
(考试时间120分钟,总分100分)
一、用C语言描述下列命题(共16分,每小题2分)
1、a、b和c均为整型变量,a和b中有一个大于c。
22、数学公式:?b?b?4ac的C语言表达式(注:sqrt( )为开方函数)。
2a3、写出100内的自然数x,能被3或7整除的表达式。 4、写出判断字符变量ch是阿拉伯数字字符的表达式。 5、写出满足x<60或90≤x≤100的C语言表达式。 6、写出平面上的点(x,y)落在单位圆内的表达式。
7、数组p[10]的各元素用于保存指向char型的指针,写出该数组的定义。 8、有名为max的函数,其功能是对两个int型参数x、y进行计算,返回其中的较大者,写出该函数的说明部分。
二、根据要求画出流程图或N-S图(共10分,每小题5分)
1、用流程图或N-S图表示以下算法。
输入x的值,按下列函数计算y的值,并输出y的值。 2、画出打印以下图案的算法流程图或N-S图。 & & & & & & & & & &
三、程序阅读题(共20分,每小题4分)
1、# include <> void main( ) { int i,sum=0;
for(i=1;i<=30;i++)
if(i%3!=0) continue; else sum=sum+i;
printf(“sum=%d\\n”,sum); }
请叙述上面程序的功能,并写出程序的运行结果。
2、void main( ) {
int a,b,x=1,y=1; scanf(\ if (a>0) x=x+y; if (a
else if (a==b) y=5; else y=x+y;
printf(\ }
假设输入为: 2 -3
int a[3][3]={2,4,6,8,10,12,14,16,18}; int sum=0, i, j; for ( i=0; i<3; i++)
for ( j=0; j<3; j++ )
if (i==j) sum+=a[i][j]; printf(“sum=%d\\n”,sum) ; }
请叙述上面程序的功能,并写出程序的运行结果。 4、void main( ){ int i=0;
int x,s1,s2,s3; s1=s2=s3=0; while(i++<10){
scanf(\ switch(abs(x)%3){
case 0:s1++;break; case 1:s2++;break; default:s3++; } }
printf(\ }
请叙述上面程序的功能。 5、int fun(int n) {
if(n==0) return 0;
else if(n==1) return 1; return n*n+fun(n-1); }
void main(){
printf(“Result is:%d”,fun(5)); }
请叙述上面程序中fun函数的功能并写出程序的运行结果。
四、程序填空(共28分,每空2分)
1、以下函数用于求出一个3×4矩阵中的最小元素值。 int min_value(int m[][3]) { int i, j, min; min=m[0][0];
for (i=0; ① ; i++)
for (j=0 ; ② ; j++)
if ( ③ 2、程序的功能是:从键盘输入一串字符(以回车换行符结束),统计其中大写英文字母的个数,将结果保存在变量count中。 void main( ){ int count=0; char c; ① while(c!='\\n'){ if ( ② ) ③ ; c=getchar(); } printf(\ } 3、以下函数的功能是:在第一个循环中给前n个数组元素依次赋值1~n;在第二个循环中使a数组的n个元素值对称互换,变成n、n-1 ? ? ? 4、3、2、1。 void fun ( int a[ ],int n){ int i; int temp; for(i=1; i<=n; i++) a[i-1]= i; for(i=0; i 4、以下程序是实现如图1所示图案的打印。 void main() { int i,j,k; char ch; for(i=1,ch= ① ;i<= ② ;i++){ for(j=1;j<=4-i;j++) putchar('□'); /*□表示空格符*/ for(k=1;k<= ③ ;k++) putchar(ch); ④ printf(\