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

更新时间:2023-04-24 04:51:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

彭青玉

暨 南 大 学 考 试 试 卷

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'

一、单项选择题(共20小题,每小题2分,共40分)

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、3 B、4 C、5 D、有语法错误

6. 设有语句int a=5,b; b=a>3&&0, a++; 执行后变量b的值为__________(C) A)5 B)6 C)0 D)1 7. 判断两个字符串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 1 B、2 2 2 C、2 3 2 D、2 1 1 9. 循环语句while(!E);中的表达式!E等价于________(C) A) E!=0

B)E!=1

C)E==0

D) E==1

10. 设有数组定义: 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、6 B、7 C、8 D、9

13. 若有语句:int s[3][3],(*p)[3];p=s; 则对s数组元素的引用形式正确的是__________(C) A)p+1 B)*(p+1) C)p[1][2] D)*(p+1)+2

14. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是________(B) A、地址传递 B、 单向值传递

彭青玉

C、由实参传给形参,再由形参传回实参 D、 传递方式由用户指定 15. C语言中最简单的数据类型包括__________(B) A)整型、实型、逻辑型

B)整型、实型、字符型

D)整型、实型、逻辑型、字符型

C)整型、字符型、逻辑型 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=1958 D、person.birthday.yy=1958

C、person.yy=1958

17. 对语句: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)00010100 C)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的值为2. 结构化程序设计所规定的三种基本控制结构是顺序结构、构和 ______结构

3. 在循环语句中,可以使用语句结束本次循环 4. 语句int (*p)();定义了p是一个____5. 从作用域角度来划分,变量可以划分为_____和_______ 6. 设int a[2][3] = {{2},{3}};则数组元素______a[1][0]__________的值为3 7. 若有定义: 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)++的值是

四、程序运行结果题(根据程序写出运行结果,共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,2

2. 如果运行下面程序输入字符为“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); }

程序运行结果:T

3. 写出程序运行结果 main()

{ int k=4, n=0; for (;n<k;)

{ n++;

彭青玉

if (n%3!=0) continue; k--;

}

printf (“%d,%d\n”,k,n); }

程序运行结果:3,3

4. 写出程序运行结果 main()

{ char str[]=”xyz”,*p=str; while (*ps) ps++; for (ps--;ps-str>=0;ps--) puts(ps); }

程序运行结果: z yz xyz

5. 写出程序的运行结果(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;

{ m+=i*f;

} return m; } main()

{ printf(“m=%d\n”}

2. 输入10个数字,然后按逆序输出。(每空1分,共2分) void main () { int i, a[10]; }

for(i=0; i<=9; i++)

__;

printf(“%d ”,a[i]);

彭青玉

3. 输入一串字符,分别统计出英文字母、空格、数字和其他字符的个数。(每空2分,共6分) void main () { char c;

int letters=0, space=0, digit=0, other=0; printf (“please input a string:\n”); while (__{ if (_________)

letters++;

else if(c= =’ ’)

space++;

else if(c>=’0’ && c<=’9’)

else }

printf (“letters’ number: %d\nspace’s number: %d\ndigit’s number: %d\nother’s number: %d\n”, letters, space, digit, other); }

4. 函数move实现:n个整数的前面各数顺序向后移动m个位置,而最后m个数变成最前面m个数。

例如输入:1 2 3 4 5 6,移动2个位置后,结果为5 6 1 2 3 4(每空2分,共6分) void move(int a[10],int n,int m) {

int i,j,k,b[10]; for(i=0;i<m;i++)

other++;

彭青玉

for(j=n-m-1;j>=0;j--) for(k=0;k<m;k++) }

5. 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人。(每空2分,共8分) void main() {

int i,k,m,n,num[20],*p;

printf("input number of person:\n"); scanf("%d",&n); for(i=0;i<n;i++) *(p+i)=i+1; i=0; k=0; m=0; while(m<n-1) {

k++;

if(k= =3) {

*(p+i)=0; k=0;

}

彭青玉

i++;

if(i= =n) }

while(*p= =0)

printf ("The last one is No:%d\n",*p); }

本文来源:https://www.bwwdw.com/article/135q.html

Top