8、以下程序的运行结果是         
main()
{int k=4,a=3,b=2,c=1;
printf(“\n%d\n”,k<a?k:c<b?c:a);
A、4            B、3            C、2            D、1
9、设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是         
A、 while循环10次                B、循环是无限循环
C、循环体一次也不执行            D、循环体只执行一次
10、下面程序段的运行结果是       
  x=y=0;
  while(x<15) y++,x+=++y;
  printf(“%d,%d”,y,x);
  A、20,7        B、6,12        C、20,8        D、8,20
11、若有说明:int a[10];则对a数组元素的正确引用是  D     
  A、a[10]                    B、a[3,5]
C、a(5)                    D、a[10-10]
12、下面对s的初始化,其中不正确的是      D 
  A、char s[5]={“abc”};        B、char s[5]={‘a’,’b’,’c’};
C、char s[5]=””;                D、char s[5]=”abcdef”;
13、判断字符串s1是否大于字符串s2,应当使用    D 
A、if(s1>s2)                B、if(a==b)
C、if(strcpy(s2,s1)>0)        D、if(stcmp(s1>s2)>0)
14、以下有关函数的形参和实参的说法中正确的是  A       
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参各占用一个的存储单元
C、只有当实参和与其对应的形参同名时才占用一个的存储单元
D、形参是虚拟的,不占用存储单元
15、C语言中,简单变量做实参时,它和对应的形参之间的数据传递方式是    B   
  A、地址传递                B、单向值传递
C、由实参传给形参,再由形参传递给实参
D、同用户指定传递方式
16、C语言的编译系统对宏的处理是    D 
  A、在程序运行时            B、在程序连接时
C、和C程序中的其他语句同时进行编译
D、在对源程序中其它成份正式编译之前进行的
    重庆邮电大学  2006-2007学年第 一 学期
一、单选题(每题1分 共三十分)
1、以下叙述正确的是         
A、在C程序中main函数必须位于程序的最前面
B、C程序的每行中只能写一条语句
C、C语言本身没有输入输出语句
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误
2、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列
顺序为       
A)、char<int=<long int<=float<double
B、char=int<long int<float<double
C、char<int<long int=float=double
D、char<int<long int<=float=double
3、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是     
A、 7    B、 8    C、 6    D、 2
4、表达式 18/4*sqrt(4.0)/8值的数据类型为       
A)、 int    B)、 float    C)、 double    D)、不确定
5、若有以下定义,则能使值为3的表达式是   D     
Int k=7,X=12;
A、 X%=(k%=5)                  B、 X%=(k-k%5)
C、 X%=k-k%5                      D、(X%=k)-(k%=5)
6、下列运算符中优先级最高的是  B       
A、<        B、+        C、&&        D、!=
7、执行以下语句后a,b的值分别为       
int a,b,c;
a=b=c=1;
++a||++b&&++c;
A、2,2            B、1,1        C、2,1        D、1,2
年级
专业:
班级:
姓名:
学号:
                            程序设计基础  考试题  (  A 卷 )
题号
总分
分数
评卷人
线      线
订      封
  装      密

17、若有语句int *point,a=4;和point=&a;则下面均代表地址的一组是    D   
  A、a,point,*&A            B、&*a,*point,&a
C、&a,*&point,*point        D、&a,&*point,point
18、设p1和p2是指向同一个字符串的指针变量,,c为字符变量,则以下不能正确执行赋值语句的是  B 
  A、c=*p1+*p2                B、p2=c
C、p1=p2                    D、c=*p1*(*p2)
19、下面程序段的运行结果是        C 
char  str[]="ABC"    ,*p=str;               
p+=3;
printf(“%d\n”,strlen(strcpy(p,”ABCD”)));
A、8                    B、12
C、4                    D、7
20、若有以下定义,则对a数组元素地址的正确引用是      D     
      int a[5],*p=a;       
A、*a+1                    B、p+5
C、&a+1                    D、&a[0]
21、以下正确的定义语句和赋值语句是         
A、int b[3][5],(*q)[5],(*p)[3];p=b;q=b;
B、float b[3][5],*p[3];p[0]=b[0];p[2]=*b+4;
C、double b[3][5],s[5][3],*q;q=b;s=q;
D、int b[10],*q;char *s;q=b;s=b;
22sizeof(int)2,计算1至10的乘积,下列语句序列中正确的是         
    A、int jc=1; for(int i=2;i<=10;i++) jc*=i;
    B、for(float jc=1,int i=2;i<=10;i++,jc*=i);
    C、float jc=1; for(int i=2;i<=10;jc*=i,i=i+1);
    D、for(float jc=1;i=2;i<=10;i++) jc*=i;
23、数组定义为int a[4][5];,引用a[1]+3表示          
    A、a数组第2行第4列元素的地址        B、a数组第2行第4列元素的值
    C、a数组第4行的首地址               D、a数组第1行第4列的首地址
30、若程序中有下面的说明和定义
        struct abc
        {int x;char y;}
        struct abc s1,s2;       
