文档库 最新最全的文档下载
当前位置:文档库 › 专升本C语言历年考试题及答案

专升本C语言历年考试题及答案

专升本C语言历年考试题及答案
专升本C语言历年考试题及答案

专升本C语言历年考试题及答案

江西财经大学2005年

专升本选拔考试《C语言程序设计》试卷

(考试时间120分钟,总分100分)

一、用C语言描述下列命题(共16分,每小题2分)

1、a、b和c均为整型变量,a和b中有一个大于c。

2、数学公式:

a ac

b

2

4 2-

+

-b的C语言表达式(注:sqrt( )为开方函数)。

3、写出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("%d%d",&a,&b);

if (a>0) x=x+y;

if (a

else if (a==b) y=5;

else y=x+y;

printf("x=%d,y=%d\n",x,y);

}

假设输入为: 2 -3, 则程序运行后的输出结果为:

3、void main() {

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("%d",&x);

switch(abs(x)%3){

case 0:s1++;break;

case 1:s2++;break;

default:s3++;

}

}

printf("s1=%d,s2=%d,s3=%d",s1,s2,s3);

}

请叙述上面程序的功能。

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 ( ③

return( min ) ;

}

2、程序的功能是:从键盘输入一串字符(以回车换行符结束),统计其中大写英文字母的个数,将结果保存在变量count中。

void main( ){

int count=0;

char c;

while(c!='\n'){

if ( ② ) ③ ;

c=getchar();

}

printf("have typed %d upper letters", count);

}

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

temp= ① ;

a[i]= ② ;

③ =temp;

}

}

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("\n");

} }

五、程序设计题(共26分) 1、设一个三位数可以表示为abc ,若其能满足条件a 3+b 3+c 3=abc ,则称其为水仙花数,编程求出所有的水仙花数。(8分)

2、编程求数列1+(1+2)+(1+2+3)+…+(1+2+...+10)的和并输出。(8分)

3、设有10个学生的信息,包括学号、姓名和三门功课的成绩,试编写学生信息输入函数、学生信息输出函数、打印每一学生平均分函数,最后编写主函数,并在主函数中调用测试这些函数。(10分) 专升本选拔考试《C 语言程序设计》参考答案及评分标准

一、用C语言描述下列命题(共16分,每小题2分)

1、a>c||b>c

2、(-b+sqrt(b*b-4*a*c)/(2*a)

3、(x>=1&&x<=100)&&(x%3==0||x%7!=0)

4、ch>=’0’&&ch<=’9’

5、x<60||x>=90&&x<=100

6、x*x+y*y<=1

7、char *p[10]; 8、int max(int x,int y)

二、根据要求画出流程图或N-S图(共10分,每小题5分)

1、

2、

4分)

1 23

4、功能:输入10个数,分别求出其中能被1、2、3整除的数的和并打印。

5、输出:Result is:55

fun 函数的功能:求12+22+...+n2

四、程序填空(共28分,每空2分)

1、① i<3 ② j<4 ③ a[i][j] ④ a[i][j]

2、① c=getchar( ) ② c>='A' && c<='Z' ③ count++

3、① a[i] ② a[n-i-1] ③ a[n-i-1]

4、① 'A' ② 4 ③ 2*i-1 ④ ch++

五、程序设计题(共26分,8+8+10)

1、

void main() {

int a,b,c;

A

B B B

C C C C C

D D D D D D D (图1)

for(a=1;a<=9;a++)

for(b=0;b<=9;b++)

for(c=1;c<=9;c++)

if(a*a*a+b*b*b+c*c*c==100*a+10*b+c)

printf("%5d",100*a+10*b+c);

}

2、

#include <>

void main(){

int i,s,sum=0;

for(i=1,s=0;i<=10;i++){

s=s+i;

sum=sum+s;

}

printf("Result is:%6d",sum);

}

3、

#include <>

#include <>

typedef struct{ /*定义描述学生的结构体类型*/

int num; /*成员变量num表示学号*/

char name[20]; /*姓名*/

float score[3]; /*成绩*/

}stud;

