级信息学院《C语言程序设计》考试试题.docx
《级信息学院《C语言程序设计》考试试题.docx》由会员分享,可在线阅读,更多相关《级信息学院《C语言程序设计》考试试题.docx(9页珍藏版)》请在冰豆网上搜索。
级信息学院《C语言程序设计》考试试题
2003级信息学院《C语言程序设计》考试试题
系班级
姓名学号成绩一.判断下列语句或程序的对错。
(“×”表示错,“√”表示对)(10分)
1intx=y=z=20;()
2#defineM50;()
3printf(“%d\t”,(40,50,60));()
4floata[100],*p;
p=a++;()
5charstr[20];
str[20]=0;()
6intdata[4]={0,1,2,3,4};()
7intx=’\014’;()
8intxyz.1=2;()
9char*p=”c:
\test\prg.c”;()
10int*p;
*p=20;()
二.计算下列表达式的值(10分)
设unsignedinta=15,b=21,c=5;
floatf;
(1)f=b/c()
(2)!
(a+b)+c-1&&b+c/2()
(3)a^b+b&0x55+c<<3|015()
(4)d*=c--%b++()
(5)a%=(c%=2)()
三.程序改错(10分)
1从键盘上输入三个字符串,然后按字典(从小到大)顺序进行输出
#include
#include
voidswap(char*,char*)
main()
{
chara[80],b[80],c[80];
scanf(“%s%s%s”,&a,&b,&c);
if(a>b)swap(a,b);
if(b>c)swap(b,c);
printf(“%s\n%s\n%s\n”,a,b,c);
}
voidswap(char*pstr1,char*pstr2)
{
char*p;
p=pstr1;
pstr1=pstr2;
pstr2=p;
}
(2)求某班30个学生数学成绩的最高分和平均分.
#include
main()
{
floata[30],aver;
intm;
for(m=0;m<30;m++)
scanf(“%f”,&a[m]);
max=process(a,30,&aver);
printf(“max=%f,ave=%f\n),max,aver);
}
process(float*p1,intn,int*p2)
{
charx;
inttemp;
for(x=0;x<=n;x++)
{
if(p1[x]>temp)
temp=p1[x];
*p2+=p1[x];
}
p2=p2/n;
returntemp;
}
四.程序填空
(1)有一分数系列:
2/1,3/2/5/3,8/5,13/8,21/13……求出这数列的前50项和
#include
main()
{
intm;
float___________;
for(m=1;__________;m++)
{
s=s+a/b;
t=a;
a=______;
b=____________;
}
printf(“sum=%f\n:
s);
}
(2)按如图所示格式打印杨辉三角形的前10行
1
11
121
1331
14641
………
main()
{
intm,n,a[10][10];
for(m=0;m<10;m++)
{
a[m][0]=1;
___________________;
}
for(_____;m<10;m++)
for(_______;____________;n++)
a[m][n]=__________________;
for(m=0;m<10;m++)
{
for(n=0;_______________;n++)
printf(“%6d”,a[m][n]);
_________________________;
}
}
五.写输出结果
(1)
#include
voidmain()
{
intm,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);
}
(2)
#include
voidauto_static();
intg_val;
main()
{
intm;
for(m=0;m<5;m++)
auto_static();
}
voidauto_static()
{
intau=0;
staticintst=0;
printf(“au=%d,st=%d,g_val=%d\n”,au++,++st,g_val++);
}
(3)
#include
main()
{
intI,j,a[][3]={2,4,6,,2,3};
int*p[2]={a[0],a[1]};
for(i=0;i<2;i++)
for(j=0;j<3;j++)
printf(“%3d\t”,*(p[i]+j));
printf(“\n”);
}
(4)
#include
#include
structperson
{
charname[20];
intcount;
};
voidmain()
{
structpersonleader[3]={{“li”,0},{“zhang”,0},{“wang”,0}};
charname[20],m,n;
for(m=1;m<8;m++)
{
scanf(“%s”,name);
for(n=0;n<3;n++)
if(!
strcmp(name,leader[j].name))
{
leader[j].count++;
break;
}
}
printf(“\n”);
for(m=0;m<3;m++)
{
printf(“%s:
%d\n”,leader[m].name,leader[m].count);
}
}
当程序运行时,键入情况如下:
li
wang
lei
li
wang
zhang
写出程序的输出结果。
(5)
#include
#defineNULL0
voidmain()
{
char**pp;
char*name[]={“fortran”,”basic”,”pascal”,””};
intm;
pp=name;
for(m=0;**pp!
=NULL;m++,pp++)
printf(“%s\n”,*pp+m);
}
六.编写程序(35分)
(1)一个程序实现这样的功能:
商店卖西瓜,10斤以上(包括10斤,以下同)的每斤0.8元,8斤以上10斤以下的每斤6元,8斤以下的每斤0.4元。
输入西瓜的重量和顾客所付的金额,输出应付货款和应找钱数。
(9分)
(2)编写一个函数,求两个在整数的最大公约数;主函数完成两个整数的输入,调用所编函数和输出所求的最大公约数。
(9分)
(3)编写一个函数,删除给定字符串中的指定字符,如给定字符串“abcdfrc”,删除指定的字符‘c’后,字符串变成“abdfr”;主函数完成给定字符串和指定字符的输入,调用所编函数,输出处理后的字符串。
注意:
不得使用全局变量,注意程序结构。
(9分)
(4)编程处理某班30个学生4门课的成绩,它们是数学,物理,英语和计算机,按学号依次输入学生的学号,姓名,性别(用1表示男生,0表示女生)和4门课成绩。
要求以清晰的格式从高分到低分的顺序打印平均分高于全班总平均分的男生的成绩单。
(8分)
要求:
输入.输出,计算和排序分别用程序实现,主函数只是调用这些函数。
不得使用全局变量,注意程序结构。