当前位置:文档之家› C语言程序设计期末考试试题及答案

C语言程序设计期末考试试题及答案

C 语言程序设计 试 题(2008 /2009 学年 第 二 学期)一. 选择题(满分30分,每题2分)1.若a 、b 、c 都定义为int 类型且初值为0,则以下不正确的赋值语句是 D 。

A. a=b=c+8; B. a+=y+3;C. c++;D. a+b+c 2. 已知int j ,i=1;执行语句“j=i++;”后,变量i 的值是 B 。

A. 1B. 2C. –1D. -2 3.执行下面程序:#include "stdio.h" void main() {int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3);printf(“%d,%d,%d ”,a,b,c);}则输出结果是: A 。

A. 2,2,4B. 4,2,3C. 5,5,3D. 4,2,54.若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为 D 。

A. a< >0B. !aC. a=0D. a5. for (j=0;j<11;j++);循环结束后,j 的值是 B 。

A. 12B. 11C. 10D. 9 6. C 语言中函数返回值的类型由 D 决定的。

A. return 语句中的表达式类型B. 调用该函数的主调函数的类型C. 调用函数时临时决定D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。

A 在调用用户自定义函数时,必须对其进行声明。

B 函数可以返回一个值,也可以什么值也不返回。

C 说明函数时,必须明确参数的类型和返回值。

D 在程序设计中空函数没有什么作用。

8. 若int i=10;执行下列程序后,变量i 的正确结果是 D 。

switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; }A. 10B. 11C. 12D. 139. 下列语句中不正确的字符串赋值或初始化的是 C 。

A . char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序:#include <stdio.h> void main() {int a=1,b=0,c=0; if (a<b)if (b<0) c=0; else c++;printf (“%d\n ”,c); }该程序的运行结果是 D 。

A. 3B. 2C. 1D. 0 11. 在函数调用,对参数传递的说法正确的是 A 。

A 实参和形参各占一个独立的存储单元。

B 实参和形参始终共用一个相同的存储单元。

C 可以由用户指定实参和形参是否共用一个存储单元。

D 可以由系统指定实参和形参是否共用一个存储单元 12. 以下正确的程序段是 C 。

A. char str1[ ]= "12345", str2[ ]= "abcdef"; strcpy(str1, str2);B. char str[10], *st="abcde"; strcat(str, st);C. char str[10]= " ", *st="abcde"; strcat(str, st);D. char *st1="12345", *st2="abcde"; strcat(st1, st2);13. 若有定义:int *p[4];则标识符p B 。

A. 是一个指向整型变量的指针B. 是一个指针数组名C. 是一个指针,它指向一个含有四个整型元素的一维数组D. 说明不合法装订线14. 以下程序的运行结果是 C 。

typedef union{long a[1];int b[2];char c[8];} TEST;TEST m;main( ){printf(“%d\n”,sizeof(m));}A. 32B. 16C. 8D. 2415. 设有以下结构体类型:struct st{char name[8];int num;float s[4];}student[50];并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件t中,以下不正确的形式是 C 。

A.fwrite(student,sizeof(struct st),50,fp);B. fwrite(student,50*sizeof(struct st),1,fp);C. fwrite(student,25*sizeof(struct st),25,fp);D. for(i=0;i<50;i++)fwrite(student+i,sizeof(struct st),1,fp);二、填空题(满分20分,每空2分)1.每个C语言编写的程序必须有一个,并且只能有一个主函数。

2.设x和y均为int型变量,且x=1,y=2,则表达式3+x/y的值为 3 。

3.若有定义:int a[ ]={2,4,6,8,10,12},*p=a;则*(p+1)的值是 4 。

4.设x=0xAB,若要通过x|y使x低4位置1,高4位不变,则y= 0x0F 。

5.测试char型变量m的最高位数据是否为1的表达式是 a&0x80 。

6.若x=2,y=-3则x&&y的结果是 1 。

7.与二进制数101等值的十进制数为 5 。

8.定义int i=1;执行语句 while(i++<5);后,i的值为 6 。

9.下面程序的运行结果为 22222 。

#include <stdio.h>void main(){int i=2,j=5,s;s=i;for (;--j;)s=s*10+i;printf (“%d”,s);}10.写出程序的执行结果: i=10,j=11main ( ){ int i=0,j=0;while (i<10)i++;while (j++<10) ;printf(“i=%d, j=%d\n”,i,j);}三、读程序写结果(满分16分,每题4分)1. 判断下面程序的运行结果。

#include<stdio.h>void main(){int a=0,b=1;int fun(int a,int b);printf("%d\n",fun(a,b));printf("%d\n",fun(a,b));}int fun(int m, int n){static s=1;s++;return(s*(m+n));}2程序运行的结果为: 3 。

装订线2. 以下程序的输出结果是 3,2 。

#include "stdio.h" struct chain {int x; int y;struct chain *p; }m[2];void main( ) {m[0].x=1; m[0].y=2; m[1].x=3; m[1].y=4; m[0].p=&m[1]; m[1].p=m;printf("%d,%d\n",(m[0].p)->x,(m[1].p)->y); }3. 下面程序的运行结果是 。

#include <stdio.h> #include <string.h>void fun(char *w, int n) {char t,*s1,*s2; s1=w; s2=w+n-1; while(s1<s2) {t=*s1; *s1=*s2; *s2=t; s1++; s2--; } }void main( ) {char p[]="1234567"; fun(p, strlen(p)); puts(p); }4. 下面程序的输出结果为 4,2 。

#include "stdio.h" struct ks {int a; int *b; }s[4],*p;void main( ) {int n=1,i; printf("\n"); for(i=0;i<4;i++) {s[i].a=n;s[i].b=&s[i].a; n=n+1; }p=&s[0]; p++;printf("%d,%d\n",(++p)->a,(p++)->a); }四、程序设计(满分34分)1. 编写一个程序,判断某一年是否为闰年。

(6分)#include <stdio.h> void main() {int year;printf(“input year=”); scanf(“%d ”,&year);if ((year%4==0&&year%100!0)||year%400==0) printf(“%4d is a leap year \n ”,year);elseprintf(“%4d is not a leap year \n ”,year);}装 订装订线2. 用公式求的近似值,直到最后一项的绝对值小于为止,请编程实现。

(8分)#include “math.h”void main(){int s;float n,t,pi;t=1; pi=0; n=1.0; s=1;while((fabs(t))>1E-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf(“pi=%10.6f\n”,pi);}3. 编写程序,利用子函数实现计算字符串的长度。

(10分)#include <stdio.h>int length(char *s);void main( ){char a[100];int i;printf("Please input the string:\n");gets(a);i=length(a);printf("\nThe length of string is %d",i);}int length(char *s){char *p=s;while(*p)p++;return(p-s);} 4.将一个整数字符串转换为一个整数,如"-1234"转换为-1234。

相关主题