C语言题库.docx
《C语言题库.docx》由会员分享,可在线阅读,更多相关《C语言题库.docx(77页珍藏版)》请在冰豆网上搜索。
![C语言题库.docx](https://file1.bdocx.com/fileroot1/2022-11/16/a9b9447d-543b-42d1-9573-7070bf4518da/a9b9447d-543b-42d1-9573-7070bf4518da1.gif)
C语言题库
(一)程序改错
================================================
题号:
866
/*-----------------------------------------------
【程序改错】
-------------------------------------------------
功能:
用下面的和式求圆周率的近似值。
直到最后一项的绝对值
小于等于0.0001。
π111
-=1--+---+...
4357
-----------------------------------------------*/
#include
/**********ERROR**********/
#include
fun()
{
inti=1;
/**********ERROR**********/
ints=0,t=1,p=1;
/**********ERROR**********/
while(fabs(t)<=1e-4)
{
s=s+t;
p=-p;
i=i+2;
t=p/i;
}
/**********ERROR**********/
printf("pi=%d\n",s*4);
}
main()
{
fun();
}
答案:
位置1:
#include"math.h"【或】#include
位置2:
floats=0,t=1,p=1;【或】floats=0,p=1,t=1;【或】floatp=1,s=0,t=1;【或】floatp=1,t=1,s=0;【或】floatt=1,p=1,s=0;【或】floatt=1,s=0,p=1;
位置3:
while(fabs(t)>1e-4)【或】while(0.00010.0001)
位置4:
printf("pi=%f\n",s*4);【或】printf("pi=%f\n",4*s);
题号:
13282
/*-----------------------------------------------
【程序改错】
-------------------------------------------------
题目:
以下函数功能,完成字符串的复制。
-------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
-----------------------------------------------*/
#include"stdio.h"
#include"string.h"
voidf(char*p)
{
charstr[10],*p1;
strcpy(str,"string");
/**********ERROR**********/
p1=*str;
for(;*p++=*p1++;);
}
main()
{
/**********ERROR**********/
chara[20],p=a;
f(p);
puts(p);
}
答案:
位置1:
p1=str;
位置2:
chara[20],*p=a;
题号:
8026
/*-----------------------------------------------
【程序改错】
-------------------------------------------------
功能:
将整型数组中所有小于0的元素放到所有大于0的元素的前
面(要求只能扫描数组一次)。
-----------------------------------------------*/
#include"stdio.h"
#defineMax100
voidfun(inta[],intn)
{
/**********ERROR**********/
inti=5;j=n-1,temp;
while(i{
while(a[i]<0)
i++;
while(a[j]>=0)
/**********ERROR**********/
j++;
/**********ERROR**********/
if(i>j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
voidmain()
{
statica[]={1,-3,-1,3,2,4,-4,5,-5,-2},n=10,i;
fun(a,n);
for(i=0;i<10;i++)
printf("%d",a[i]);
}
答案:
位置1:
inti=0,j=n-1,temp;【或】inti=0;intj=n-1,temp;
位置2:
j--;
位置3:
if(i题号:
4067
/*-----------------------------------------------
【程序改错】
-------------------------------------------------
功能:
求1到20的阶乘的和。
-----------------------------------------------*/
#include"stdio.h"
voidfun()
{
intn,j;
floats=0.0,t=1.0;
for(n=1;n<=20;n++)
{
/**********ERROR**********/
s=1;
for(j=1;j<=n;j++)
/**********ERROR**********/
t=t*n;
/**********ERROR**********/
s+t=s;
}
/**********ERROR**********/
printf("jiecheng=%d\n",s);
}
main()
{
fun();
}
答案:
位置1:
t=1;【或】t=1.0;?
位置2:
t=t*j;【或】t*=j;【或】t=j*t;
位置3:
s=s+t;【或】s+=t;【或】s=t+s;
位置4:
printf("jiecheng=%f\n",s);
题号:
185
/*-----------------------------------------------
【程序改错】
-------------------------------------------------
功能:
编写一个程序计算某年某月有几天。
(注意要区分闰年)
---------------------------------------------*/
#include"stdio.h"
main()
{
intyy,mm,len;
printf("year,month=");
scanf("%d%d",&yy,&mm);
/**********ERROR**********/
switch(yy)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
len=31;
/**********ERROR**********/
break
case4:
case6:
case9:
case11:
len=30;
break;
case2:
if(yy%4==0&&yy%100!
=0||yy%400==0)
len=29;
else
len=28;
break;
/**********ERROR**********/
default
printf("inputerror!
\n");
break;
}
printf("Thelengthof%d%did%d\n",yy,mm,len);
}
答案:
位置1:
switch(mm)
位置2:
break;
位置3:
default:
题号:
13112
/*-----------------------------------------------
【程序改错】
-------------------------------------------------
功能:
求出N×M整型数组的最小元素及其所在的行坐标及列坐标
(如果最小元素不唯一,选择位置在最前面的一个)。
例如:
输入的数组为:
923
4156
1219
10112
求出的最小数为1,行坐标为2,列坐标为1。
----------------------------------------------*/
#defineN4
#defineM3
#include"stdio.h"
intRow,Col;
main()
{
inta[N][M],i,j,min,row,col;
printf("inputaarray:
");
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;i{
for(j=0;jprintf("%d",a[i][j]);
printf("\n");
}
min=fun(a);
printf("max=%d,row=%d,col=%d",min,Row,Col);
}
intfun(intarray[N][M])
{
intmin,i,j;
min=array[0][0];
Row=0;
Col=0;
for(i=0;i{
/**********ERROR**********/
for(j=i;j/**********ERROR**********/
if(min{
min=array[i][j];
Row=i;
/**********ERROR**********/
Col=i;
}
}
return(min);
}
答案:
位置1:
for(j=0;j位置2:
if(min>array[i][j])
位置3:
Col=j;
题号:
13258
/*-----------------------------------------------
【程序改错】
-------------------------------------------------
题目:
-------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
--------------