《高级程序设计语言》课程考试试题
姓名 年级 层次 专业 学号
| 总分 | 100 | 题 号 | 一 | 二 | 三 | 四 | 五 |
| 题 分 | |||||||
| 阅卷人 | 得 分 |
1.自定义标识符中,符合C语言规定的是 。
A. for B. 3a C. *a D. _123
2. 为表示关系100≥x≥10,应使用C语言表达式 。
A. (100>=x)&&(x>=10) B. (100>=x) AND (x>=10)
C. (100>=x>=10) D. (100>=x)&(x>=10);
3.定义int a; float f; double i; 6.定义表达式15+i*f+ˊAˊ的值是 。
A. float B. int C. char D. double
4.下面程序要求从键盘上输入值并打印,请选择正确的输入方法 。
main( )
{ int a,b;
scanf("x=%d,y=%d",&x,&y);
printf("x=%d,y=%d\\n",x,y);
}
A. 5,6 B. x=5, y=6 C. 5↙6 D. 5 6
5.定义如下变量和数组:
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
6.在定义了 int a[3][2];之后,对a的引用正确的是 。
A.a[3][2] B.a[3][0] C.a[0][0] D.a[0,0]
7.执行以下程序段后,m的值为 。
int a[2][3]={{1,2,3},{4,5,6}};
int m,*p; p=&a[0][0];
m=(*p)+(*(p+2))+(*(p+4));
A. 9 B. 8 C. 7 D. 6
8.若有以下定义和语句,则输出结果是 。
char s1="12345",s2="1234"
printf("%d\\n",strlen(strcpy(s1,s2)));
A. 4 B. 5 C. 9 D. 10
9.有一函数关系见下表:
| x | y= |
| x<0 | x-1 |
| x=0 | x |
| x>0 | x+1 |
A. y=x+1; B. y=x-1;
if(x>=0) if(x!=0)
if(x==0) y=x; if(x>0) y=x+1;
else y=x-1; else y=x;
C. if(x<=0) D. y=x;
if(x<0) y=x-1; if(x<=0)
else y=x; if(x<0) y=x-1;
else y=x+1; else y=x+1;
10.以下正确的程序段是 。
A. char str[2]; B. char *p;
scanf("%s",&str); scanf("%s",p);
C. char str[20]; D. char str[20],*p=str;
scnaf("%s",&str[2]); scanf("%s",p[2]);
11.以下正确的函数定义形式是 。
A. double fun(int x,int y) B. double fun(int x;int y)
C. double fun(int x,int y); D. double fun(int x,y);
12.以下有关宏替换不正确的是 。
A. 宏替换不占用运行时间 B. 宏名无类型
C. 宏替换只是字符替换 D. 宏名必须用大写字母表示
13.有如下语句int a=10,b=20,*p1,*p2;p1=&a;p2=&b;如图1所示。若要实现图2所示的存储结构,可选用的赋值语句是 。
A. *p1=*p2; B. p1=p2; C. p1=*p2; D. *p1=p2;
14.设char *s="\a\\018bc";则指针变量s指向的字符串所占的字节数
是 。
A. 9 B. 5 C. 6 D. 7
15.以下程序的输出结果是 。
#include #include main( ) { char *s1="AbCbEf",*s2="AB"; s1++;s2++; printf("%d\\n",strcmp(s1,s2)); } A. 正数 B. 负数 C. 零 D. 不确定的值 16.以下一维数组a的正确定义是 。 A. int a(10); B. int n=10,a[n]; C. int n; D. #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 17. 若有定义:int a[2][3];则对a数组中第i行第j列元素地址的正确 引用为 。 A. *(a[i]+j) B. (a+i) C. *(a+j) D. a[i]+j 18.以下程序段的输出结果是 。 main() { int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i printf("%d\\n",n[1]); } A. 2 B. 1 C. 0 D. 3 19.以下程序输出的结果是 。 int d=1; fun(int p) { int d=5; d+=p++; printf("%d ",d); } main( ) { int a=3; fun(a); d+=a++; printf("%d\\n",d); } A. 8 4 B. 9 6 C. 9 4 D. 8 5 20. 20. 若有以下说明和语句: struct student { int number; char *name; }stu1,*p=&stu1; 则以下引用方式不正确的是 和 。 A. stu1->number B. (*p).number C. p->number D. stu1.number E. *p.number 二、填空题(每题2分,合计20分) 1.C程序是由 构成的,其编译是以 为单位进行的。 2.设a为int型变量,请写出描述"a是奇数"的表达式 3.若数组a有m列,则a[i][j]之前的数组元素个数为 。 4.请读程序片段: char str[]="english",*p=str; printf("%s\\n",*(p+3)); 上面程序片段的输出结果是 。 5.执行下面的程序段后,k值为 。 k=1;n=263; do{k*=n%10; n/=10;} while(n); 6. 变量的作用域是指变量的有效范围。按作用域变量可分为 变量 和 变量两大类。 7.设有程序片段: switch(ch ) { case ˊAˊ: printf("85-100\\n"); case ˊBˊ: printf("70-84\\n"); case ˊCˊ: printf("60-69\\n"); case ˊDˊ: printf("<60\\n"); default : printf("error!\\n"); } 若ch的值为ˊDˊ,则输出结果是 。 8.下面程序的功能是在三个字符串中找出最小的,请填空: #include #include main( ) { char s[20],str[3][20]; int i; for(i=0;i<3;i++) gets(str[i]); strcpy(s, ); if(strcmp(str[2],s)<0) strcpy(s,str[2]); printf("%s\\n ); } 9.写出下列两种指针的定义: 指针p1为指向整型数据的指针 ; p2为指向字符串"I am a student"的指针 。 10.在一个源文件中定义的局部变量的作用域为 。 三、阅读程序,按要求完成各题。(20分) 1.以下程序的功能是:利用函数求出用户输入的5个float型数据的平均值,请填空。(4分) float func(float a[],int n) { int i; float sum=0.0,ave; for(i=0; ;i++) sum= ; ave= ; return ( ); } main( ) { int i; float a[5],average; for(i=0;i<5;i++) scanf("%f",&a[i]); average=func(a,5); printf("The average of five float is:%f\\n",average); } 2.下面程序是将数组a的内容逆置重放。请填空:(6分) main() { int a[8],i,j,t; printf("Input 8 number to the array:\\n"); for(i=0;i<8;i++) scanf("%d", ); for(i=0;i<=3;i++) { j= ; t=a[i];a[i]=a[j]; ; } printf("\\n The array has been invered:"); for(i=0;i<8;i++) printf("%d ",a[i]); } 3. 以下程序的功能是:从键盘输入两个字符串,利用函数比较其是否相 等,若相等返回1,否则返回0。(6分) f(char s[],char t[]) { int i=0; while(s[i]==t[i] && s[i]!=ˊ\\0ˊ) ; if(s[i]==ˊ\\0ˊ&& ) return(1); else ; } main( ) { char a[6],b[7]; int i; scanf("%s%s",a,b); i=f(a,b); printf("%d\\ni); } 4.输入一整数x,在数组a中查找x第一次出现的位置。请填空。(4分) #include main() { int a[10]={10,24,34,55,9,17,87,22,9,19},x,i; printf(“Input an integer:”); scanf(" ",&x); for(i=0; ;i++) if( ) break; if( ) printf("Not found.\\n"); else printf("Position is: %d\\n",i); } 《高级程序设计语言》试题答案 一.选择题 1.D 2.A 3.D 4.B 5.C 6.C 7.A 8.A 9.C 10.B 11.A 12.D 13.B 14.D 15.A 16.D 17.D 18.D 19.A 20.A、E 二.填空题 1. 函数, 文件 2. a%2!=0(或a%2==1) 3. i*m+j 4. lish 5.36 6.全局 局部 7.<60 error! 8. (strcmp(str[0],str[1])<0 ? str[0]:str[1]) s 9. int *p1; char *p2="I am a student"; 10.该变量所在的函数 三.阅读程序 1.i 3.i++ t[i]==ˊ\\0ˊ return(0) 4. %d i<10 a[i]==x i>=10下载本文