C语言考试题及答案Word格式文档下载.docx
- 文档编号:7663986
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:18
- 大小:18.90KB
C语言考试题及答案Word格式文档下载.docx
《C语言考试题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言考试题及答案Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。
structrect*rp=&
rt;
则下面哪一种引用是不正确的__D______。
A)rt.pt1.xB)(*rp).pt1.x
C)rp->
pt1.xD)rt->
pt1.x
5.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:
C。
A)*(a+j*n+i)B)*(a+i*n+j)
C)*(*(a+i)+j)D)*(*a+i)+j
CDDDC
二、分析程序并写出运行结果。
(25分,每题5分)
1.
#include<
stdio.h>
main()
intn;
staticchar*monthName[]=
{"
Illegalmonth"
"
January"
February"
"
March"
April"
May"
June"
July"
August"
September"
October"
November"
December"
for(n=1;
n<
=12;
n++)
{
printf("
%s\n"
monthName[n]);
}
运行结果是:
January
February
March
April
May
June
July
August
September
October
November
December
2.
#include<
#defineARR_SIZE7
voidYH(inta[][ARR_SIZE],intn);
voidPrintYH(inta[][ARR_SIZE],intn);
inta[ARR_SIZE][ARR_SIZE];
YH(a,ARR_SIZE-1);
PrintYH(a,ARR_SIZE-1);
voidYH(inta[][ARR_SIZE],intn)
inti,j;
for(i=1;
i<
=n;
i++)
{
for(j=1;
j<
=i;
j++)
{
if(j==1||i==j)
{
a[i][j]=1;
}
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
voidPrintYH(inta[][ARR_SIZE],intn)
inti,j;
printf("
%4d"
a[i][j]);
printf("
\n"
);
1
11
121
1331
14641
15101051
3.
inti,n;
=5;
Pleaseentern:
"
scanf("
%d"
&
n);
if(n<
=0)continue;
n=%d\n"
n);
Programisover!
程序运行时输入:
1-23-45↙
n=1
Pleaseentern:
n=3
n=5
4.
voidFunc(intn);
inti;
for(i=0;
i<
2;
Func(i);
voidFunc(intn)
staticintt=1;
t=%d\n"
t++);
}
t=1
t=2
5.
intFunc(inti);
for(i=3;
5;
%d"
Func(i));
intFunc(inti)
staticintk=10;
for(;
i>
0;
i--)
k++;
return(k);
1317
三、阅读并完成程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(20分,每空2分)
1.下面程序用于读入10个字符串,然后找出最大的字符串并打印。
string.h>
{
charstr[10][80],maxstring[80];
Entertenstrings:
for(i=0;
10;
i++)
%s"
str[i]);
strcpy(maxstring,str[0]);
if(strcmp(maxstring,str[i])<
0)或strcmp(str[i],maxstring)>
strcpy(maxstring,str[i]);
}
Themaxstringis:
maxstring);
2.下面这个程序用于交换两个数组的对应元素的值。
#defineARRAY_SIZE10
voidSwap(int*x,int*y);
voidExchange(inta[],intb[],intn);
voidInputArray(inta[],intn);
voidPrintArray(inta[],intn);
inta[ARRAY_SIZE],b[ARRAY_SIZE],n;
Inputarraylenthn<
=10:
scanf("
Inputarraya:
InputArray(a,n);
Inputarrayb:
InputArray(b,n);
Exchange(a,b,n);
Afterswap:
Arraya:
PrintArray(a,n);
Arrayb:
PrintArray(b,n);
voidSwap(int*x,int*y)
inttemp;
temp=*x;
*x=*y;
*y=temp;
voidExchange(inta[],intb[],intn)
n;
Swap(&
a[i],&
b[i]);
}
voidInputArray(inta[],intn)
scanf("
%d"
a[i]);
voidPrintArray(inta[],intn)
i<
i++)
a[i]);
3.从键盘任意输入一个年号,判断它是否是闰年。
若是闰年,输出"
Yes"
,否则输出"
No"
。
已知符合下列条件之一者是闰年:
能被4整除,但不能被100整除。
能被400整除。
main()
intyear,flag;
Enteryear:
&
year);
if(year%4==0&
&
year%100!
=0||year%400==0)
flag=1;
else
flag=0;
if(flag)
Yes!
No!
四、在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
(在错误的代码下边画一根横线,把正确的代码写在旁边;
漏掉的代码正确插入合适的位置。
30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。
)
1.编程计算矩阵相乘之积。
#defineROW2
#defineCOL3
//voidMultiplyMatrix(inta[ROW][COL],intb[COL][ROW],intc[ROW][ROW]);
inta[ROW][COL],b[COL][ROW],c[ROW][ROW],i,j;
ROW;
for(j=0;
COL;
d"
a[i][j]);
//%d
j++)
b[i][j]);
MultiplyMatrix(a,b,c);
Results:
%6d"
c[i][j]);
//c[i][j]
voidMultiplyMatrix(inta[ROW][COL],intb[COL][ROW],intc[ROW][ROW])
inti,j,k;
{
for(k=0;
k<
k++)
{//c[i][j]=0;
c[i][j]=c[i][j]+a[i][k]*b[j][k];
//b[k][j]
2.编程输入10个数,找出其中的最大值及其所在的数组下标位置。
intFindMax(intnum[],intn,int*pMaxPos);
intnum[10],maxValue,maxPos,minValue,minPos,i//;
Input10numbers:
\n"
num[i]);
//&
num[i]
maxValue=FindMax(num,10,*maxPos);
//&
maxPos
Max=%d,Position=%d\n"
maxValue,maxPos);
intFindMax(intnum[],intn,int*pMaxPos)
inti,max;
max=num[0];
for(i=1,i<
n,i++)//i=1;
if(num[i]>
max)
max=num[i];
*pMaxPos=i;
}
returnmax;
3.韩信点兵。
韩信有一队兵,他想知道有多少人,便让士兵排队报数:
按从1至5报数,最末一个士兵报的数为1;
按从1至6报数,最末一个士兵报的数为5;
按从1至7报数,最末一个士兵报的数为4;
最后再按从1至11报数,最末一个士兵报的数为10。
你知道韩信至少有多少兵吗?
intx;
//x=0
while
(1)
if(x%5=1&
x%6=5&
x%7=4&
x%11=10)
//x%5==1&
x%6==5&
x%7==4&
x%11==10
break;
x++//x++;
x=%d\n"
4.下面函数Squeez()的功能是删除字符串s中所出现的与变量c相同的字符。
voidSqueeze(chars[],charc);
//voidSqueeze(chars[],charc)
inti,j;
//j=0;
s[i]!
='
\0'
;
if(s[i]!
='
c'
)//c
s[j]=s[i];
j++;
}
s[i]='
//s[j]='
}或//s[j]='
五、编程(15分)
从键盘任意输入某班10个学生的成绩,调用save函数把数据存入到以你的学号命名的磁盘文件中,然后打开该文件读出数据,对成绩进行由高到低的排序,并打印成绩不及格的学生人数。
最后再次调用save函数把数据存入到原磁盘文件中。
要求按照如下给出的函数原型进行编程:
voidsave(floatscore[],intn);
voidSort(floatscore[],intn);
intFail(floatscore[],intn);
要求用一维数组做函数参数编程实现成绩排序和统计成绩不及格的学生人数,然后在主函数中打印这些结果,不能使用全局变量编程。
参考程序如下:
voidload(floatscore[],intn)//3分
{FILE*fp;
if((fp=fopen(02406101"
"
rb"
))==NULL)
{printf("
cannotopeninfile\n"
return;
for(i=0;
i<
n;
if(fread(&
score[i],sizeof(float),1,fp)!
=1)
{if(feof(fp)){fclose(fp);
filereaderror\n"
fclose(fp);
voidsave(floatscore[],intn)//3分
if((fp=fopen("
02406101"
wb"
cannotopenfile\n"
if(fwrite(&
filewriteerror\n"
fclose(fp);
voidsort(floatscore[],intn)//3分
{inti,j,k;
floatt;
n-1;
{k=i;
for(j=i+1;
j<
j++)
if(score[j]<
score[k])
k=j;
t=score[k];
score[k]=score[i];
score[i]=t;
intFail(floatscore[],intn)//3分
{inti,k=0;
if(score[i]<
60)k++;
returnk;
voidmain()//3分
{inti;
floatscore[10];
%f"
score[i]);
save(score,10);
load(score,10);
sort(score,10);
TheFailnumberis%d"
Fail(score,10));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 考试题 答案