C语言~!求高手帮下忙,明天要考试了,这题不会

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

一:改错
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';
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-28
你确定明天考试就考这个~?追问

你确定不考?

C语言问题,帮下忙
第四次:a[i]=-1;i=3;第五次:a[i];i=4;(此时i=4跳出循环,不进行输出)(此时a[0]=1;a[1]=-1;a[2]=1;a[3]=-1)所以输出结果是1-11-1.\/*以上均是由VC 6.0 的断点调试得出的值。仅供参考。如有不足,请指出!*\/ ...

C++编程题,高手帮下忙。。。
高手是需要高分来召唤的:1.include<stdio.h> void main(){ int n,i;float s=0;scanf("%d",&n);for(i=0;i<n;i++)s += (i%2==0) ? 1\/((float)(1+i*3)):(-1)\/((float)(1+i*3));printf("%.3f\\n",s);getch();} 2.include<stdio.h> void main(){ int n,i;...

C语言问题,大家帮个忙谢谢
解题思路(不考虑负数):根据数字大小判断是几位数。如果输入的是 0,则是 1 位数,正序、逆序都为 0。如果不是0,可以根据该数是几位数进行循环输出。这里提供了一种扩展性较强的算法,可以参考。代码中,k = 1000 表示当该数是 4 位数,然后通过循环来缩减 k 的值,从而从高到低输出每一位...

C语言啊。。字符串。。麻烦高手们帮下忙。。有点急。速度快点还能多赏点...
include<string.h> void main(){ char str[10];while( scanf("%s",str) != EOF)printf("%s\\n",str);} 参考资料:chat

C语言高手帮帮我!!!
i++=t*=i可以这样算.先算t*=i => t=(t*i); 再算 i++=t; => (i=t;i++;)第二题:第一次循环.k=1; if不运行得到a = b =s[1]-'0' 的ASC码.第二次循环k=2(也就是最后一次循环)=> a=s[1]-'0'+s[2]-'0'都用ASC码运算....

关于C语言程序设计的几道题。学霸们帮一下忙吧。
第六题:include <stdio.h> include <string.h> int main(){ char str[100];gets(str);int t=strlen(str);for(int i=0;i<=t\/2;i++)if(str[i]!=str[t-i-1]){ printf("所输入的字符串不是回文字符串\\n");return 0;} printf("所输入的字符串是回文字符串\\n");} 第五题:...

一道C++的题目,马上考试了不会写,帮下忙啦,十分感谢
+ pow(a._y - b._y, 2.0));} void main(){ Point a(1,1), b(3,2), c;c = b - a;cout<<c.getX()<<','<<c.getY()<<endl;c = b + a;cout<<c.getX()<<','<<c.getY()<<endl;cout<<distan(a,b)<<endl;} 两个点要怎么比较大小我不明白,所以没有写> ...

c语言这题,不是我不动脑筋,我想破头都想不出答案,各位帮下忙!
我看就是你不动脑子撒。。打开文件 写进去1 2 3 到文件里 然后重新打开文件 读一个整数 自然是第一个1了 运行结果是1

c语言几个小小的问题 高手帮个忙
1. C 逗号在这里不合法 2. 输出2,虽然x是浮点型,但是10和4都是整型,所以先按整型运算,再将结果转换为浮点型 3. (++x, y++)表示这是一个逗号表达式,逗号表达式取最后一个表达式的值,也就是y++的值,所以输出结果是3和3 4. printf("%8.4g\\n",b); 这句输出8756,%g表示按%e或者...

c语言高手朋友们 进来帮个忙
ppt[]里即是根据上面所说的组合数据。程序经过算法优化,效率相当高,我作了一下测试,在命令行方式下即便是五六年前的老机子也不会超过0.3秒,内存空间低于64k。由于是算法上的优化,不用C,其运算速度也不会慢到哪里去。因不知这样的理解对不对,所以没有将代码帖出来,如果需要,即刻帖出。

相似回答