
C语言~!求高手帮下忙,明天要考试了,这题不会
3、改错题:有源程序test2-1.c,该程序的功能是:是将一个字符数组中的元素逆序存放并输出。改正其中的错误。源程序test2-1.c代码如下:sort(char*p,...
3、改错题:
有源程序test2-1.c,该程序的功能是:是将一个字符数组中的元素逆序存放并输出 。改正其中的错误。
源程序test2-1.c代码如下:
sort(char *p,int m )
{ int i;
char change , *p1, *p2;
for(i=0;i<=m/2;i++)
{ p1=p+i;
p2=p+(m-1-i);
change=
*p1=*p2;
}
}
#include "stdio.h"
main( )
{
int i,n;
char *p,num[20],temp;
printf("Enter n: ");
scanf("%d",n);
temp=getchar();
printf("Enter num[0] num[1] ... num[%d]:",n-1);
for (i=0;i<n;i++)
scanf("%d",&num[i]);
p=num;
sort();
printf("Result is:\n");
for(i=0;i<n,i++)
printf("%d ",num[i]);
}
二、改错题:
给定程序MODI1.C中函数 fun 的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为:"abcdabfabc",t1所指子串中的内容为:"ab",t2所指子串中的内容为:"99"时, 结果,在w所指的数组中的内容应为:"abcdabf99c"。请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
MODI1.C代码如下:
#include <stdio.h>
#include <string.h>
int fun (char *s, char *t1, char *t2 , char *w)
{
int i; char *p , *r, *a;
strcpy( w, s );
/************found************/
while ( w )
{ p = w; r = t1;
while ( *r )
/************found************/
IF ( *r == *p )
{ r++; p++; }
else break;
if ( *r == '\0' ) a = w;
w++;
}
r = t2;
while ( *r ){ *a = *r; a++; r++; }
}
main()
{
char s[100], t1[100], t2[100], w[100];
printf("\nPlease enter string S:"); scanf("%s", s);
printf("\nPlease enter substring t1:"); scanf("%s", t1);
printf("\nPlease enter substring t2:"); scanf("%s", t2);
if ( strlen(t1)==strlen(t2) )
{ fun( s, t1, t2, w);
printf("\nThe result is : %s\n", w);
}
else printf("\nError : strlen(t1) != strlen(t2)\n");
}
三、编程题:
函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、… 都应当删除,其它依此类推。最后t所指的数组中的内容应是:"BDF24"。
注意: 部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
PROG1.C代码如下:
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{
}
main()
{
char s[100], t[100];
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
NONO();
}
NONO ( )
{ /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100], t[100] ;
FILE *rf, *wf ;
int i ;
rf = fopen("C:\\ in.dat","r") ;
wf = fopen("C:\\ out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf, "%s", s) ;
fun(s, t) ;
fprintf(wf, "%s\n", t) ;
}
fclose(rf) ;
fclose(wf) ;
}
in.dat文件内容参见如下:
mylongti
friendin
theonli
Kingdom
sharedh
istimean
expertis
aboveand
ecallof
dutyPav 展开
有源程序test2-1.c,该程序的功能是:是将一个字符数组中的元素逆序存放并输出 。改正其中的错误。
源程序test2-1.c代码如下:
sort(char *p,int m )
{ int i;
char change , *p1, *p2;
for(i=0;i<=m/2;i++)
{ p1=p+i;
p2=p+(m-1-i);
change=
*p1=*p2;
}
}
#include "stdio.h"
main( )
{
int i,n;
char *p,num[20],temp;
printf("Enter n: ");
scanf("%d",n);
temp=getchar();
printf("Enter num[0] num[1] ... num[%d]:",n-1);
for (i=0;i<n;i++)
scanf("%d",&num[i]);
p=num;
sort();
printf("Result is:\n");
for(i=0;i<n,i++)
printf("%d ",num[i]);
}
二、改错题:
给定程序MODI1.C中函数 fun 的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为:"abcdabfabc",t1所指子串中的内容为:"ab",t2所指子串中的内容为:"99"时, 结果,在w所指的数组中的内容应为:"abcdabf99c"。请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
MODI1.C代码如下:
#include <stdio.h>
#include <string.h>
int fun (char *s, char *t1, char *t2 , char *w)
{
int i; char *p , *r, *a;
strcpy( w, s );
/************found************/
while ( w )
{ p = w; r = t1;
while ( *r )
/************found************/
IF ( *r == *p )
{ r++; p++; }
else break;
if ( *r == '\0' ) a = w;
w++;
}
r = t2;
while ( *r ){ *a = *r; a++; r++; }
}
main()
{
char s[100], t1[100], t2[100], w[100];
printf("\nPlease enter string S:"); scanf("%s", s);
printf("\nPlease enter substring t1:"); scanf("%s", t1);
printf("\nPlease enter substring t2:"); scanf("%s", t2);
if ( strlen(t1)==strlen(t2) )
{ fun( s, t1, t2, w);
printf("\nThe result is : %s\n", w);
}
else printf("\nError : strlen(t1) != strlen(t2)\n");
}
三、编程题:
函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、… 都应当删除,其它依此类推。最后t所指的数组中的内容应是:"BDF24"。
注意: 部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
PROG1.C代码如下:
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{
}
main()
{
char s[100], t[100];
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
NONO();
}
NONO ( )
{ /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100], t[100] ;
FILE *rf, *wf ;
int i ;
rf = fopen("C:\\ in.dat","r") ;
wf = fopen("C:\\ out.dat","w") ;
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf, "%s", s) ;
fun(s, t) ;
fprintf(wf, "%s\n", t) ;
}
fclose(rf) ;
fclose(wf) ;
}
in.dat文件内容参见如下:
mylongti
friendin
theonli
Kingdom
sharedh
istimean
expertis
aboveand
ecallof
dutyPav 展开
2个回答
展开全部
一:改错
change= 改为change=*p1;
*p1=*p2;后面加一句*p2=change;
scanf("%d",n);改为scanf("%d",&n);
scanf("%d",&num[i]);改为scanf("%c",&num[i]);
sort();改为sort(p,n);
for(i=0;i<n,i++)改为for(i=0;i<n;i++)中间分号
printf("%d ",num[i]);改为printf("%c ",num[i]);
二改错
while ( w )改为while ( *w != '\0')
IF 改为if
三
void fun(char *s, char t[])
{
int len = strlen(s);
int i,j=0;
for(i=0;i<len;i++){
int ascll = *s;
if(!(ascll%2)){
t[j++]=*s;
}
s++;
}
t[j]='\0';
}
change= 改为change=*p1;
*p1=*p2;后面加一句*p2=change;
scanf("%d",n);改为scanf("%d",&n);
scanf("%d",&num[i]);改为scanf("%c",&num[i]);
sort();改为sort(p,n);
for(i=0;i<n,i++)改为for(i=0;i<n;i++)中间分号
printf("%d ",num[i]);改为printf("%c ",num[i]);
二改错
while ( w )改为while ( *w != '\0')
IF 改为if
三
void fun(char *s, char t[])
{
int len = strlen(s);
int i,j=0;
for(i=0;i<len;i++){
int ascll = *s;
if(!(ascll%2)){
t[j++]=*s;
}
s++;
}
t[j]='\0';
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询