C语言考试题及答案.docx
《C语言考试题及答案.docx》由会员分享,可在线阅读,更多相关《C语言考试题及答案.docx(14页珍藏版)》请在冰豆网上搜索。
C语言考试题及答案
一、单项选择题:
〔10分,每题2分〕
1.char*p[10];该语句声明了一个:
。
A)指向含有10个元素的一维字符型数组的指针变量p
B)指向长度不超过10的字符串的指针变量p
C)有10个元素的指针数组p,每个元素可以指向一个字符串
D)有10个元素的指针数组p,每个元素存放一个字符串
2.假设int*;且有下面的程序片断,则输出结果为:
。
for(*=3;*<6;*++)
{
printf((*%2)""**%d":
"**%d\n",*);
}
A)**3B)**3C)**3D)**3**4
**4**4**4**5**5
**5**5
3.在while〔!
*〕语句中的!
*与下面条件表达式等价的是:
。
A)*!
=0B)*==1C)*!
=1D)*==0
4.
structpoint
{
int*;
inty;
};
structrect
{
structpointpt1;
structpointpt2;
};
structrectrt;
structrect*rp=&rt;
则下面哪一种引用是不正确的________。
A))(*rp).pt1.*C)rp->pt1.*D)rt->pt1.*
5.假设二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:
。
A)*(a+j*n+i)B)*(a+i*n+j)C)*(*(a+i)+j)D)*(*a+i)+j
CDDDC
二、分析程序并写出运行结果。
(25分,每题5分)
1.*include
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);
main()
{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;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
运行结果是:
1
11
121
1331
14641
15101051
3.
*include
main()
{
inti,n;
for(i=1;i<=5;i++)
{
printf("Pleaseentern:
");
scanf("%d",&n);
if(n<=0)continue;
printf("n=%d\n",n);
}
printf("Programisover!
\n");
}
程序运行时输入:
1-23-45↙
运行结果是:
n=1
Pleaseentern:
Pleaseentern:
n=3
Pleaseentern:
Pleaseentern:
n=5
Programisover!
4.
*include
voidFunc(intn);
main()
{
inti;
for(i=0;i<2;i++)
{
Func(i);
}
}
voidFunc(intn)
{
staticintt=1;
printf("t=%d\n",t++);
}
运行结果是:
t=1
t=2
5.
*include
intFunc(inti);
main()
{
inti;
for(i=3;i<5;i++)
{
printf("%d",Func(i));
}
printf("\n");
}
intFunc(inti)
{
staticintk=10;
for(;i>0;i--)
{
k++;
}
return(k);
}
运行结果是:
1317
三、阅读并完成程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
〔20分,每空2分〕
1.下面程序用于读入10个字符串,然后找出最大的字符串并打印。
*include
*include
main()
{
charstr[10][80],ma*string[80];
inti;
printf("Entertenstrings:
\n");
for(i=0;i<10;i++)
{
scanf("%s",str[i]);
}
strcpy(ma*string,str[0]);
for(i=1;i<10;i++)
{
if(strcmp(ma*string,str[i])<0)或strcmp(str[i],ma*string)>0
{
strcpy(ma*string,str[i]);
}
}
printf("Thema*stringis:
%s\n",ma*string);
}
2.下面这个程序用于交换两个数组的对应元素的值。
*include
*defineARRAY_SIZE10
voidSwap(int**,int*y);
voidE*change(inta[],intb[],intn);
voidInputArray(inta[],intn);
voidPrintArray(inta[],intn);
main()
{
inta[ARRAY_SIZE],b[ARRAY_SIZE],n;
printf("Inputarraylenthn<=10:
");
scanf("%d",&n);
printf("Inputarraya:
\n");
InputArray(a,n);
printf("Inputarrayb:
\n");
InputArray(b,n);
E*change(a,b,n);
printf("Afterswap:
\n");
printf("Arraya:
\n");
PrintArray(a,n);
printf("Arrayb:
\n");
PrintArray(b,n);
}
voidSwap(int**,int*y)
{
inttemp;
temp=**;
**=*y;
*y=temp;
}
voidE*change(inta[],intb[],intn)
{inti;
for(i=0;iSwap(&a[i],&b[i]);
}
voidInputArray(inta[],intn)
{inti;
for(i=0;iscanf("%d",&a[i]);
}
voidPrintArray(inta[],intn)
{inti;
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
3.从键盘任意输入一个年号,判断它是否是闰年。
假设是闰年,输出"Yes",否则输出"No"。
符合以下条件之一者是闰年:
能被4整除,但不能被100整除。
能被400整除。
*include
main()
{intyear,flag;
printf("Enteryear:
");
scanf("%d",&year);
if(year%4==0&&year%100!
=0||year%400==0)
flag=1;
else
flag=0;
if(flag)
printf("Yes!
\n");
else
printf("No!
\n");
}
四、在下面给出的4个程序中,共有15处错误〔包括语法错误和逻辑错误〕,请找出其中的错误,并改正之。
〔在错误的代码下边画一根横线,把正确的代码写在旁边;漏掉的代码正确插入适宜的位置。
30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。
〕
1.编程计算矩阵相乘之积。
*include
*defineROW2
*defineCOL3
//voidMultiplyMatri*(inta[ROW][COL],intb[COL][ROW],intc[ROW][ROW]);
main()
{inta[ROW][COL],b[COL][ROW],c[ROW][ROW],i,j;
printf("Inputarraya:
\n");
for(i=0;ifor(j=0;j
scanf("d",&a[i][j]);//%d
printf("Inputarrayb:
\n");
for(i=0;i
for(j=0;jscanf("d",&b[i][j]);
MultiplyMatri*(a,b,c);
printf("Results:
\n");
for(i=0;ifor(j=0;jprintf("%6d",&c[i][j]);//c[i][j]
printf("\n");
|
|
|
|