《高级语言程序设计》习题
一.填空题
1. 以下条件表达式可计算1+|a|的值,填空完成语句:a>=0 ?(1+a):( )
2. 函数max定义的首部为:int max(int x[],int n),该函数完成实现寻长度为n的数组x中的最大元素。若在主函数中有定义:int c,a[10];并要求函数调用后,变量c存放数组a中的最大元素,则函数调用语句应为:( )
3. 若有int i=5; 则循环语句while(i > = 1) i - -;执行后,i的值为 ( )。
4. 能正确表示逻辑关系:“0≤a<10”的C语言表达式是( )。
5. 设int a[2][3] = {{2},{3}};则数组元素( )的值为3。
6. 表达式 (int)(3.0/2.0)的值是( )。
7. 有定义: int x=3, y=2; 执行x/=y+1; 语句后x的值为( ) 。
8. 有定义: int x=2, y=0; 表达式 (!x||y) 的值为( )。
9. 有定义:char str[]= “Hello!”; 则数组str的长度为( )。
10. 有定义:int i=5; 则循环语句while(i>=1) i=i-2; 执行后变量i的值为( )。
11. 已知 ‘A’ ‘Z’ 的ASCII码为6590,当执行int x= ‘D’+5; 语句后x的值为( )。
12. 有定义int a[6]={1,2,3,4,5,6},*p=a; 则*(p+2)的值为( )。
二. 选择题(在每题的四个备选答案中,选出一个正确的答案)
1. 以下不能定义为变量名的是:
(A) sanf (B) void (C) _2com (D) Go
2. 有以下程序: int main()
{ int k=2,i=2,m ;
m=i*=k++; printf(“%d,%d\n”,m,i);
return 0;
}
执行程序后的输出结果是:
(A) 6,6 (B) 4,3 (C) 6,4 (D) 4,4
3. 设x,y,t均为int型变量,则执行语句: x=y=3;t=++x||++y;后,t的值为:
(A) 不定值 (B) 1 (C) 3 (D) 4
4. 以下选项中错误的语句组是:
(A) char s[8]=“Beijing”;
(B) char *s=“Beijing”;
(C) char s[8]; s[8] =“Beijing”;
(D) char *s; s =“Beijing”;
5. 以下叙述中不正确的是:
(A) 在不同的函数中可以使用相同名字的变量
(B) 函数中的形式参数是局部变量
(C) 在一个函数内定义的变量只在本函数范围内有效
(D) 在一个函数内的复合语句中定义的变量在本函数范围内有效
6. 若有以下变量定义和赋值语句:int *p,*q,i=1,j=0;p=&i;q=&j;
下列各项中,对赋值语句 *p=*q; 描述不正确的是:
(A) 等同于i=j; (B) 是把q所指变量中的值赋给p所指向的变量
(C) 将改变p的值 (D) 将改变i的值
7.若有变量定义:int n=2,*p=&n,*q=p;则以下非法的赋值语句是:
(A) q=n; (B) p=q; (C) *p=*q; (D) n=*q;
8. 已有数组定义int a[2][3]={1,2,3,4};则a[1][2]的值为:
(A) 0 (B)4 (C) 3 (D) 2
9. 在整个程序运行期间,某局部变量始终占据固定地存储单元,则其存储类型为:
(A)auto (B) static (C) register (D) extern
10. 有定义: int k=0,n; 则以下四个赋值语句中变量n的值与其他三个赋值语句不同的是 。
A) n=k++; B) n=k+=1;
C) n= ++k D) n=k+1
11. 为表示关系 x≥y≥z,应使用的C表达式是 。
A) (x>=y) and (y>=z) B) (x>=y) && (y>=z)
C) x>=y>=z D) (x>=y) & (y>=z)
12. 有定义:int a; 下面关于指针变量pa的定义及初始化正确的是 。
A) int pa=&a; B) int *pa=a; C) int *pa=&a; D) int *pa=*a;
13. 下列程序的输出结果是________。
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
14. 以下叙述中正确的是 。
A) break语句只能用于switch语句体中。
B) break语句只能用于循环体中。
C) continue语句只能用于switch语句体中。
D) continue语句只能用于循环体中。
15. 若用数组名作为函数调用时的实参,则实际上传递给形参的是 。
A) 数组首地址 B) 数组的第一个元素值
C) 数组中全部元素的值 D) 数组元素的个数
A) 数组首地址 B) 数组的第一个元素值
C) 数组中全部元素的值 D) 数组元素的个数
16. 有以下说明和定义:
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
17. 语句 while(x%y); 括号中的表达式等价于_______。
A) x%y==0 B) x/y!=0
C) x%y!=0 D) x==y
18. 以下选项中错误的语句组是_______。
A) char s[8]="Beijing"; B) char *s="Beijing";
C) char s[8]; s[8] ="Beijing"; D) char *s; s="Beijing";
19. 判断字符串s1是否大于字符串s2,应当使用 。
A) if (s1>s2) B) if (strcmp(s1, s2))
C) if (strcmp(s2, s1)>0) D) if (strcmp(s1, s2)>0)
20. 关于printf函数正确的是温度华氏和摄氏的关系是:。已知:float C,F;由华氏求摄氏的正确的C赋值表达式是 。
A) C=5/9(F-32) B) C=5*(F-32)/9
C) C=5/9*(F-32) D) 三个表达式都正确
C) C=5/9*(F-32) 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=0;i<=(n-1)/2;i++)
{ j=n-1-i;
t=x[i]; x[i]=x[j]; x[j]=t;
}
}
int main()
{ int i,a[6]={1,2,3,4,5,6 };
inv(a,6);
for(i=0;i<6;i++)
printf(“%d,”,a[i]);
printf("\n");
return 0;
}
4.
int main()
{ int i,j;
for(i=1;i<6;i++)
{ for(j=1;j<i;j++)
printf(“%4d”,i*j);
printf(“\n”);
}
return 0;
}
四. 程序填空:
1、下面的程序功能是:输出x,y,z三个数中的最小值,请填空使程序完整。
#include <stdio.h> void main ( ) { int x=4,y=5,z=8 ; int u,v; u = x<y ? (1) ; v = u<z ? (2) ; printf ("%d\n",v); } |
2、下面的程序功能是:计算输入整数的各位数字之和。例如整数1987各位数字之和是1+9+8+7,等于25。请填空。
#include <stdio.h> void main() { int i,k=0,sum; printf("Enter a integer:"); scanf("%d",&i); (3) ; while(i!=0) { (4) ; sum += k; (5) ; } printf("sum is %d\n",sum); } |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论