福建C语言往届试题之改错题.docx

上传人:b****6 文档编号:8458989 上传时间:2023-01-31 格式:DOCX 页数:29 大小:32.67KB
下载 相关 举报
福建C语言往届试题之改错题.docx_第1页
第1页 / 共29页
福建C语言往届试题之改错题.docx_第2页
第2页 / 共29页
福建C语言往届试题之改错题.docx_第3页
第3页 / 共29页
福建C语言往届试题之改错题.docx_第4页
第4页 / 共29页
福建C语言往届试题之改错题.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

福建C语言往届试题之改错题.docx

《福建C语言往届试题之改错题.docx》由会员分享,可在线阅读,更多相关《福建C语言往届试题之改错题.docx(29页珍藏版)》请在冰豆网上搜索。

福建C语言往届试题之改错题.docx

福建C语言往届试题之改错题

改错题

1)修改程序cmody591.c,按每行10个数的形式输出[10,99]区间内满足“个位数与十位数之积大于它们之和”的所有整数。

例如:

整数38,个位数与十位数之积24(3×8)大于它们之和11(3+8)

#include

#include

voidmain()

{inti,j,k,s,n=0;

for(i=10;i<100;i++)

{/**/k=0;/**/

s=0;

j=i;

while(j)

{k*=j%10;

s+=j%10;

/**/j=j%10/**/;

}

if(/**/k

{if(n%10==0)printf("\n");

n++;

printf("%-5d",i);

}

}

printf("\n");

getch();

}

 

cmody591.c

/**/k=1;/**/

/**/j=j/10/**/

/**/k>s/**/

2)修改程序cmody592.c,使函数pnt(inta[M][M],intn),根据参数n(1

例如,

当n=6时,输出:

111315171921

222324252627

333537394143

444546474849

555759616365

666768697071

当n=3时,输出:

111315

222324

333537

#include

#include

#defineM9

voidpnt(inta[M][M],intn)

{int/**/i,j/**/;

for(i=0;i

{s=(i+1)*11;

for(j=0;j

{if(i%2==0)

a[i][j]=s+2*j;

else

a[i][j]=/**/s+j+1/**/;

}

}

printf("arraya(n=%d)is:

\n",n);

for(i=0;i

{for(j=0;j

printf("\n");

}

}

voidmain()

{inta[M][M];

intn;

do

{printf("Pleaseinputn(1

");

scanf("%d",&n);

}while(n<=1||n>=10);

pnt(/**/a[]/**/,n);

getch();

}

cmody592.c

/**/i,j,s/**/

/**/s+j/**/

/**/a/**/

3)修改程序cmody601.c,使字符串中所有大写的英文字母转换为小写英文字母(其它字符不变)。

例如:

原字符串:

g@O355o6DLuCk!

被转换成:

g@o35506dluck!

#include

#include

#include

voidmain()

{

charsrc[80],tag[80];

inti;

/**/i='0';/**/

printf("Pleaseinputsourcestring:

");

gets(src);

strcpy(tag,src);

while(/**/tag[i]=='\0'/**/)

{

if(tag[i]>='A'&&tag[i]<='Z')

/**/tag[i]-=32;/**/

i++;

}

printf("\nThesourcestring:

%s\n",src);

printf("Thetargetstring:

%s\n",tag);

getch();

}

cmody601.c

/**/i=0;/**/

/**/tag[i]!

='\0'/**/

/**/tag[i]+=32;/**/

(4)修改程序cmody602.c,使函数p_swap()利用指针变量实现函数main()中两个变量值的交换。

例如:

输入:

23,78

显示:

Originala=23,b=78

Nowa=78,b=23

#include

#include

voidp_swap(int*x,int*y)

{

int/**/t/**/;

temp=*y;

*y=/**/x/**/;

*x=temp;

}

voidmain()

{

inta,b;

printf("Inputa,b:

");

scanf("%d,%d",&a,&b);

printf("Originala=%d,b=%d\n",a,b);

p_swap(&a,/**/b/**/);

printf("Nowa=%d,b=%d\n",a,b);

getch();

}

cmody602.c

/**/temp/**/

/**/*x/**/

/**/&b/**/

(5)修改程序cmody611.c,已知圆柱体底面圆的半径r,从键盘输入圆柱体的高h,若h>=0,则根据以下公式求圆柱体的体积,否则提示出错信息。

result=

其中,

#include

#include

#define/**/PI=3.14/**/

voidmain()

{

floatr=5.0,h,result;

printf("Pleaseinputh:

");

scanf("%f",/**/h/**/);

if(/**/h<0/**/)

{

result=PI*r*r*h;

printf("Theresultis:

%.2f\n",result);

}

else

printf("Error!

\n");

getch();

}

cmody611.c

/**/PI3.14/**/

/**/&h/**/

/**/h>=0/**/

6)改错题cmody612.c,使函数arrayclass(inta[])完成如下功能:

(1)遍历数组a,找出其中做大值max和最小值min;

(2)再次遍历数组a进行元素归类,若元素与max差值的绝对值小于其与min差值的绝对值,则将该元素存入数组max_class中,否则存入数组min_class中;

(3)变量n_max和n_min分别表示存入数组max_class和min_class的元素个数。

#include

#include

#include

#defineN15

voidarrayclass(inta[])

{

intmax_class[N],min_class[N];

inti,max,min,n_max,n_min;

/**/n_max=0/**/;

max=min=a[0];

for(i=1;i

{if(max

if(min>a[i])min=a[i];

}

for(i=0;i

{

if(fabs(a[i]-max)

{max_class[n_max]=a[i];

n_max++;

}

else

{min_class[n_min]=a[i];

/**/n_min--/**/;

}

}

printf("\nmaxis:

%d\n",max);

printf("Arrayofmax_classis:

\n");

for(i=0;i

printf("%5d",max_class[i]);

printf("\nminis:

%d\n",min);

printf("Arrayofmin_classis:

\n");

for(i=0;/**/i<=n_min/**/;i++)

printf("%5d",min_class[i]);

}

voidmain()

{

inta[N]={13,24,0,-12,18,29,-8,32,7,

20,3,10,16,-3,26};

arrayclass(a);

getch();

}

cmody612.c

/**/n_max=n_min=0/**/

/**/n_min++/**/

/**/i

7)修改程序cmody621.c,实现求满足

的最小正整数n。

#include

voidmain()

{

inti=1,sum=0;

while(/**/sum>3000/**/)

{

/**/sum=i;/**/

i++;

}

printf("1+2+3+4+...+%d=%d\n",/**/i/**/,sum);

getch();

}

cmody621.c

/**/sum<=3000/**/

/**/sum+=i;/**/

/**/i-1/**/

8)修改程序cmody622.c,使函数fun(char*p,char*q)完成如下功能:

将p所指字符串中的字符逐个复制到q所指字符串中,在每4个字符之后插入1个空格(注:

若遇空格字符则重新累计字符个数)。

例如,

输入:

ABCDEFGHIJKLMNOPQRS

输出:

ABCDEFGHIJKLMNOPQRS

#include

#include

voidfun(char*p,char*q)

{intn,i;

/**/i=1;/**/

while(*p)

{n=1;

while(n<=4&&*p)

{q[i++]=*p;

if(*p=='')/**/n=1;/**/

p++;

n++;

}

if(*p)

{if(*p!

='')q[i++]='';

else

{q[i++]=*p;

p++;

}

}

}

/**/q[i]='0'/**/;

}

voidmain()

{

charstr_a[80],str_b[80];

printf("Enterastring:

");

gets(str_a);

printf("Theoriginalstringis:

\n");

puts(str_a);

fun(str_a,str_b);

printf("Thestringafterinsertspaceis:

\n");

puts(str_b);

getch();

}

cmody622.c

/**/i=0;/**/

/**/n=0;/**/

/**/q[i]='\0'/**/

9)改错题cmody631.c,实现任意输入一个年份和月份,输出该月有多少天。

提示:

(1)二维数组day的第1行存放非闰年每个月的天数,第二行存放闰年每个月的天数;

(2)判断输入年份是否为闰年,若是则从day的第2行获取对应的月份天数,否则从day的第一行获取对应的月份天数。

#include

#include

voidmain()

{

int/**/day/**/={{31,28,31,30,31,

30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,

31}};

intyear,month,/**/flag=1/**/;

printf("Pleaseinputyear:

");

scanf("%d",&year);

printf("Pleaseinputmonth:

");

scanf("%d",&month);

if(year%400==0||year%4==0&&year%100!

=0)

flag=1;

printf("Daysofthemonthis%d.",/**/day[flag][month]/**/);

printf("\n");

getch();

}

cmody631.c

/**/day[2][12]/**/

/**/flag=0/**/

/**/day[flag][month-1]/**/

(10)修改程序cmody632.c,使函数pattern(intn)根据参数n(1

例如,

当n=5时:

*

*#*

*#*#*

*#*#*#*

*#*#*#*#*

当n=4时:

*

*#*

*#*#*

*#*#*#*

#include

#include

voidpattern(/**/int/**/)

{inti,j,space;

for(i=1;/**/i

{for(space=1;space<=20-i;space++)

printf("");

for(j=1;j<=2*i-1;j++)

{if(/**/j%2==0/**/)

printf("*");

else

printf("#");

}

printf("\n");

}

}

voidmain()

{intn;

do

{printf("Pleaseinputn(1

");

scanf("%d",&n);

}while(n<=1||n>=10);

pattern(n);

getch();

}

cmody632.c

/**/intn/**/

/**/i<=n/**/

/**/j%2!

=0/**/

11)修改程序cmody491.c,计算满足以下条件的整数n的最大值。

#include

#include

voidmain()

{

intn=1,sum=0;

/**/if(sum<1000)/**/

{

sum+=n*(n+1);

n++;

}

printf("n=%d\n",/**/n/**/);

getch();

}

cmody491.c

/**/while(sum<1000)/**/

/**/n-1/**/

12)修改程序cmody492.c,实现从键盘输入一串字符和整数n,若n小于字符串长度则从字符串右侧开始截取n个字符,否则显示无法运行。

例如:

输入的字符串为”Professor”,n=3,则截取的子串为”sor”。

#include

#include

#include

voidmain()

{

charstr[100],sub[100];

intn,len,i;

printf("Enterstring:

");

gets(str);

printf("\nEntern:

");

scanf("%d",&n);

len=strlen(str);

if(n>len)

printf("Can'trunwith%d!

\n",n);

else

{/**/i=1;/**/

while(i

{

/**/sub[i]=str[n+i];/**/

i++;

}

/**/sub[i]='\n';/**/

printf("\nsubstringis:

%s\n",sub);

}

getch();

}

cmody492.c

/**/i=0;/**/

/**/sub[i]=str[len-n+i];/**/

/**/sub[i]='\0';/**/

13)修改程序cmody501.c,输出总分最高学生的姓名和总分(8位学生的姓名和两科成绩已存储在结构体数组中)。

#include

#include

structstudent

{charname[10];

floatscore[2];

};

voidmain()

{

/**/studentstu[8]/**/={{"Mary",76,85},

{"John",85,90},{"Tom",81,78},{"Susa",87,67},{"Wilu",79,98},{"Yili",65,63},{"Sonmu",73,82},{"Lichar",70,71}};

inti=0,p;

floattotal,max=0;

while(i<8)

{total=/**/stu[i].score[1]+stu[i].score[2];/**/

if(total>max)

{max=total;

p=i;

}

i++;

}

printf("\nBestis%s,",stu[p].name);

printf("Total=%.1f\n",/**/total/**/);

getch();

}

cmody501.c

/**/structstudentstu[8]/**/

/**/stu[i].score[0]+stu[i].score[1];/**/

/**/max/**/

14)修改程序cmody502.c,使函数find(inta[])计算数组a各元素的平均值,以及每个元素与该平均值的差,并返回差的绝对值的最大值。

#include

#include

#include

#defineN10

doublefind(inta[])

{inti;

doublemax,/**/aver=1/**/;

for(i=0;i

aver+=a[i];

/**/aver=N/**/;

max=fabs(a[0]-aver);

for(i=1;i

if(fabs(a[i]-aver)>max)

max=fabs(a[i]-aver);

return(/**/aver/**/);

}

voidmain()

{intarr[N]={11,23,15,27,9,20,18,16,24,22};

printf("Resultis%lf.\n",find(arr));

getch();

}

cmody502.c

/**/aver=0/**/

/**/aver/=N/**/;

/**/max/**/

15)修改程序cmody511.c,实现从键盘输入10个100以内互不相同的正整数,输出其中第二大的数

#include

#include

voidmain()

{

inti,/**/max1=max2=0/**/;

ints[10];

printf("Pleaseinput10numbers:

\n");

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

{scanf("%d",&s[i]);

if(s[i]>max1)

{/**/max2=s[i];/**/

max1=s[i];

}

elseif(s[i]>max2)

{max2=s[i];

}

}

printf("\n%d\n",/**/s[i]/**/);

getch();

}

cmody511.c

/**/max1=0,max2=0/**/;

/**/max2=max1;/**/

/**/max2/**/

16)修改程序cmody512.c,实现将升序排列数组a与b的元素按升序存入数组c中。

#include

#include

voidmain()

{inta[5]={3,7,8,15,18};

intb[6]={-3,0,5,9,19,36};

intc[11];

/**/inti,j;/**/

i=j=k=0;

while(i<5&&j<6)

{if(a[i]<=b[j])

{c[k]=a[i];

/**/k--;/**/

i++;

}

else

c[k++]=b[j++];

}

while(i<5)

c[k++]=a[i++];

while(j<6)

c[k++]=/**/b[j--]/**/;

printf("\nArraya:

\n");

for(i=0;i<5;i++)

printf("%3d",a[i]);

printf("\nArrayb:

\n");

for(j=0;j<6;j++)

printf("%3d",b[j]);

printf("\nArrayc:

\n");

for(k=0;k<11;k++)

printf("%3d",c[k]);

printf("\n");

getch();

}

cmody512.c

/**/inti,j,k;/**/

/**/k++;/**/

/**/b[j++]/**/;

17)修改程序cmody521.c,实现从键盘输入一个仅包含‘0’、‘1’的字符串,输出其中仅含‘0’的最长子串的长度和这种子串第一次出现的起始位置(第几个字符)。

例如:

输入:

0011101000010100001

输出:

48

#include

#include

#include

voidmain()

{charc;

inti,len,p,maxlen=0;

i=0;

/**/len=10;/**/

printf("\nPleaseinputthestring:

");

while((c=getchar())!

='\n')

{i++;

if/**/(c='1')/**/

len++;

else

{if

展开阅读全文
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1