| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:我菜鸟,请各位师兄帮忙改下这个程序
只看楼主 加入收藏
q958008182
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
我菜鸟,请各位师兄帮忙改下这个程序
#include<stdio.h>
#include<string.h>
#define N 20  /* 文章的行数   */

char wz[N][80]; /* 存储文章的字符数组 ,为全局变量*/
/*输入函数*/
void readdat()
{FILE *fp;
 int i,j,len;
 char *str;
 if(!(fp=fopen("E:/胡治强/静态文章.dat","r+")))/*打开文件*/
   printf("未找到静态文件,请确认静态文件在指定位置!\n");
 for(i=0;i<N;i++)
  fgets(wz[i],80,fp);/*读文件*/
}

/*输出函数*/
void out()
{int i=0;
 for(i=0;i<N;i++)
  printf("%s",wz[i]);
}

int countword(int n1,int n2)
/*统计ASC 码在n1与n2之间的字符*/
{int i,j,len;
 int n=0;  /*统计字符数*/
 for(i=0;i<N;i++)
   {len=strlen(wz[i]);
     for(j=0;j<=len;j++)
      if(wz[i][j]>=n1&&wz[i][j]<=n2)/*wz[i][j]的ASC 码在n1与n2之间,n++*/
      n++;
   }
return n;
}

int cz(char *s) /*查找某一字符串出现的次数*/
{int n=0;
 int i;
 int lens;/*要查找字符串 *S 的长度*/
 char *c;
 lens=strlen(s);
 for(i=0;i<N;i++)
  { c=strstr(wz[i],s);/*字符串*S在文章第i 行第一次出现的位置*/
    while(*c!=0)
    {n++;
     c=strstr(c+lens,s);/*字符串*S在文章第i 行下一次出现的位置*/
     }
 }
 return n;

}
void del(char *s)
{int i,j,k,leni,lenc,lens;
 int p;
 char *c;
 lens=strlen(s);/*要删除字符串的长度*/
 for(i=0;i<N;i++)
{ c=strstr(wz[i],s);/*字符串s 在文章第i行首次出现的位置*/
  while(c!=0)/*c=0 则表明字符串s 在文章第i行没有出现*/
   {leni=strlen(wz[i]);/*文章第i 行的长度*/
    lenc=strlen(c);/*从字符串s 在文章第i行首次出现的位置处后的字符串的长度*/
      p=leni-lenc;/* 两个长度的差  从此行的第p 个位置开始删除*/
    for(k=1;k<=lens;k++)/*删除lens次*/
     {
      for(j=p;j<=leni;j++)
        wz[i][j]=wz[i][j+1];/*字符前移*/
          leni=strlen(wz[i]);
          wz[i][j-1]='\0';
          leni=strlen(wz[i]);
         }
    c=strstr(wz[i],s);
   }
}
}

main()
{
 int word,space,num,zifu;/*字母数,空格数,数字数,字符数*/
 int n; /*某字符串数*/
 int leni;
 int i=0,j=0;
 char s1[80],*s;
 printf("        ***************************************************************          ");
 printf("           *****************请选择你编辑文章来源******************\n ");/*从文件读入数据,还是从键盘输入数据*/
 printf("               **************1 调用静态储存文章**************\n");/*从文件读入数据输入1*/
 printf("                **************2 手写输入编辑文章**************\n");/*从键盘输入数据输入2*/
 printf("            ******10计算机学院******201010804009*******胡治强******\n");
 printf("        ***************************************************************          \n");
 scanf("%d",&n);
 getchar();
 switch(n)
 {case 1:
    readdat();
    break;
  case 2:
    printf("请手写输入需要编辑的文章,结束以回车后#结束!\n");
        gets(s1);
    while(strcmp(s1,"#")!=0&&i<N)
     {
     strcpy(wz[i],s1);/*将s1中的内容复制到wz[i]中*/
     leni=strlen(s1);
     wz[i][leni]='\n';
         gets(s1);
     i++;
     }
    break;
  default:
    printf("输入错误!\n");
    break;
 }
 printf("静态文件如下:\n ");
 out();
word=countword('a','z')+countword('A','Z');/*统计字母*/
printf("\n字母个数为 :\t%d\n",word);
space=countword(' ',' ');/*统计空格*/
printf("空格个数为 :\t%d\n",space);
num=countword('0','9');/*统计数字*/
printf("数字个数为 :\t%d\n",num);
/*统计所有字符*/
zifu=countword(32,44)+num+countword(59,94)+countword(97,126)+countword(174,175);
printf("字符总数为 :\t%d\n",zifu+space);
/*字符串的查找*/
printf("\n请输入想查找的字符串:\t");
scanf("%s",s);
n=cz(s);
printf("\n该字符串 %s 出现 %d 次 \n",s,n);
getchar();
/*字符串的删除*/
printf("\n请输入你想删除的字符串:\t");
scanf("%s",s);
printf("\n删除前的文章为:\n");
printf("%s\n",s);
  out();
n=cz(s);
if(n==0)
  printf("\n找不到该字符!\n");
else
  {
  del(s);
  printf("\n删除后的文章为: \n");
  printf("%s:\n",s);
  out();
  }
}
搜索更多相关主题的帖子: void include 文章 
2012-06-07 09:48
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:20 
我要是改能把它全改了…………
我用的C++
你可以试试,string超爽的
2012-06-07 12:56
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
这人牛B,才进学校没一个月就写出来了
2012-06-07 12:58
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
完工,请查收
#include<stdio.h>
#include<string.h>
#define N 20  /* 文章的行数   */

