C语言笔试程序改错题.docx

上传人:b****1 文档编号:843270 上传时间:2022-10-13 格式:DOCX 页数:35 大小:27.11KB
下载 相关 举报
C语言笔试程序改错题.docx_第1页
第1页 / 共35页
C语言笔试程序改错题.docx_第2页
第2页 / 共35页
C语言笔试程序改错题.docx_第3页
第3页 / 共35页
C语言笔试程序改错题.docx_第4页
第4页 / 共35页
C语言笔试程序改错题.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

C语言笔试程序改错题.docx

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

C语言笔试程序改错题.docx

C语言笔试程序改错题

 

C语言机试程序改错题

gc22.c程序是输入一个字符串,将此字符串中最长的单词输出,程序在注释行附近有两个错误,请试调试改正,但调试改正中不得增删语句。

intalph(charc)

{

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

return

(1);

else

return(0);/*find1*/

}

intlongest(charstr)//////////////intlongest(char*str)

{

intlen=0,i,length=0,flag=1,point,place;

for(i=0;i<=strlen(str);i++)

if(alph(str[i]))

if(flag)

{

flag=0;

point=i;

}

else

len++;

else/*Find2*/

{

flag=0;/////////////flag=1;

if(len>length)

{length=len;

place=point;

len=0;}

}

return(place);

}

main()

{

inti;

charline[100];

printf("Enterstring\n");

gets(line);

printf("thelongestis:

");

for(i=longest(line);alph(line[i]);i++)

printf("%c",line[i]);

printf("\n");

}

2下列程序是建立一个包含学生有关数据的单向链表。

但该程序有2个错误,错误出现在

每个注释行附近,请调试改正。

调试改正中,不得改变程序结构,也不得增删语句。

#defineNULL0

structstud

{

longnum;

charname[10];

floatscore;

structstud*next;

};

/*……………comment……………*/

intn;

structstudcreate()////////structstud*create(void)

{

structstud*head,*p1,*p2;

n=0;

p1=p2=(structstud*)malloc(sizeof(structstud));

scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);

/*……………comment……………*/

head=NULL;

while(p1!

=0)//////////while(p1->num!

=0)

{

n=n+1;

if(n==1)head=p1;

elsep2->next=p1;

p1=(structstud*)malloc(size(structstud));

scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);

}

p2->next=NULL;

return(head);

}

gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正之,但不得增删语句.

#include

voidmain(void)

{

chars[255];

inti;

scanf("%s",s);

for(i=0;s[i];i++)

if(s[i]>='b'&&s[i]<='z')//////s[i]>='a'&&s[i]<='z'

s[i]=s[i]+'a'+'A';//////s[i]=s[i]-'a'+'A'

printf("%s",s);}

 

gc57.c的功能是互换给定数组中的最大数和最小数。

如将下面8个数:

5,3,1,4,2,8,9,6

变成:

5,3,9,4,2,8,1,6

程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。

程序有二处错误,请改正。

注意:

不得增行和删行,也不得修改程序的结构。

main()

{

inti;

staticinta[8]={5,3,1,4,2,8,9,6};

voidjhmaxmin();

printf("Originalarray:

\n");

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

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

printf("\n");

jhmaxmin(a,8);

printf("Arrayafterswapingmaxandmin:

\n");

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

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

printf("\n");

}

voidjhmaxmin(p,n)

intp,n;////////int*p,n;

{

intt,*max,*min,*end,*q;

end=p+n;

max=min=p;

for(q=p+1;q

{if(*q>*max)max=q;

if(*q

}

t=*max;*max=*min;*min=t;

}

gc101.c的功能为:

输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。

#include

main()

{

inta[8],*p=a;

inti,j;

inttempmin,tempcode;

printf("\ninputthenumbers:

\n");

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

scanf("%d",p+i);

tempmin=*p;

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

{

for(j=i;j<8;j++)

if(j==i||*(p+j)

{tempmin=*(p+i);//////////tempmin=*(p+j);

tempcode=j;

};

if(tempcode!

=i)

{*(p+tempcode)=*(p+i);

*(p+j)=tempcode;/////////////*(p+i)=tempmin;

}

}

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

printf("%d,",*(p+i));

return

(1);

}

 

gc137.c中的sub函数的功能是:

将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。

例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。

请改正函数sub中的两个错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得修改程序的结构。

#include"stdio.h"

#include"conio.h"

#include"string.h"

voidsub(char*s,char*t)

{

inti,d;

d=strlen(s);

for(i=1;i

t[i]=s[d-1-i];

for(i=0;i

t[d+i]=s[i];

t[2*d]='/0';/////////t[2*d]='\0';

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstringS:

");

scanf("%s",s);

sub(s,t);

printf("\nTheresultis:

%s\n",t);

}

 

gc155.c的功能是从键盘输入一行字符,分别统计其中的字母、数字、空格和其它字符的个数。

但该程序中有2处错误,请调试并改正。

不允许改变程序结构和增删语句。

#include

main()

{intc;

intletter=0,digit=0,space=0,other=0;

printf("Pleaseinputastring:

\n");

while(c=getchar()!

='\n')//////while((c=getchar())!

='\n')

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letter++;

elseif(c>='0'&&c<='9')

digit++;

elseif(c='')//////////elseif(c=='')

space++;

else

other++;

printf("letter=%d,",letter);

printf("digit=%d,",digit);

printf("space=%d,",space);

printf("other=%d\n",other);

}

gc163.c的功能是实现求1000以内的自然数中的完数及其个数(所谓完数,指它恰好等于除它本身之外的因子之和,如:

6=1+2+3,28=1+2+4+7+14),并显示结果。

但该程序中有2处错误,请调试并改正。

不允许改变程序结构和增删语句。

#include

voidmain(void)

{

inti,k,m,n,s,p;//////////////////p=0

inta[100];

printf("\n10000以内的自然数中的完数有:

");

for(i=2;i<=10000;i++)

{s=0;

m=0;

for(k=1;k<=i/2;k++)

{if(i%k==0)

{s=s+k;

a[m]=k;

m=m+1;

}

}

if(s=i)////////if(s==i)

{p=p+1;

printf("\n%d=%d",s,a[0]);

n=1;

while(n

{printf("+%d",a[n]);n=n+1;}

}

}

printf("\n总个数为:

%d\n",p);

}

gc165.c程序中的函数find_str()用来返回字符串s2在字符串s1中第一次出现的首地址;如果字符串s2不是s1的子串,则该函数返回空指针NULL。

现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。

include

#include

char*find_str(char*s1,char*s2)

{

inti,j,ls2;

ls2=strlen(s2);

for(i=0;i<=strlen(s1)-ls2;i++)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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