例如,s所指字符串为:asd123fgh543df,处理后新字符串为:asdfghdf123543。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#include
char *fun(char *s)
{int i, j, k, n; char *p, *t;
n=strlen(s)+1;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0; k=0;
for(i=0; i
{if(((s[i]>='a')&&(s[i]<='z'))||((s[i]>='A')&&(s[i]<='Z'))) {
/**********found**********/
t[j]=__1__; j++;}
else
{p[k]=s[i]; k++;}
}
/**********found**********/
for(i=0; i<__2__; i++) t[j+i]=p[i];
/**********found**********/
t[j+k]= __3__;
return t;
}
main()
{char s[80];
printf("Please input: "); scanf("%s",s);
printf("\nThe result is: %s\n",fun(s));
}
解题答案:
/**********第一空**********/
t[j]=s[i]; j++;}
/**********第二空**********/
for(i=0; i
/**********第三空**********/
t[j+k]= 0;
****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数 fun 的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为:"abcdabfabc",t1所指子串中的内容为:
"ab",t2所指子串中的内容为:"99"时, 结果,在w所指的数组中的内容应为:"abcdabf99c"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
void fun (char *s, char *t1, char *t2 , char *w)
{
char *p , *r, *a=s;
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");
}
解题答案:
/************found************/
while(*w )
/************found************/
if(*r==*p)
******************************************
[NextPage] 三、程序题:函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值
为奇数、…、字符1的ASCII码值也为奇数、… 都应当删除,其它依此类推。最t所指的数组中的内容应是:"BDF24"。
注意: 部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
void fun(char *s, char t[])
{
}
main()
{
char s[100], t[100];void NONO ();
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100], t[100] ;
FILE *rf, *wf ;
int i ;
rf = fopen("in.dat","r");
wf = fopen("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);
}
参考答案:
void fun(char *s, char t[])
{
int i, j = 0 ;
for(i = 0 ; i < strlen(s); i++) if(s[i] % 2==0) t[j++] = s[i] ;
t[j] = 0 ;
}
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|