char wz[N][80]; /* 存储文章的字符数组 ,为全局变量*/
/*输入函数*/
void readdat()
{
    FILE *fp;
    int i,j,len;
    char *str;
    if(!(fp=fopen("静态文章.dat","r+")))/*打开文件*/
        printf("未找到静态文件,请确认静态文件在指定位置!\n");
    for(i=0;i<N;i++)
        fgets(wz[i],80,fp);/*读文件*/
}

/*输出函数*/
void out()
{   
    int i=0;
    for(i=0;i<N;i++)
    printf("%s",wz[i]);
}

int countword(int n1,int n2)
/*统计ASC 码在n1与n2之间的字符*/
{int i,j,len;
int n=0;  /*统计字符数*/
for(i=0;i<N;i++)
   {len=strlen(wz[i]);
     for(j=0;j<=len;j++)
      if(wz[i][j]>=n1&&wz[i][j]<=n2)/*wz[i][j]的ASC 码在n1与n2之间,n++*/
      n++;
   }
return n;
}

int cz(char *s) /*查找某一字符串出现的次数*/
{
int n=0;
int i;
int lens;/*要查找字符串 *S 的长度*/
char *c;

lens=strlen(s);
for(i=0;i<N;i++)
{
    c=strstr(wz[i],s);/*字符串*S在文章第i 行第一次出现的位置*/
   
    while(c!=NULL)
    {
        n++;
        c=strstr(c+lens,s);/*字符串*S在文章第i 行下一次出现的位置*/
    }

}
return n;

}
void del(char *s)
{int i,j,k,leni,lenc,lens;
int p;
char *c;
lens=strlen(s);/*要删除字符串的长度*/
for(i=0;i<N;i++)
{ c=strstr(wz[i],s);/*字符串s 在文章第i行首次出现的位置*/
  while(c!=0)/*c=0 则表明字符串s 在文章第i行没有出现*/
   {leni=strlen(wz[i]);/*文章第i 行的长度*/
    lenc=strlen(c);/*从字符串s 在文章第i行首次出现的位置处后的字符串的长度*/
      p=leni-lenc;/* 两个长度的差  从此行的第p 个位置开始删除*/
    for(k=1;k<=lens;k++)/*删除lens次*/
     {
      for(j=p;j<=leni;j++)
        wz[i][j]=wz[i][j+1];/*字符前移*/
          leni=strlen(wz[i]);
          wz[i][j-1]='\0';
          leni=strlen(wz[i]);
         }
    c=strstr(wz[i],s);
   }
}
}

main()
{
int word,space,num,zifu;/*字母数,空格数,数字数,字符数*/
int n; /*某字符串数*/
int leni;
int i=0,j=0;
char s1[80],s[100];
printf("        ***************************************************************          ");
printf("           *****************请选择你编辑文章来源******************\n ");/*从文件读入数据,还是从键盘输入数据*/
printf("               **************1 调用静态储存文章**************\n");/*从文件读入数据输入1*/
printf("                **************2 手写输入编辑文章**************\n");/*从键盘输入数据输入2*/
printf("            ******10计算机学院******201010804009*******胡治强******\n");
printf("        ***************************************************************          \n");
scanf("%d",&n);
getchar();
switch(n)
{case 1:
    readdat();
    break;
  case 2:
    printf("请手写输入需要编辑的文章,结束以回车后#结束!\n");
        gets(s1);
    while(strcmp(s1,"#")!=0&&i<N)
     {
     strcpy(wz[i],s1);/*将s1中的内容复制到wz[i]中*/
     leni=strlen(s1);
     wz[i][leni]='\n';
         gets(s1);
     i++;
     }
    break;
  default:
    printf("输入错误!\n");
    break;
}
printf("静态文件如下:\n ");
out();
word=countword('a','z')+countword('A','Z');/*统计字母*/
printf("\n字母个数为 :\t%d\n",word);
space=countword(' ',' ');/*统计空格*/
printf("空格个数为 :\t%d\n",space);
num=countword('0','9');/*统计数字*/
printf("数字个数为 :\t%d\n",num);
/*统计所有字符*/
zifu=countword(32,44)+num+countword(59,94)+countword(97,126)+countword(174,175);
printf("字符总数为 :\t%d\n",zifu+space);
/*字符串的查找*/
printf("\n请输入想查找的字符串:\t");

scanf("%s",s);

n=cz(s);

printf("\n该字符串 %s 出现 %d 次 \n",s,n);
getchar();
/*字符串的删除*/
printf("\n请输入你想删除的字符串:\t");
scanf("%s",s);
printf("\n删除前的文章为:\n");
printf("%s\n",s);
  out();
n=cz(s);
if(n==0)
  printf("\n找不到该字符!\n");
else
  {
  del(s);
  printf("\n删除后的文章为: \n");
  printf("%s:\n",s);
  out();
  }
}
2012-06-07 13:03
q958008182
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-7
收藏
得分:0 
我菜鸟,请各位师兄帮忙改下这个程序
谢谢师兄,师兄威武
2012-06-07 17:48
q958008182
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-7
收藏
得分:0 
回复 4楼 love24114
  谢谢了师兄。万分感谢
2012-06-07 17:49
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
大一菜鸟,不敢当
2012-06-07 18:07
快速回复:我菜鸟,请各位师兄帮忙改下这个程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017548 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved