华东理工大学
  2009  -  2010  学年 第学期   c程序设计  试卷( )
题号
总 分
得分
一、选择题(本题共20道小题,共40分。)
1. 有下列程序
#include <stdio.h>
float型main()
{
union
{
int k;
char i[2];
}*s,a;
s=&a;
s->i[0]=0x39;s->i[1]=0x38;
printf("%x\n",s->k);
}
输出结果是
A)3839  B)3938    C)380039    D)390038
2. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把100和765.12分别赋给i和f,则正确的输入为
A)100<空格>765.12<回车> B)i=100,f=765.12<回车>
C)100<回车>765.12<回车> D)x=100<回车>,y=765.12<回车>
3. 设已有定义: char *st="how are you"; 下列程序段中正确的是
    A) char  a[11], *p;  strcpy(p=a+1,&st[4]);
    B) char  a[11];      strcpy(++a, st);
    C) char  a[11];      strcpy(a, st);
    D) char  a[], *p;    strcpy(p=&a[1],st+2);
4. 设j为int型变量,则下面for循环语句的执行结果是
for(j=10;j>3;j--)
{
if(j%3)j--;
--j;--j;
printf("%d",j);
}
A)6 3  B)7 4    C)6 2    D)7 3
5. 以下程序的输出结果是
main()
{
int i,k,a[10],p[3]:
K=5;
for (i=0;i<10;i++) a[i]=i;
for (i=0;i<3;i++) p[i]=a[i*(i+1)];
for (i=0;i<3;i++) k=p[i]*2;
printf("%d\n",k);
}
A)20  B)21  C)22    D)23
6. 若有以下说明:
        int w[3][4]o={{0,1},{2,4},{5,8}};
        int(*p)[4]=w;
    则数值为4的表达式是
A) *w[1]+1        B) p++,*(p+1)       
C) w[2][2]          D) p[1][1]
7. 若k是int型变量,且有下面的程序片段:
k=-3
if(k<=0) printf("####")
else    printf("&&&&");
上面程序片段的输出结果是
A) ####    B) &&&&      C) ####&&&&  D) 有语法错误,无输出结果
8. 以下程序运行后,输出结果是
main( )
{
int y=18,i=0,j,a[8];
do
{
a[i]=y%2;i++;
y=y\2;
} while(y>1=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("\n")
}
A)10000    B)10010    C)00110      D)10100
9. 以下叙述中不正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量
10. 请读程序:
#include<stdio.h>
func( int a, int b)
{ int c;
c=a+b;
return c;
}
main()
{ int x=6, y=7, z=8, r;
r=func( x--,y==,x+y),z--);
printf("%d\n",r);
}
上面程序的输出结果是
A) 11              B) 20                C) 21                D) 31
11. 以下程序的输出结果是
# include <stdio.h>
main()
{  int a=2,c=5;
  printf("a=%%d,b=%%d\n",a,c);  }
A) a=%2,b=%5  B) a=2,b=5    C) a=%%d,b=%%d    D) a=%d,b=%d
12. 设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果为
A) 4            B) 3
C) 2            D) 1
13. 执行以下程序后,y的值是
main ( )
{ int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)  y + = * (p + x);
printf("%d\n",y);    }
A) 17          B) 18          C) 19            D) 20
14. 下面四个选项中,全是不合法的用户标识符的是:
A、A  P_0 do                B、float la0 _A
C、b-a goto int              D、_123 temp INT
15. 以下程序的输出结果是
      main(  )
      {      int  n=4;
            while(n--)printf("%d ",--n);
      }
  A) 2  0    B) 3  1    C) 3  2  1    D) 2  1  0
16. 设有如下的变量定义:
int i=8,k,a,b;
unsinged long w=5
double x=1,42,y=5.2
则以下符合C语言语法的表达式是
A)a+=a-=(b=4)*(a=3)    B)x%(-3);    C)a=a*3=2    D)y=float(i)
17.  两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main( )
{ int x;
scanf("%d",&x);
if(x + + >5) printf("%d",x);
else        printf("%d\n",x - -);    }
A) 7和5      B) 6和3    C) 7和4    D) 6和4
18. 若有以下定义:
char a;int b;
float c;double d;
则表达式a*b+d-c值的类型为
A)float    B)int    C)char      D)double
19. 设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是
A) *((*prt+1) [2])    B) *(*(p+5))       
C) (*prt+1)+2        D) *(*(a+1)+2)
20. 给出以下定义:
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
则正确的叙述为
A)数组X和数组Y等价      B)数组x和数组Y的长度相同
C)数组X的长度大于数组Y的长度      D)数组X的长度小于数组Y的长度
二、填空题(每空1分,共10分。)
1. 假定p所指对象的值为25,p+1所指对象的值为46,则执行"(*p)++;"语句后,p所指对象的值为___________。
2. 如果变量定义有:int a=9,c=8;则表达式(――a!=c++)?――a:++c的值为________。
3. 假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为  __________。
4. 已有int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应scanf("%d,%d,%d",&i,&j,&f)调用语句的数据输入形式是__________
5. 若x=5,y=10,则x>y和x<=y的逻辑值分别为________和_______。
6. C语言提供三种逻辑运算符,按优先级高低它们分别是_________, ________,_________。
7. 空字符串的长度是__________。
三、判断题(本题共10道小题,共10分。)
1. 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数( )
2. 函数中的局部变量都是动态存储( )
3. 自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式( )
4. 函数的定义可以嵌套,但函数的调用不可以嵌套( )
5. do-while循环中,根据情况可以省略while(  )
6. 形参时虚拟的,不占用存储单元(  )
7. 用户若需要调用标准库函数,调用前必须重新定义(  )
8. 全局变量使得函数之间的"耦合性"更加紧密,不利于模块化的要求( )
9. 在实际编程中,do-while循环完全可以用for循环替换(  )
10. if语句,switch语句可以嵌套,而且嵌套的层数没有限制(  )
四、程序填空(本题共5道小题,每题4分,共20分。)
1. 编写程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
#include <stdio.h>
main()
{
    int n,s,sum=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        ____________;

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