大一c语言期末试题及参考答案

  • 格式:doc
  • 大小:45.51 KB
  • 文档页数:12

下载文档原格式

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

2004级信息学院《C语言设计》考试试题

一、判断下列语句或程序的对错。 10分√

1 int x=y=z=’0’; (×) y,z没有定义

2 #include ; (×)不能有分号,#开头的结尾均不能有分号;

3 printf(“%s\n”,”c language”); (√)

4 float a[100];

int *p=a; (×)数据类型不匹配

5 char str[20];

6 int data[4]={0,1,2,3,4}; (×)五个元素,但是只有四个单元

7 float x=1.45e+310L; (×)数值越界

8 int xyz-1=2; (×)

9 int x=‘\xae’ ; (√)

10 int *p,a[2][3] ;

p=a ; (×)数据类型不匹配

二计算下列表达式的值 10分

设 unsigned int a=10,b=17,c=5,d=3;

float f ;

(1)f=b/c ( 3.0 )

(2)!(a+b)+c-1&&b+c/2 ( 1 )

(3)(a^b)+(c>>1+d) ( 0x1b )

(4)a+=b%=a=b ( 17 )

(5)a=2,b=a*++b ( 2 )

三程序改错 10分

(1)求两个浮点数的平方和及平方差

#include

float calculate (float x,float y,float *sub);添加函数原型声明

main ()

{

float a,b;

float add_reasult, sub_result;

scanf (“%f,%f”,a,b);

add_result=calculate(a,b,&sub_result);

printf( “a*a+b*b=%d,a*a-b*b=%d\n”,add_result,sub_result);

}

float calculate (float x,float y,float *sub) 添加函数类型

{

float *temp; 应该直接定义为变量float temp;

sub=a*a-b*b ; *sub=a*a-b*b;

temp = a*a+b*b;

return *temp; return temp

}

(2)统计N 个字符中大写字母和数字字符的个数

#include

#define N 5

Count(char *str,int *result); 添加函数声明

main ()

{

char string[N][80];

char i;

int Capital_Count=0,Num_Count=0;需要初始化为0

for(i=0;i

scanf( “%s”,&string[i]) ; 去掉&符

for(I=0;I

Capital_Count+=Count(string[I],&Num_Count);

Printf(“Capital count :=%d,numbercount=%d\n”

,Capital_Count,Num_Count) ;

}

Count(char *str, int *result)

{

int temp,I ; int temp=0,i; temp应该初始化为0 for(I=0;I<80;I++)

{

If(str[I]>=’A’&& str[I]<=’Z’)

Temp++;

If(str[I]>’0’||str[I]<’9’)

*result++;

}

return temp;

}

四程序填空 10分

(答案参考书中p85~86)

(1)利用公式 sin x=x-x 3

/3!+x

x=0.5,n=20 #include main()

{

float y,s,x,d,t;

int n,I,j;

scanf(“%d%f”,&n,&x);

s=1.0;

____________________________;

for(I=2;I

{

d=t=__________________________;

for(j=1;_______________;j++)

{

d=________________;

t=________________;

}

s=(-1)*s;

y+=_____________________;

}

(2)利用库函数char *strstr(char *sl,char *s2)在给定字符串中查找子串最后(最右)一次出现的位置。如果S2并没有出现在S1的任何地方,函数返回一个NULL

指针。如果第二个参数是一个空字符串,函数就返回S1;

注:库函数char strstr(char*s1,char*s2),这个函数在S1中查找子字符串S2第一次出现的起始位置,并返回一个指向该位置的指针。如果S2并没有出现在S1的任何地方,函数返回一个NULL指针。如果第二个参数是一个空字符串,函数返回S1;

(答案见书中p196~197)

#include

#include

void main(void)

{

char str[80]=”ABCdabcdfgabc”;

char *p;

p=my_strrstr(str,”abc”);

printf(“%s \n”,p);

p=my_strrstr(str,”“);

printf(“%s\n”,p);

}

char *my_strrstr(char *s1,char*s2)

{

char *last;

char *current;

_________________________;