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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

else
} 装
printf( “ %4d is not a leap year \n
” ,year);

班级 学号 姓名
111
2. 用
1
4
357
公式求
10 6 为 止 , 请 编 程 实 现 。( 8 分 )
的 近 似 值 ,直 到 最 后 一 项 的 绝 对 值 小 于
#include “math.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);
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. 编写程序,利用子函数实现计算字符串的长度。
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"
for( ;*p!= '\0';p++)
{
k=*p-'0';
j=(--len);
while(j-->0)
k=k*10;
num=num+k;
}
return(num);
}

#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=11 main ( )
{ int i=0 , j=0 ;
while (i<10)
int b[2];
char c[8];
} TEST;
TEST m;
main( )
{ printf( “ %d\n” ,sizeof(m));
}

A. 32 B. 16 C. 8 D. 24
15. 设有以下结构体类型: struct st
{
char
name[8];

int
num;
float
s[4];
}student[50];

A 在调用用户自定义函数时,必须对其进行声明。
B 函数可以返回一个值,也可以什么值也不返回。
C 说明函数时,必须明确参数的类型和返回值。
D 在程序设计中空函数没有什么作用。
8. 若 int i=10 ;执行下列程序后,变量 i 的正确结果是 D 。
switch ( i )
{case 0: i+=1 ; case 10: i+=1 ;
#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);
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
班级 学号 姓名
C 语言程序设计
试题
(2008 /2009 学年 第 二 学期)
一 二 三 四 五 六 七 八 九 十 总分
得分
一. 选择题(满分 30 分,每题 2 分)
1. 若 a、 b、 c 都定义为 int 类型且初值为 0,则以下不正确的赋值语句是
D

A. a=b=c+8;
B. a+=y+3;
} 订
3. 下面程序的运行结果是 7654321 。
#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;
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. 3
B. 2
C. 1
D. 0
11. 在函数调用,对参数传递的说法正确的是
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;

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
chnum(char *p);
void
main( )
{
char s[6];
int n;
gets(s);
if(*s=='-')
n=-chnum(s+1);
else
n=chnum(s);
printf("%d\n",n);
}
chnum(char *p)
{
int num=0,k,len,j;
len=strlen(p);
case 11: i+=1 ;
default: i+=1 ;
}
A. 10 B. 11 C. 12 D. 13
9. 下列语句中不正确的字符串赋值或初始化的是
C。
A. char str[10]={"strings"}; C. char str[10]; str= "strings";
B.char str[8]={'s','t','r','i','n D. char str[]= "strings";
5. for (j=0;j<11;j++);
循环结束后, j 的值是 B

A. 12
B. 11
C. 10
D. 9
6. C 语言中函数返回值的类型由 D 决定的。
A. return 语句中的表达式类型 B. 调用该函数的主调函数的类型
C. 调用函数时临时决定
D.
定义函数时所指定的函数类型
7. 下列说法中正确的是 B
线 #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);
13. 若有定义: int *p[4]; 则标识符 p B

A. 是一个指向整型变量的指针
B. 是一个指针数组名
C. 是一个指针,它指向一个含有四个整型元素的一维数组 D. 说明不合法
','g','s','\0'};
班级 学号 姓名
14. 以下程序的运行结果是 C

typedef union
{
long a[1];

C. c++;
D. a+b+c
2. 已知 int j ,i=1 ;执行语句“ j=i++ ;”后,变量 i 的值是 B 。
A. 1 B. 2 C.
–1 D. -2
3. 执行下面程序:
#include "stdio.h"
void main()


int a=1,b=2,c=3

c=(a+=a+2),(a=b,b+3);
}
int length(char *s)
{
char *p=s;
while(*p)
p++;
return(p-s);
}
(10 分 )
4.将一个整数字符串转换为一个整数,如 "-1234" 转换为 -1234 。( 10 分)
#include <stdio.h>
#include <string.h>
int
printf(
“ %d,%d,%d” ,a,b,c);
}
线
则输出结果是: A

A. 2,2,4 B. 4,2,3 C. 5,5,3
D. 4,2,5
4.若要求在 if 后一对圆括号中表示 a 不等于 0 的关系, 则能正确表示这一关系的表达式
为D 。
A. a< >0 B. !a C. a=0 D. a
并且结构体数组 student 中的元素都已有值, 若要将这些元素写到硬盘文件 file.txt
中,以下不正确的形式是
C

线
A.fwrite ( student , sizeof ( struct st ), 50, fp );
B. fwrite ( student , 50*sizeof (struct st ), 1,fp );
A

A 实参和形参各占一个独立的存储单元。
B 实参和形参始终共用一个相同的存储单元。
C 可以由用户指定实参和形参是否共用一个存储单元。 D 可以由系统指定实参和形参是否共用一个存储单元
12. 以下正确的程序段是 C

A. char str1[ ]= "12345", str2[ ]= "abcdef"; strcpy(str1, str2);
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);
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);
printf("\n");
for(i=0;i<4;i++)
{
s[i].a=n;
s[i].b=&s[i].a;
n=n+1;
}
p=&s[0];
wk.baidu.com
p++;
printf("%d,%d\n",(++p)->a,(p++)->a);
}
得分
四、程序设计(满分 34 分)
1. 编写一个程序,判断某一年是否为闰年。 (6 分 )
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 分)
相关文档
最新文档