则会发生的情况是       
A、编译出错       
B、程序将顺利编译连接执行
C、能顺利通过编译连接但不能执行
D、能顺利通过编译但连接出错
二、填空题(每题2分 共20分)
1. float x=2.5,y=4.7; int a=7;,则表达式 x+a%3*(int)(x+y)%2/4 的值为 程序设计c语言       
2. 判断变量ab的值均不为0的逻辑表达式为                             
3. 整型变量m的值为27,语句 printf("m=%x",m);的输出结果为     
4. 如定义语句为“char a[]="windows ",b[]="95";”语句"printf("%s",strcat(a,b));"的输出结果为 windows 95                 
5. 宏定义语句 #define f(c) c>='A'&&c<='Z' 的引用 f(x[i])置换展开后为         x[i]>=A&&C<=Z’                 
6int i=234,j=567; 函数printf("%d%d\n",i,j) 的输出结果是 234567         
7. 下列程序段的输出是__5,35_____。
#define f(a, b, x)  a*x+b
printf("%d, %d\n", f(3,2,1), f(6, 5, f(3, 2, 1)));
8、为了建立如图所示的存储结构(即:每个结点含三个域,data是数据域,Ltree是指向左子树结点的指针域,Rtree是指向右子树结点的指针域),请填空.
struct TREE {char data;              Ltree  data  Rtree
  __struct terr *Ltree,*Rtree__________; }node;                     
9. 求1至100的和,写作 for(s=0,i=1;    i<=100    ;++i) s+=i;
printf("%s\n",a);
3、#include <stdio.h>
      void main()                   
      {  int a,b,c,find(int,int,int);
          scanf("%d%d%d",&a,&b,&c);
          printf("%d\n%d,%d,%d\n",find(a,b,c),a,b,c);
      }
      int find(int a,int b,int c)
      {  int u,s,t;
          u=((u=(a>b)?a:b)>c)? u:c;
          t=((t=(a<b)?a:b)<c)? t:c;
          s=a+b+c-u-t; a=u;
          b=s; c=t; return s;
      }
运行时输入: 5 –7 3,输出结果:       
4、 #include <stdio.h>
#include<stdlib.h>
#define NEW  (struct info *)malloc(sizeof(struct info))
void main()
          {  struct info { int data; info *pn; };
              info *base,*p;
              base=NULL;
              for(int i=0;i<10;i++) {
                  p= NEW;//new info; c++的用法;
p->data=i+1;
                  p->pn=base; base=p;
              }
              p=base;
              while(p!=NULL) { printf("%2d",p->data); p=p->pn; }
              printf ("\n");
24按位与运算:int a=7,b=12,c=a&b;  变量c的值是          
A、19        B、4          C、5       D、9
25、以下程序的输出结果是        。 
    main()
    {  int x=10,y=10;
        printf("%d %d\n",x--,--y); }
A、10 10      B、9 9    C、9  10      D、10 9
26、定义如下变量和数组: 
    int i;
    int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是       
for(i=0;i<3;i++) printf("%d",x[i][2-i]);
A、1 5 9        B、1 4 7    C、3 5 7        D、3 6 9
27、main()
    {int a[10]={1,2,3,4,5,6,7,8,9,0},*p;
      p=a;
      printf("%x\n",p);
      printf("%x\n",p+9);    }
该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是 D     
A、203          B、204        C、1a4        D、1a6
28、以下程序段的输出结果是         
      int x=3;
      do
      {    printf("%3d",x-=2);}
while(!(--x));     
A、1          B、3 0      C、1-2        D、死循环
29、char *aa[2]={"abcd","ABCD"};   
则以下就法中正确的是     
A、aa数组元素的值分别是"abcd"和ABCD"   
B、aa是指针变量,它指向含有两个数组元素的字符型一维数组   
C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址     
D、aa数组的两个元素中各自存放了字符'a'和'A'的地址
10. 定义a为长度为10的字符串、同时为字符串赋初值"continue"的语句为   char a[10]= "continue"                             
三、程序阅读题(每题5分 共30分)
1. #include <stdio.h>
      void main( )
    {  int k=0;
        char c='A';
        do {
switch (c++)
{  case 'A': k++; break;
              case 'B': k--;
              case 'C': k+=2; break;
              case 'D': k=k%2; break;
              case 'E': k=k*10; break;
              default: k=k/3;
            }
            k++;
        } while(c<'G');
        printf("k=%d\n", k);
}                               
输出结果:            
2. #include <stdio.h>
        void print(int,char,int);           
        void main()
        {  print(3,'*',1); print(2,'*',3);
            print(1,'*',5); print(2,'#',3);
            print(2,'#',3);
          }
          void print(int begin,char pzf,int n)
        {  char a[50];
            for(int i=0;i<begin;i++) a[i]=' ';
            for(i=0;i<n;i++) a[begin+i]=pzf;
            a[begin+i]='\0';
5、#include <stdio.h>
    #include <string.h>
    void del_bk(char *p)
    {  char *p1; p1=p;
        while(*p1!='\0')
          if(*p1==' '&&*(p1+1)==' ') strcpy(p1,p1+1);
          else p1++;
    }
    void main()
    {  char *aa="aa bb    cccc  ddd  efg  h";
        printf("%s\n",aa); del_bk(aa); printf("%s\n",aa);
    }
6、#include <stdio.h>
            void main()
          {int x[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
              int i,j;
              for(i=0;i<4;i++) 
                for(j=0;j<4;j++)
                    *(*(x+i)+j)/=*(*(x+i)+i);
              for(i=0;i<4;i++) {
                for(j=0;j<4;j++) printf("%3d",*(*(x+i)+j));
                putchar('\n');
              }
            }
         
四、编程题(每题10分 共20分)
1. 编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。
2.编写函数,通过指针连接两个字符。函数头如下:
#include <stdio.h> 
char *strcat(char *str1,char *str2)

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