《高级语言程序设计》练习题一.填空题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 语言表达式是( a>=0&&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. 有定义:int i=5; 则循环语句while(i>=1) i=i-2; 执行后变量i 的值为( -1 )。
10. 已知 ‘A ’~ ‘Z ’ 的ASCII 码为65~90,当执行int x= ‘D ’+5; 语句后x 的值为( 73 )。
11. 如果在调用一个函数过程中,又调用另一个函数,称为函数的( 嵌套 )调用。
如果在调用一个函数的过程中又直接或间接地调用该函数本身,称为函数的(递归 )调用。
12. 若有语句:int b[][2]={1,2,3}; 则数组b 的元素a[1][1]的值是( 0 )。
13. 能正确表示数学表达式)(2c b c a +的C 语言表达式是( 2a/(c*(b+c)) )。
二. 选择题(在每题的四个备选答案中,选出一个正确的答案)1. 以下不能定义为变量名的是:B(A) sanf (B) void (C) _2com (D) Go2. 以下选项中非法的字符常量是:B(A) ‘\\’ (B)‘\181’ (C) ‘0’ (D) ‘\xAA ’3. 有以下程序: int main() D{ 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,44.设x,y,t均为int型变量,则执行语句: x=y=3;t=++x||++y;后,t的值为:B(A) 不定值 (B) 1 (C) 3 (D) 45. 若有下列定义语句:long x;double y; float z; 执行程序时输入10,2.5,3.6↙,那么以下输入语句中能正确为变量赋值的是: A(A) scanf("%ld%lf%f", &x,&y,&z); (B)scanf("%d%f%f",&x,&y,&z);(C)scanf("%ld,%lf,%f", &x,&y,&z);(D)scanf("%ld,%lf,%lf",&x,&y,&z);6. 以下叙述中不正确的是: D(A) 在不同的函数中可以使用相同名字的变量(B) 函数中的形式参数是局部变量(C) 在一个函数内定义的变量只在本函数范围内有效(D) 在一个函数内的复合语句中定义的变量在本函数范围内有效7.已有数组定义int a[2][3]={1,2,3,4};则a[1][2]的值为:A(A) 0 (B)4 (C) 3 (D) 28.在整个程序运行期间,某局部变量始终占据固定地存储单元,则其存储类型为:B(A)auto (B) static (C) register (D) extern9.下列关于C函数的叙述中,正确的是:c(A) 每个函数至少要具有一个参数(B) 每个函数都必须有返回值(C) 每个C程序中必须有一个main函数(D) 函数不能自己调用自己10.有定义: int k=0,n; 则以下四个赋值语句中变量n的值与其他三个赋值语句不同的是:AA) n=k++; B) n=k+=1;C) n= ++k D) n=k+111.在C语言中,合法的字符常量是: BA) ‘\084' B) ‘\x43' C) ‘ab' D) “\0”12. 为表示关系 x ≥y ≥z ,应使用的C 表达式是:BA) (x>=y) and (y>=z) B) (x>=y) && (y>=z)C) x>=y>=z D) (x>=y) & (y>=z)13. 下列运算符中优先级最高的是:CA) / B) && C) ! D) =14. 若用数组名作为函数调用时的实参,则实际上传递给形参的是:AA) 数组首地址B) 数组的第一个元素值 C) 数组中全部元素的值D) 数组元素的个数 15. 语句 while(x%y); 括号中的表达式等价于: cA) x%y==0 B) x/y!=0C) x%y!=0 D) x==y16. 温度华氏和摄氏的关系是: )32(95-=F C 。
已知:float C,F ;由华氏求摄氏的正确的C 赋值表达式是:DA) C=5/9(F-32)B) C=5*(F-32)/9 C) C=5/9*(F-32) D) 三个表达式都正确 17. 以下叙述中正确的是:BA) break 语句只能用于switch 语句体中。
B) break 语句只能用于循环体中。
C) continue 语句只能用于switch 语句体中。
D) continue 语句只能用于循环体中。
18. 下列程序的输出结果是:int i,s=0;for(i=1;i<=10;i++){ if(i%3!=0) continue;s+=i;}printf(“%d ”,s); AA) 18 B) 20 C) 0 D) 1三. 程序分析题:阅读下列程序,写出程序执行结果1.int main(){ int a;float x=3.2,y=1.3;a=(int)x%2*y;printf(“%d,%4.2f”,a,x); 1,3.20return 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); 2,1return 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; 6,5,4,3,2,1}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;}23 64 8 125 10 15 20四. 程序填空:1、下面的程序功能是:输出x,y,z三个数中的最小值,请填空使程序完整。
#include <stdio.h>void main ( ){int x=4,y=5,z=8 ;int u,v;u = x<y ? x:y ;v = u<z ? u:z ;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);sum=0 ;while(i!=0){k=i%10 ;sum += k;i=i/10 ;}printf("sum is %d\n",sum);}3、下面的程序功能是:输出所有个位数为6,且能被3整除的2位数。
请填空使程序完整。
#include <stdio.h>int main(){int t, i=10;while( i<=99 ){ t=i%10 ;if( t = = 6 && i%3==0 )printf("%3d\n",i);i++ ;}}五.程序设计题:编程解决下列问题1.求出10至1000之内能同时被2、3、7整除的数,并输出。
2.编写程序,查找二维数组中的最大元素,并将其输出;已知数组定义:int data[2][3]={30,10,76,4,22,17};3.编程计算表达式:1+22+33+44+554.。