《高级语言程序设计》习题
一.填空题
1. 以下条件表达式可计算1+|a|的值,填空完成语句:a>=0 ?1+a: 1-a
2. 函数max定义的首部为:int max(int x[],int n),该函数完成实现寻长度为n的数组x中的最大元素。若在主函数中有定义:int c,a[10];并要求函数调用后,变量c存放数组a中的最大元素,则函数调用语句应为:c=max(a,10);
3. 若有int  i=5 则循环语句while(i > = 1)  i - -;执行后,i的值为 0
4. 能正确表示逻辑关系:“0≤a<10”的C语言表达式是0<=a && a<10
5. 设int a[2][3] = {{2},{3}};则数组元素 a[1][0] 的值为3。
6. 表达式 (int)(3.0/2.0)的值是 1
7. 有定义: int  x=3, y=2; 执行x/=y+1; 语句后x的值为 1
8. 有定义: int  x=2, y=0; 表达式 (!x||y) 的值为  0
9. 有定义:char  str[]= “Hello!”; 则数组str的长度为 7
10. 有定义:int  i=5;  则循环语句while(i>=1)  i=i-2;  执行后变量i的值为  -1 
11. 已知 ‘A’ ‘Z’ ASCII码为6590,当执行int  x= ‘D’+5; 语句后x的值为  73 
12. 有定义int  a[6]={1,2,3,4,5,6},*p=a; *(p+2)的值为 3  *++P)的值为  2  )。
13. 如果在调用一个函数过程中,又调用另一个函数,称为函数的 嵌套  调用如果在调用一个函数的过程中又直接或间接地调用该函数本身,称为函数的  递归 调用。
14. 若有语句:int b[][2]={1,2,3}; 则数组b的元素a[1][1]的值是 0 
15. 能正确表示数学表达式C语言表达式是 2 * a / (c*(b+c)) 
. 选择题在每题的四个备选答案中,选出一个正确的答案
1. 以下不能定义为变量名的是:
(A) sanf        (B) void          (C) _2com          (D) Go
2. 以下选项中非法的字符常量是:
(A) \\      (B)\181      (C) 0          (D) \xAA
3. 有以下程序: int main()
{ int k=2i=2
            i*=k++ printf(“%d,%d\n,k,i)
            return 0
}
执行程序后的输出结果是:
(A) 2,4        (B) 3,4          (C) 2,6          (D) 36
4. x,y,t均为int型变量,则执行语句: x=y=3t=++x||++y;后,t的值为:
(A) 不定值        (B) 1          (C) 3          (D) 4
5. 若有下列定义语句:long xdouble y; float z; 执行程序时输入10,2.5,3.6↙,那么以下输入语句中能正确为变量赋值的是                                               
(A) scanf("%ld%lf%f", &x,&y,&z);  Bscanf("%d%f%f",&x,&y,&z);
Cscanf("%ld,%lf,%f", &x,&y,&z);Dscanf("%ld,%lf,%lf",&x,&y,&z);
6. 以下叙述中不正确的是:
(A) 在不同的函数中可以使用相同名字的变量
    (B) 函数中的形式参数是局部变量
(C) 在一个函数内定义的变量只在本函数范围内有效
c语言正确的字符常量
      (D) 在一个函数内的复合语句中定义的变量在本函数范围内有效
7. 若有以下变量定义和赋值语句:int *p*qi=1j=0p=&iq=&j 
下列各项中,对赋值语句 *p=*q 描述不正确的是:
(A) 等同于i=j            (B) 是把q所指变量中的值赋给p所指向的变量
(C) 将改变p的值            (D) 将改变i的值
8. 若有变量定义:int n=2,*p=&n,*q=p;则以下非法的赋值语句是:
(A) q=n;(不是同类)         (B) p=q;        (C) *p=*q;        (D) n=*q;
9. 已有数组定义int a[2][3]={1,2,3,4};则a[1][2]的值为:
(A) 0              (B)4              (C) 3            (D) 2
10. 在整个程序运行期间,某局部变量始终占据固定地存储单元,则其存储类型为:
(A)auto          (B) static      (C) register      (D) extern
11. 下列关于C函数的叙述中,正确的是:
A) 每个函数至少要具有一个参数
    B) 每个函数都必须有返回值
    C) 每个C程序中必须有一个main函数
    D) 函数不能自己调用自己
12. C语言中,合法的字符常量是                           
A) ‘\084'          B) ‘\x43'      C) ‘ab'          D) \0
13. 为表示关系 xyz,应使用的C表达式是   
    A) (x>=y) and (y>=z)        B) (x>=y) && (y>=z)
C)  x>=y>=z                D) (x>=y) & (y>=z)
14. 下列运算符中优先级最高的是______
A) /          B) &&          C) !        D) =
15. 有定义:int  a; 下面关于指针变量pa的定义及初始化正确的是     
A) int pa=&a;  B) int *pa=a;        C) int *pa=&a;        D)  int *pa=*a;
16. 下列程序的输出结果是________
int  i,s=0;
for(i=1;i<=10;i++)
  {  if(i%3!=0) continue;
    s+=i;
  }
printf(%d,s);
A)  18        B)  20        C)  0          D)  1
17. 以下叙述中正确的是   
    A) break语句只能用于switch语句体中。
    B) break语句只能用于循环体中。
    C) continue语句只能用于switch语句体中。
    D) continue语句只能用于循环体中。
18. 若用数组名作为函数调用时的实参,则实际上传递给形参的是       
A) 数组首地址                    B) 数组的第一个元素值
C) 数组中全部元素的值            D) 数组元素的个数
19. 有以下说明和定义:
  struct Student
  {     int num;
float score;
};
Student stu[]={{1,70},{2,89},{3,93}};
  Student *p=stu;
  以下选项中引用结构体变量成员的表达式错误的是_______
A) (p++)->num        B) p->num        C) p.num        D) stu[1].age
20. 语句 while(x%y); 括号中的表达式等价于_______
A)  x%y==0                B)  x/y!=0     
C)  x%y!=0                D)  x==y
21. 以下选项中错误的语句组是_______
        A) char s[8]="Beijing";        B) char *s="Beijing";
      C) char s[8];  s[8] ="Beijing";        D) char *ss="Beijing";
22. 判断字符串s1是否大于字符串s2,应当使用       
    A) if (s1>s2)                        B) if (strcmp(s1, s2))
    C) if (strcmp(s2, s1)>0)            D) if (strcmp(s1, s2)>0)
23. 温度华氏和摄氏的关系是:。已知:float C,F;由华氏求摄氏的正确的C赋值表达式是       
A) C=5/9(F-32)                B) C=5*(F-32)/9
C) C=5/9*(F-32)            D) 三个表达式都正确
24. 定义如下变量和数组
int k;
int a[3][3]={1,2,3,4,5};
for (k=0; k<3; k++) printf("%2d", a[k][k]);
则上面语句输出的结果是         
A) 3 5 0    B)1 5 0      C) 3 4 5      D) 错误
. 程序分析题:阅读下列程序,写出程序执行结果
1
int main()
{  int a;
    float  x=3.2,y=1.3;
  a=(int)x%2*y;
  printf(%d,%4.2f,a,x);
  return 0;
}
  2.
int main( )
{ int x=1,a=0,b=0
  switch(x)
{ case 0: b++ break
case 1: a++          
case 2: a++ b++
}
printf(%d,%d,a,b)
return 0;


}
3.
void inv(int  x[], int n)
{ int t,i,j
    for(i=0i<=(n-1)/2i++)
  {  j=n-1-i
        t=x[i] x[i]=x[j] x[j]=t

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