void input(stud s[],int n)

{

int k;char t[10];

for (k=0; k

printf("No:");gets(t); s[k].num=atoi(t);

printf("name:"); gets(s[k].name);

printf("score1=?"); gets(t); s[k].score[1]=atof(t);

printf("score2=?"); gets(t); s[k].score[2]=atof(t);

printf("score3=?"); gets(t); s[k].score[3]=atof(t);

}

}

void output(stud s[],int n)

{

int k;

printf("%10s%20s%8s%8s%8s\n","no","name","score1","score2","score3"); for (k=0; k

printf("%10d",s[k].num);

printf("%20s",s[k].name);

printf("%",s[k].score[1]);

printf("%",s[k].score[2]);

printf("%\n",s[k].score[3]);

}

}

void print_average(stud s[],int n)

{

int k;

printf("\n\n%10s%20s%12s\n","no","name","ave_score");

for (k=0; k

printf("%10d",s[k].num);

printf("%20s",s[k].name);

printf("%\n",(s[k].score[1]+s[k].score[2]+s[k].score[3])/3);

}

}

void main(){

stud st[10];

input(st,3);

output(st,3);

print_average(st,3);

}

C语言与程序设计试题

一、用C语言描述下列命题(共16分,每小题2分)

1.x为整数,写出x能被3除尽,且被5除余2的判断表达式。

2.写出a、b之差的绝对值大于x、小于y的判断表达式。

3.如图所示电路中A=1表示开关合上(B,C也相同),写出能使得灯亮的表达式。

4.把下列数学表达式转换为C语言表达式:

5.写出判断字符变量ch是阿拉伯数字符号的表达式。

6.定义一个枚举类型season描述一年的四个季节(spring, summer, autumn, winter)。

7.函数fun可以接收字符串的地址作为实际参数,计算后能够返回一个字符指针,写出该函数的声明。

8.有定义FILE fp; 请写出以只读方式打开一个二进制文件的相关语句。

二、根据要求画出NS图(共5分)

求解使得不等式1-(1/2)+(1/3)-…+(1/N) > 3/5成立的最小的N值并输出。

三、单项选择题(共5分,每小题1分)

1.以下说法中正确的是( )

A.C语言程序总是从第一个定义的函数开始执行;

B.C语言程序中至少有一个main函数;

C.C语言程序总是从main函数开始执行;

D.C语言程序中的main函数必须放在程序的开始部分;

语言中,下列正确的叙述是 ( )

A.C程序中的关键字必须小写,其他标识符不区分大小写

B.C程序中的所有字母都不区分大小写

C.C程序中的所有字母都必须小写

D.所有的C语言关键字必须小写

3.已知int i=10;表达式20-5<=i<=9的值是( )

A.0

B. 1

C. 19

D. 20

4.以下不正确的描述是( )

A.break语句不能用于循环语句和switch语句外的其它语句

B.在switch语句中使用break语句或continue语句的作用相同

C.在循环语句中使用continue语句是为了结束本次循环

D.在循环语句中使用break语句是为了使流程跳出循环体

5.对二维数组的正确说明是( )

A.int a[][]={1,2,3,4,5,6};

B.int a[2][]={1,2,3,4,5,6};

C.int a[][3]={1,2,3,4,5,6};

D.int a[2,3]={1,2,3,4,5,6};

四、程序阅读题(共20分,每小题4分)

1、#include <>

void main()

{ int i=15;

while (i>0)

if (--i%3!=2)

continue;

else

printf("%d ",i);

}

程序运行后的输出结果为:

2、#include <>

int func(int n){

if (n==0)return 0;

else if (n==1) return 1;

else return n*n+func(n-2);

}

void main(){

printf("%5d%5d\n",func(3),func(5));

}

程序运行后的输出结果为:

3、#include <>

void main(){

int a,b,s,t;

a=b=s=0, t=1;

while(t<=4){

t=t+1;

switch(t%3){

case 1: a=a+t; break;

case 2: b=b+t; break;

default: s=s+3;

}

printf("a=%d,b=%d,s=%d\n",a,b,s);

}

}

