专升本C语言历年考试题及答案
江西财经大学2005年
专升本选拔考试《C语言程序设计》试卷
(考试时间120分钟,总分100分)
一、用C语言描述下列命题(共16分,每小题2分)
1、abc均为整型变量,ab中有一个c
2、数学公式:的C语言表达式(注:sqrt( )为开方函数)
3、写出100内的自然数x,能被3或7整除的表达式。
4、写出判断字符变量ch是阿拉伯数字字符的表达式。
5、写出满足x<60或90x100C语言表达式。
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 <stdio.h>
  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<b) x=2*y;
      else if (a==b) y=5;
      else y=x+y;
      printf("x=%d,y=%d\n",x,y);
  }
假设输入为: 2  -3<CR>, 则程序运行后的输出结果为:
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 (   <min )  min=    ;
    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、c语言编写递归函数以下函数的功能是:在第一个循环中给前n个数组元素依次赋1~n;在第二个循环中使a数组的n个元素值对称互换,变成nn-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<n/2; 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");
    }
}
A
B B B
C C C C C
D D D D D D D
(图1)
五、程序设计题(共26分)
1、设一个三位数可以表示为abc,若其能满足条件a3+b3+c3=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、
三、程序阅读题(共20分,每小题4分)
1、输出:sum=165
  功能:求30内能被3整除的数的和。
2、输出:x=2,y=3
3、输出:sum=30
  功能:求3*3矩阵对角线上元素之和。
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'  2*i-1  ch++
五、程序设计题(共26,8+8+10
1、
void main() {
    int a,b,c;
    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 <stdio.h>
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 <stdio.h>
#include <stdlib.h>
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<n; k++) {
    printf("No:");gets(t); s[k].num=atoi(t);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。