当前位置:文档之家› 暨南大学 2008高级语言程序设计试卷及答案

暨南大学 2008高级语言程序设计试卷及答案

暨 南 大 学 考 试 试 卷一、单项选择题(共20小题,每小题2分,共40分)1、以下叙述中正确的是___________(C ) A 、C 语言程序总是从第一个的函数开始执行B 、在C 语言程序中,要调用的函数必须在main ()函数中定义 C 、C 语言程序总是从main ()函数开始执行D 、C 语言程序中的main ()函数必须放在程序的开始部分 2、以下值不等于3的表达式是_____________(D ) A 、'D'-'A' B 、'6'-'3'C 、'\011'D 、3+'\0'3. 能正确表达字母c 为大写字母的C 语言表达式是__________(D ) A )c>=’A’ and c<=’Z’ B )c>=’A’ || c<=’Z’ C )c>=’A’ or c<=’Z’ D )c>=’A’ && c<=’Z’4. 设变量a 是整型,f 是实型,i 是双精度型,则表达式10+'a'+i*f 值的数据类型为_____(C ) A )int B )float C )double D )不确定5. 有函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));,此语句的实参数为________(A )A、3B、4C、5D、有语法错误6. 设有语句int a=5,b; b=a>3&&0, a++; 执行后变量b的值为__________(C)A)5 B)6 C)0 D)17. 判断两个字符串s1和s2是否相等,应该使用____________(D)A)if (s1= =s2) B)if (s1=s2) C)if (strcpy(s1, s2)) D)if (strcmp(s1,s2)= =0) 8. 下面程序的执行结果是____________(B)main(){ int n=1;n++;printf("%d%d%d",n,n++,――n);}A、2 2 1B、2 2 2C、2 3 2D、2 1 19. 循环语句while(!E);中的表达式!E等价于________(C)A)E!=0 B)E!=1 C)E==0 D)E==110. 设有数组定义: char array []="China"; 则数组array所占的存储空间为___________(C)A)4个字节B)5个字节C)6个字节D)7个字节11. 下列关于C语言的函数参数说法不正确的是__________(B)A)实参可以是常量,变量或表达式B)形参可以使常量,变量或表达式C)在函数定义时必须指定形参的类型D)形参与实参的类型应相同或赋值兼容12. 下列程序执行后的输出结果是__________(A)void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5];a=0; b[0]=3;func(&a,b); printf("%d\n", b[0]);}A、6B、7C、8D、913. 若有语句:int s[3][3],(*p)[3];p=s; 则对s数组元素的引用形式正确的是__________(C)A)p+1 B)*(p+1) C)p[1][2] D)*(p+1)+214. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是________(B)A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定15. C语言中最简单的数据类型包括__________(B)A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型16. 有如下定义:struct date{ int yy,mm,dd;};struct worklist{ char name[20];char sex;struct date birthday;}person;对结构体变量person的出生年月进行赋值时,下面正确的赋值语句是__________(D)A、yy=1958 B、birthday.yy=1958C、person.yy=1958D、person.birthday.yy=195817. 对语句:int a[10]={6,7,8,9,10};理解正确的是___________(B)A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10] D)数组长度与初值个数不同,此语句不正确18. 不合法的main函数命令行参数表示形式是__________(C)A)main( int a, char *c[]) B)main(int arc, char **arv)C)main(int argc, char *argv) D)main( int argv, char *argc[])19. 设有如下定义:struct ss{ char name[10];int age; char sex;}std[3],*p=std;下面各输入语句中错误的是____________(B)A)scanf(“%d”,&(*p).age); B)scanf(“%s”,&);C)scanf(“%c”,&std[0].sex); D)scanf(“%c”,&(p->sex));20. 若执行以下程序段int x=3,y=6,z; z=x^y<<2;则z的二进制值是_______________(A)A)00011011 B)00010100C)00011000 D)00000110二、判断对错题(正确的在题后括号内划“√”,错误的划“×”。

共10小题,每小题1分,共10分)1. 表达式strlen("std\n007\1\\")的值是10 (×)2. C语言程序的执行总是从主函数Main开始(√ )3. for ( ; ; )和while (1)的功能是相同的(√ )4. 在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用(√ )5. C语言中的文件包含是不可以嵌套的( ×)6. 设有下面的程序段:char s[]="china";char *p=s,p和s可以随意替换使用(×)7. 若有定义:int x=0, *p=&x;,则语句printf(“%d\n”,*p);的输出结果为p的地址(×)8. 设有数组定义int a[][4]={0,0};则数组的行数为1 (√ )9. C程序中注释部分可以出现在程序中任意合适的地方(×)10. 在C的文件操作中,可以利用fseek函数进行文件指针的随机定位(√ )三、填空题(共10小题,每小题1分,共10分)1. 若已知a=10,b=20,则表达式!a<b的值为 12. 结构化程序设计所规定的三种基本控制结构是顺序结构、_ 选择结构和______循环________结构3. 在循环语句中,可以使用____continue_______语句结束本次循环4. 语句int (*p)();定义了p是一个____指向函数的指针变量____5. 从作用域角度来划分,变量可以划分为_____局部变量_______和___全局变量____6.设int a[2][3] = {{2},{3}};则数组元素______a[1][0]__________的值为37. 若有定义: int a[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是_____8_______8. 定义int a[]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是_____2______四、程序运行结果题(根据程序写出运行结果,共5小题,每小题3分,共15分)1. 写出程序运行结果(3分)main(){ int a=2,b=3;a=a+b; b=a-b; a=a-b;printf(“%d,%d\n”, a, b);}程序运行结果:3,22. 如果运行下面程序输入字符为“T”,写出程序的运行结果是(3分)void main(void){char c1;scanf("%c",&c1);c1=(c1>='A'&& c1<='Z')?(c1+32):c1;c1=(c1>='a'&& c1<='z')?(c1-32):c1;printf("%c",c1);}程序运行结果:T3. 写出程序运行结果main(){ int k=4, n=0;for (;n<k;){ n++;if (n%3!=0) continue;k--;}printf (“%d,%d\n”,k,n);}程序运行结果:3,34. 写出程序运行结果main(){ char str[]=”xyz”,*p=str;while (*ps) ps++;for (ps--;ps-str>=0;ps--)puts(ps);}程序运行结果:zyzxyz5. 写出程序的运行结果(3分)main (){ int x=0;sub (&x,8,1);printf (“%d\n”,x);}sub (int *a, int n, int k){ if (k<=n) sub(a,n/2,2*k);*a+=k;}程序运行结果:7五、程序填空题(根据题目要求进行程序填空。

共5小题,共25分)1. 调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。

(每空1分,共3分)int fun (int n){ int m=0,f=1,I;for (i=1; __i<=n__; i++){ m+=i*f;f=___f*(-1)_____;}return m;}main(){ printf(“m=%d\n”, __fun(10)___);}2. 输入10个数字,然后按逆序输出。

(每空1分,共2分)void main (){ int i, a[10];for(i=0; i<=9; i++)___ scanf (“%d”, &a[i]) __;for (i=9; ___ i>=0__; i--)printf(“%d ”,a[i]);}3. 输入一串字符,分别统计出英文字母、空格、数字和其他字符的个数。

相关主题