华中科技大学2003-2006级信息学院《C语言程序设计》考试试题及答案

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

2003级信息学院《C语言程序设计》考试试题

系班级

姓名学号成绩一. 判断下列语句或程序的对错。(“×”表示错,“√”表示对)(10分)

1int x=y=z=20; ( ×) y,z需要在前定义

2 #define M 50; ( ×) 不能有分号

3 printf(“%\t”,(40,50,60)); ( √)

4float a[100],*p;

p=a++; ( ×) 数组名是地址常量,不能做++操作5char str[20];

str[20]=0; ( ×) str[20]单元不可用

6int data[4]={0,1,2,3,4}; ( ×) 0,1,2,3,4是5个元素,与data[4]不匹配

7int x=‟\014‟; ( √)

8int xyz.1=2; ( ×) xyz.1不是合法的标识符(变量名)9char *p=”c:\test\prg.c”; ( ×) 修改为c:\\test\\prg.c

10int *p;

*p=20; ( ×) 指针不能用常量进行赋值

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

设unsigned int a=15,b=21,c=5,d=1;

float f;

(1) f=b/c ( 4.0 ) b/c是整数除,先得到4,然后赋值给f

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

(3) a^b+b&0x55+c<<3|015 ( 0x000f )

(4) d*=c--%b++ ( 5 )

(5) a%=(c%=2) ( 0 )

三.程序改错(10分)

1从键盘上输入三个字符串,然后按字典(从小到大)顺序进行输出

# include

# include

void swap(char *,char *);//函数声明需要分号结束

main()

{

char a[80],b[80],c[80];

scanf(“%s%s%s”,&a,&b,&c); //去掉&号,数组名即表示地址

if(a>b)swap(a,b); strcmp(a,b)>0 a,b比较需要用字符串比较函数

if(b>c)swap(b,c); strcmp(b,c)>0 b,c比较需要用字符串比较函数

printf(“%s\n%s\n%s\n”,a,b,c);

}

void swap(char *pstr1,char *pstr2)

{

char *p; //char p[80];

p=pstr1; //strcpy(p,pstr1);字符串赋值需要用拷贝函数

pstr1=pstr2; //strcpy(pstr1,pstr2);

pstr2=p; //strcpy(pstr2,p);

}

(2)求某班30个学生数学成绩的最高分和平均分.

# include

flaot process(float *p1,int n,int *p2); 添加函数声明

main()

{

float a[30],aver;

int ;

for(m=0;m<30;m++)

scanf(“%f”,&a[m]);

max=process(a,30,&aver);

pr intf(“max=%f,ave=%f\n),max,aver);

}

float process(float *p1,int n,int *p2)

{

char x;

int temp; //float temp 与函数返回类型匹配

for(x=0;x<=n;x++) //for(x=0;x

{

if (p1[x]>temp)

temp=p1[x];

*p2+=p1[x];

}

p2=p2/n; //*p2=*p2/n;

return temp;

}

四.程序填空

(1)有一分数系列:2/1,3/2,/5/3,8/5,13/8,21/13……求出这数列的前50项和# include

main()

{

int m;

float__ ________; // t,s=0,a=2,b=1

for(m=1;___ _______;m++) //m<=50

{

s=s+a/b;

t=a;

a=_a+b_____;

b=_t_;

}

printf(“sum=%f\n:,s);

(2)按如图所示格式打印杨辉三角形的前10行1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

………

main()

{

int m,n,a[10][10];

for(m=0;m<10;m++)

{

a[m][0]=1;

__________________; a[m][m]=1;

}

for(__m=2___;m<10;m++)

for(___n=1____;__n

a[m][n]=a[m-1][n-1]+a[m-1][n];

for(m=0;m<10;m++)

{

for(n=0;__n<=m_____________;n++)

printf(“%6d”,a[m][n]);

_printf(“%5d”,a[m][n]);

}

}

五.写输出结果

(1)

#include

void main()

{

int m,n,p,s;

s=0;

for(m=1;m<=4;m++)

{

for(n=1;n<=m;n++)

{ p=1;

for(n=1;n<=m;n++)

p=p*n;

}

s=s+p;

}

printf(“s=%d\n”,s);

相关文档
最新文档