华南农业大学期末考试试卷( A卷)
          2013学年第1学期               考试科目: 高级语言程序设计 
          考试类型:(闭卷)          考试时间:  90 分钟
 
考生须知:
  1. 必须在答卷上正确填写班级、学号、姓名等内容。
  2. 答案写在答卷上,写在试卷等其它地方不得分。
  3. 试卷上出现的int类型变量均为4字节存贮。
  4. 上机考试部分,考试时间与地点另行安排。
 
一、单项选择题(共10题,每题1分)
 
1.  double x=3.1415 ;int a=8, 表达式a/3*3+(int)(x*1000+0.5)/1000.0 的值为(   )
  A.11.141;                 B.9.142;       C.9.141;           D.11.142;
 
2. 若有int s[4] = {4,3,2,1};,则s[s[0]-2*s[2]+s[3]] 的值是(  )
     A.1         B. 2         C. 3          D.4
 
3. 在a=0,b=5;则执行(a=3)&&(a>b)&&(b--);语句后,a和b的结果分别是( 
A05       B35        C34       D35
 
4. 下面对C语言运算符的优先级叙述正确的是(  )。
A!(非) > 关系运算符 >算术运算符 > &&(与) > ||(或) > 赋值运算符
B算术运算符 >!(非) >关系运算符 > &&(与) > ||(或) > 赋值运算符
C算术运算符 > 关系运算符 > !(非) > &&(与) > ||(或) > 赋值运算符
D!(非) > 算术运算符 > 关系运算符 > &&(与) > ||(或) > 赋值运算符
 
5.下面程序段的输出结果是(   )
       #include "stdio.h"
       int main()
       {      int a,b,d=241;
              a=d/100%9;
              b=(-1)&&(-1);
              printf("%d, %d",a,b);
       }
       A.6, 1       B.2, 1     C.s=6, 0     D.2, 0
 
6.若有代数式,则正确的C语言表达式是(   )
A. fabs(x*3+sqrt(x))                   B. abs(pow(x,3)+sqrt(x))   
C. abs(pow(x,3.0)+pow(x,0.5))     D.fabs(pow(x,3.0)+sqrt(x))
 
 
7. 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( 
   A.for(i=1,p=1;i<=5;) p*=i++;
   B.p=1;for(i=1;i<=5;) {p*=++i;}
   C.i=1;p=1;while(i<=5) {p*=i; i++;}
   D.i=1;p=1;do{p*=i; i++; } while(i<=5);
 
8. 已知函数fun的定义如下
  void fun(char *s, char *r)
  {   while (*s++=*r++); }
则该函数的功能是(      )
A.串复制        B.求串的长度        C.串比较        D.串反向
 
9. 下面程序段的运行结果是(      )
   a=1; b=2; c=2;
        while(a<b<c) {t=a; a=b; b=t; c--; }
        printf("%d,%d,%d", a, b, c);
  A.1,2,0  B.2,1,0     C.1,2,1       D.2,1,1
 
10. 下面程序段没有按缩进方式排版,请分析,当a=1,b=3,c=5,d=4时,执行后x的值是( 
   if(a<b)
        if(c<d) x=1;
        else
        if(a<c)
        if(b<d) x=2;
        else x=3;
        else x=6;
        else x=7;
   A.1    B.2    C.3     D.6
 
二、看程序写结果(共6题,每题4分)
1. #include <stdio.h>
int main ()
{
   float  a = 3.4;
   int  b, c=15, d;
   b = a * 3;
   d = c/10;
   printf("b=%d, d=%d\n",  b,  d);
}
请写出运行结果:
 
 
 
2. #include <stdio.h>
int main()
{
       char c;
       int v0=0 ,v1=0 ,v2=0;
       do {
    switch (c=getchar())
    {     case 'a' : case 'A':
           case 'e' : case 'E':
           case 'i' : case 'I':
           case 'o' : case 'O':
           case 'u' : case 'U': v1+=1;
           default : v0+=1; v2+=1;
    }
       } while(c!='\n');
   printf("v0=%d,v1=%d,v2=%d\n", v0 , v1 , v2);
}
由键盘输入“ADescriptor回车”,请写出运行结果:
 
3. #include <stdio.h>
int main()
{
  int x=4;
  while(x<30)
  {  printf("%d\n",x);
     if(x%5= =0) break;
     else if(x%3= =1) {x*=2; continue;}
     x++;
  }
}
 
    请写出运行结果:
 
4. #include<stdio.h>
  int main( )
  {
      char arr[]="ABCDE";
      char *ptr;
      for(ptr=arr+4;ptr>=arr; ptr--) printf("%s\n",ptr);
  }
    请写出运行结果
 
 
  5.
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#define  N   5
int main()
{      int a[10][10], i, j, m;
       m= N /2;
       for(i=0; i< N; i++)
              for(j=0; j< N; j++)
              {      if(abs(i-m)>abs(j-m))
                            a[i][j] = abs(i-m);
                     else
                            a[i][j] = abs(j-m);
              }
for(i=0; i<N; i++)
{      for(j=0; j<N; j++)
                     printf("%d   ", a[i][j]);
              printf("\n");
       }
       }
  请写出运行结果:
 
6. 有下面结构体类型定义,
       struct  node
       {
              char  info;
              struct  node  *link;
       };
  假设已存在如下链表,



以head为实参调用如下函数,
void  func(struct  node *head)
{       struct  node *p = head, *p2=NULL;
        int i=0;
        while( p!= NULL)
{      putchar(p->info); p2=p; p = p-> link; }
putchar('\n');
p2->link=head;
        for(i=0, p = head; i<8; i++)
{putchar(p->info); p = p-> link; }
}
  请写出运行结果:
三、看程序填空题(共8空,每空2分)
 
1.一个函数如下,用程序实现之。

#include <stdio.h>
int main()
{     float x, y;
      scanf"f", &x;     
      if x<0
          y = x;               
else  if ______【1     
              y = 6*x-1;
            else
              y = 3*x-11 ;
             printf"y=%f", y;
}
 
 
2. 下面函数实现将字符串中ASCII形式表示的整数转变为数值形式,请填空。
int trans(char *s)
{
       int ret=0;
       while(______【2      )
{
              ret=ret*10+(*s-'0');
              s++;
       }
       return ret;
}
 
3. 下面程序实现由键盘输入20个整数,统计不同数字的个数,请填空。
#include"stdio.h"
int main()
{   int a[20];
    int i,t,p=0;
    for(i=0;i<20;i++)
    {   scanf("%d",&a[i]);
        for(t=0;t<i;t++)
        {       【3】        }
        if(t= =i) p++;
    }
    printf("%d",p);
}
 
 
4. 下面程序实现求出数组元素中的最大值,请填空。
#include  "stdio.h"
int main()
{      int  c[10]={78,45,175,251,249,34,9,179,50,210};
       int  i,max;
              【4】        ;
       for(i=1; i<10;i++)
    {
              if(max<c[i]) max = c[i];
    }
       printf("max = %d\n", max);
}
 
5. 在当前目录中创建文件名为"data.txt"的文本文件,将由键盘输入的一行字符(以回车符结束)中的数字字符按先后顺序写入该文件中,请填空。
(如由键盘输入)
13 cats and 22 bikes
(文件data.txt内容如下)
1322
 
程序如下,请填空,
#include "stdio.h"
main()
{   FILE *fp;
    char ch;
    if((fp=fopen("data.txt","w"))= =NULL)
        return 0;
    while((ch=getchar())!='\n')
    {       if ('0'<=ch && ch<='9')
                      【5】      ;
    }
    fclose(fp);
}
 
 
6.下面程序实现输入两个正整数,输出它们的最大公约数,请填空(多行)。
#include<stdio.h>
int GCD(int n, int m)
{
              【6】       
}
int main()
{   int n, m;
       scanf("%d%d", &n, &m);
    printf("%d\n", GCD(n,m));
}
 
7. 下面程序的功能是输出如下n*n(n<20,为正奇数)阶方阵。请填空。
        1   2   6   7  15
        3   5   8  14  16
        4   9  13  17  22
       10  12  18  21  23
       11  19  20  24  25
          (n=5
 
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
int main()
{      int a[20][20], n, i, j, m=0, x, y, temp, count=1;
       scanf("%d", &n);
       for(i=-(n-1);i<=n-1;i++)
       {
           for(j=0;j<       【7】       ;j++)
           {
               if(m<n) x=m-j;
            else x=n-1-j;
            y=m-x;
            if(m%2){       【8】       }
            a[x][y]=count++;
           }
           m++;
       }
    for(i=0; i<n; i++)
    {      for(j=0; j<n; j++)
                printf("%4d", a[i][j]);
            printf("\n");
    }
}
 
 
四、上机考试(共50分)