A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 那个Mr_Z 中级黑马   /  2014-4-2 12:41  /  787 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<string.h>
#include<stdio.h>
FILE *fout;
int main()
{
        fout=fopen("myf2.out","w");
        char s1[100];
        char s2[100];
        char s[200];
        int change(char *a,char *b,char *c);
        printf("请输入字符串1:\n");
        fprintf(fout,"请输入字符串1:\n");
        scanf("%s",s1);
    printf("请输入字符串2:\n");
        fprintf(fout,"请输入字符串2:\n");
        scanf("%s",s2);
    change(s1,s2,s);
    printf("%s",s);
        fprintf(fout,"%s",s);
        fclose(fout);
}
void change(char *a,char *b,char *c)
{
        int longb=strlen(b),i=0,j=longb-1,t,k;
        for(;i<j;i++,j--)
        {
                t=*(b+i);
        *(b+i)=*(b+j);
        *(b+j)=t;
        }
        longa=strlen(a);
        longb>longa?t=longa,j=1:t=longb,j=0;
        for(i=0,k=0;i<t;i++)
        {
                *(c+k++)=a[i];
                *(c+k++)=b[i];
        }
        if(j==0)
                for(;i<longa;i++)*(c+k++)=a[i];
        else
                for(;i<longb;i++)*(c+k++)=b[i];
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
下次把你的问题用输入工具里的代码工具输入,不要直接复制,而且问题要问清楚,你这样问问题,大家只能看看而已,找代码行都难得找。
回复 使用道具 举报
  1. #include<string.h>
  2. #include<stdio.h>
  3. FILE *fout;
  4. int main()
  5. {
  6.     fout=fopen("myf2.out","w");
  7.     char s1[100];
  8.     char s2[100];
  9.     char s[200];
  10.     //int change(char *a,char *b,char *c); // 和下面的函数同名
  11.     printf("请输入字符串1:\n");
  12.     fprintf(fout,"请输入字符串1:\n");
  13.     scanf("%s",s1);
  14.     printf("请输入字符串2:\n");
  15.     fprintf(fout,"请输入字符串2:\n");
  16.     scanf("%s",s2);
  17.     change(s1,s2,s); // 此处变量一直没被赋值,和函数参数起冲突
  18.     printf("%s",s);
  19.     fprintf(fout,"%s",s);
  20.     fclose(fout);
  21. }
  22. void change(char *a,char *b,char *c)
  23. {
  24.     int longb=strlen(b),i=0,j=longb-1,t,k;
  25.     for(;i<j;i++,j--)
  26.     {
  27.         t=*(b+i);
  28.         *(b+i)=*(b+j);
  29.         *(b+j)=t;
  30.     }
  31.     //longa=strlen(a); // longa未定义
  32.     int longa = strlen(a);
  33.     //longb>longa?t=longa,j=1:t=longb,j=0; // 此处应加括号
  34.     longb>longa?(t=longa,j=1):(t=longb,j=0);
  35.     for(i=0,k=0;i<t;i++)
  36.     {
  37.         *(c+k++)=a[i];
  38.         *(c+k++)=b[i];
  39.     }
  40.     if(j==0)
  41.         for(;i<longa;i++)*(c+k++)=a[i];
  42.     else
  43.         for(;i<longb;i++)*(c+k++)=b[i];
  44. }
  45. // 给您改到最后,您的变量定义模糊,编译无法通过。
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
  简单看了一下你的程序我发现就是三目运算符和函数说明上出现报错
  源程序:
  1 #include<string.h>
  2 #include<stdio.h>
  3
  4 FILE *fout;
  5
  6
  7 int main()
  8 {
  9         fout=fopen("myf2.out","w");
10         char s1[100];
11         char s2[100];
12         char s[200];
13         int change(char *a,char *b,char *c); //函数说明与调用的不一致 27行
14         printf("请输入字符串1:\n");
15         fprintf(fout,"请输入字符串1:\n");
16         scanf("%s",s1);
17         printf("请输入字符串2:\n");
18         fprintf(fout,"请输入字符串2:\n");
19         scanf("%s",s2);
20         change(s1,s2,s);
21         printf("%s",s);
22         fprintf(fout,"%s",s);
23         fclose(fout);
24 }
25
26
27 void change(char *a,char *b,char *c) //13行对应
28 {
29         int longb=strlen(b),i=0,j=longb-1,t,k;
30         for(;i<j;i++,j--)
31         {
32                 t=*(b+i);
33         *(b+i)=*(b+j);
34         *(b+j)=t;
35         }
36         longa=strlen(a);
37         longb>longa?t=longa,j=1:t=longb,j=0;//三目运算符优先级高这样写就成了 (longb>longa?t=longa,j=1:t=longb,j)=0;显然等号左边没有值可以赋。
38         for(i=0,k=0;i<t;i++)
39         {
40                 *(c+k++)=a[i];
41                 *(c+k++)=b[i];
42         }
43         if(j==0)
44                 for(;i<longa;i++)*(c+k++)=a[i];
45         else
46                 for(;i<longb;i++)*(c+k++)=b[i];
47 }



  修改后的:
  1 #include<string.h>
  2 #include<stdio.h>
  3
  4 FILE *fout;
  5
  6
  7 int main()
  8 {
  9         fout=fopen("myf2.out","w");
10         char s1[100];
11         char s2[100];
12         char s[200];
13         void change(char *a,char *b,char *c); //修改成对应的
14         printf("请输入字符串1:\n");
15         fprintf(fout,"请输入字符串1:\n");
16         scanf("%s",s1);
17         printf("请输入字符串2:\n");
18         fprintf(fout,"请输入字符串2:\n");
19         scanf("%s",s2);
20         change(s1,s2,s);
21         printf("%s",s);
22         fprintf(fout,"%s",s);
23         fclose(fout);
24}
25
26
27 void change(char *a,char *b,char *c)
28 {
29         int longb=strlen(b),i=0,j=longb-1,t,k;
30         for(;i<j;i++,j--)
31         {
32                 t=*(b+i);
33         *(b+i)=*(b+j);
34         *(b+j)=t;
35         }
36         int longa=strlen(a);
37         longb>longa?(t=longa,j=1):(t=longb,j=0); //三目运算加上括号就清楚了
38         for(i=0,k=0;i<t;i++)
39         {
40                 *(c+k++)=a[i];
41                 *(c+k++)=b[i];
42         }
43         if(j==0)
44                 for(;i<longa;i++)*(c+k++)=a[i];
45         else
46                 for(;i<longb;i++)*(c+k++)=b[i];
47 }

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报

多谢,已经改过了,3Q:loveliness:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马