程序运行后的输出结果为:

4、 #include <>

#include <>

int f1(int x)

{ int y=0;

static int z=2;

y+=1; z++;

return(x+y+z);

}

void main()

{ int x=1,i;

char s1[10]=“Visual”,s2[10]=“C++”,s[10]; for(i=0;i<3;i++)

printf("%d ",f1(x));

printf(“\n”);

if(strcmp(s1,s2))

{ strcpy(s,s1); puts(s);}

strcat(s2,s1);

printf(“%d,%s\n”,strlen(s2),s2);

}

程序运行后的输出结果为:

5、#include <>

#define MAX 100

void main()

{ int f[MAX],i,j,k=2,m=5;

for(i=0;i<=m;i++)

f[i]=1;

f[k-1]=2;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++)

f[i]+=f[j];

printf("%d%5d%5d\n",k,m,f[m]);

}

程序运行后的输出结果为:

五、程序填空(共24分,每小题6分)

1、求10000内的完数,一个数所有因子的和与该数相等即为完数,如6=1+2+3,所以6是完数。

#include <>

void main()

{ int m,k,i,sum;

for(m=6;m<=10000;m++)

{ if(n%10==0) printf("\n");

①;

for(i=2;i<=②;i++)

if(m%i==0)

③;

if( sum==m )

{ printf("%d ",m);n++;}

}

}

①__________ ②__________ ③ __________

2、下面的函数sort按照交换排序的思想,实现对n个整型数的非递减排序。

void sort(int p[], int n) {

int i, j, t;

for (i=1; ① ; i++)

for (j=i; ② ; j--)

if (p[j]>=p[j-1]) ③ ;

else { t=p[j]; p[j]=p[j-1]; p[j-1]=t; }

}

①②③

3、

#include <>

void swap(int ① )

{ int max, i, *q=p;

for(i=1;i<4;i++)

if(*q<*(p+i))

q=p+i;

max=*q;*q=*(p+3);*(p+3)=max;

}

void main()

{ int a[3][4],i,j,*p=a[0];

for( i=0;i<3;i++ )

for(j=0;j<4;j++)

scanf(“%d”,p++);

for( p=&a[0][0];p

swap(p);

③ ;

for(i=0;i<3;i++)

{ for(j=0;j<4;j++) printf(“%3d”,*p++);

printf(“\n”);}

}

①__________ ②__________ ③ __________

4、设某单位将一商品四个季度的销售数据以数字串的形式放在一数组中,下面的

程序实现对四个季度产品销售额的求和,请在空处填上适当表达式。

#include<>

void main(){

char sales[4][10]={ "","","1234","" },*p[4];

int i, j, dec_dig;

float sale, totle=0;

for(i=0;i<4;i++) ①;

for(i=0;i<4;i++){

sale=0;dec_dig=0;

for(j=0;p[i][j]!=②;j++){

if(p[i][j]==’.’) dec_dig=1; //小数点出现,作标记

if(!dec_dig)

sale=10*sale+p[i][j]-'0'; //处理整数部分

else

sale=③; //处理小数部分

}

total=total+sale;

}

printf("totle=%f\n",totle);

}

①__________ ②__________ ③ __________

六、程序设计题(共30分)

1、编写递归函数,求n以内的自然数的和,要求主函数中只是输入n以及打印递归函数的计算结果。(8分)

2、海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平

均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?(10分)

3、有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。(12分)

六、具有报名资格的考生,请于2010年6月3日至4日到江西财经大学教务处办

公室(蛟桥园校区第五教学楼二楼)领取准考证。

七、考试时间安排

1、英语:6月5日上午9:00—11:00(全省统考,含听力,请自备好调频收音

机频率为:)

2、综合课程:6月5日下午14:00—16:00

3、C语言程序设计:6月5日下午14:00—16:00

4、大学语文:6月5日下午14:00—16:00

5、微积分:6月6日上午9:00—11:00

6、英语听力:6月6日上午9:00—11:00(请自备好调频收音机,频率为:)

7、软件技术基础:6月6日下午14:00—16:00

相关文档