主函数main()中由数字和字母组成的字符串s为测试数据,程序 主要提取字符串s中由字符'$'分隔的不同八进制数形式的字符串, 将八进制数形式字符子串所对应的字符生成新的字符串

题目:主函数main()中由数字和字母组成的字符串s为测试数据,程序
      主要提取字符串s中由字符'$'分隔的不同八进制数形式的字符串,
      将八进制数形式字符子串所对应的字符生成新的字符串t;然后
      统计字符串t中所有数字子串对应整数的出现频率。
例如:字符串s为"101$062$063$114$066$110$062$063$141$071",处理
      后字符串t为"A23L6H23a9",其中"23"对应整数23出现频率为2,
      "6"和"9"对应整数出现频率为1。
编写程序:
    1. 编写函数void GenStr(char s[],char t[]),计算字符串s中不同
       八进制数形式的字符子串,将每个八进制数形式字符子串所对应
       的字符保存在字符数组t中。

    2. 编写函数int CountFreq(char t[],int b[],int Freq[]),统计
       字符数组t中不同数字子串对应整数出现频率,不同整数保存在
       整数数组b中,出现频率保存在整数数组Freq中,函数返回整数个
       数。
    

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
#define N 10
void  GenStr(char s[],char t[])
{
/**********Program**********/
    int i,sum,k=0;
 for(i=0;s[i]!='\0';)
   {
     sum=0;
  if(s[i]>='0'&&s[i]<='9')
  {
    while(s[i]>='0'&&s[i]<='9')
    {
       sum=sum*8+s[i]-'0';
    i++;
    }
    t[k++]=sum;
  }
  else
   i++;
   }
t[k]='\0';
/**********  End  **********/
}
int CountFreq(char t[],int b[],int Freq[])
{
/**********Program**********/
    int i,sum,j=0,m,n=0;
 for(i=0;t[i]!='\0';)
 {
    sum=0;
    if(t[i]>='0'&&t[i]<='9')
    {
       while(t[i]>='0'&&t[i]<='9')
    {
       sum=sum*10+t[i]-'0';
    i++;
    }
    a[j++]=sum;
    }
    else
     i++;
 }
   b[k++]=a[0];
   for(i=1;i<j;i++)
    for(m=0;m<k;m++)
     if(a[i]==b[m])
      Freq[n]++;
     else
      b[k++]=a[i];
     

/**********  End  **********/
}
int main()
{
    char s[]="101$062$063$114$066$110$062$063$141$071";
    char t[N]="";
    int b[N]={0},Freq[N]={0};
    int num=0,i=0;
    FILE *fp;
    if((fp=fopen("DATA.TXT","w"))==NULL)
    {
        printf("File open error\n");
        exit(0);
    }
    GenStr(s,t);
    printf("The string t is: %s\n",t);
    fprintf(fp,"The string t is: %s\n",t);
    num=CountFreq(t,b,Freq);
    printf("The different integer and frequency is: ");
    fprintf(fp,"The different integer and frequency is: ");
       
    for(i=0;i<num;i++)
    {
        printf("[%d: %d] ",b[i],Freq[i]);
        fprintf(fp,"[%d: %d] ",b[i],Freq[i]);
    }
    printf("\n");
    fprintf(fp,"\n");
    fclose(fp);
   
    return 0;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值