weixin_52495676 2021-06-07 19:40 采纳率: 50%
浏览 34

请问这个程序怎么样运行出结果,就是让他显示出函数设置中的内容。

  /*1.读入一个英文文本文件,英文中有字母、数字、其它字符,无汉字,文件有多行。
    2.编写函数实现:统计字母的出现频度,并显示结果。
    3.编写函数实现:统计其中单词的个数,并显示结果。(单词个数以WORD统计作为参考,不一定100%相同。)
    4.编写函数实现:找出最长的单词,并显示单词及其长度。
    5.编写函数实现:统计出现的整数,存入一维数组,并显示结果。
        (1) 比如文件中有两行:
            "abc 123 W 6 www 9."
            "teacher 10 student 7."
        (2) 分析得到5个数:123、6、9、10、7。
        (3) 定义数组int a[1000]
        (4) a[0]=123,a[1]=6,a[2]=9,a[3]=10,a[4]=7。  注:可以利用下标或字符型指针处理字符串。    
说明:
1、需要用到《文件》这一章的知识点,大家自学。(可以参考书340页的例 10.2、书344页上半页的程序)。
2、【英文文本文件】指的是文本文件,不是二进制文件。
3、文本文件的内容可事先固定好。
4、文件读取中,只用"r"功能。
5、把所有内容读到一个一维数组或二维数组中。
6、把这个数组传给函数。(参数是数组)*/
#include<stdio.h>
#include<stdlib.h>
void main()
{
	FILE *fp;
	char str[100][100];
	int i=0;
    if((fp=fopen("D:\\文本.txt","r"))==NULL)
	{
		printf("无法打开此文件\n");
		exit(0);
	}
	while(fgets(str[i],100,fp)!=NULL)
	{
		printf("%s",str[i]);
	}
	
}
void zimupinlv(int str[])
{
	int i,j,sum=0,
	char c[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
	while(str[i]>c[0]&&str[i]<c[26])
	{
		for(j=0;j<26;j++)
		{
			if(str[i]==c[j])
			{
				sum++;
				c[j]++;
			}
		}
	}
	for(j=0;j<26;j++)
	{
		printf(" %c出现的频率为:%f",c[j],c[j]/sum);
	}
}

void dancigeshu(int str[])
{   
	int a=0,i;
	while(str[i]!='\n')
	{
		if(str[i]!=' ')
		{
			a++;
		}
	}
	printf("单词的个数为:\n",a);
}

void zuichangdanci(int str[])
{
	int i,j,d=0,longest=0;//d为单词长度,longest为最长单词
	for(i=0;str[i]!='\0';i++)
	{
		d++;
		if(str[i]==32)//空格重新计数
		{
			d=0;
		}
		else if(d>longest)
		{
		    longest=d;
			j=i;
		}
	}
	for(i=j-longest+1;i<=j;i++)
	{
		printf("最长单词为:%c",str[i]);
	}
}

void zhengshu(int str[])
{
	int i,z=0;
	if(str[i]%1==0)
	{
		printf("整数有:",str[i]);
		z++;
	}

}



  • 写回答

1条回答 默认 最新

  • vig_d 2021-06-07 20:26
    关注

    37到57行

    void zimupinlv(char str[]){
        __int64 length=strlen(str);
        __int64 a[26]={0};//小写字符
        __int64 b[26]={0};//大写字符
        double cnt=0;
        for(__int64 i=0;i<length;++i){
            if(str[i]>='a'&&str[i]<='z'){
                ++a[str[i]-'a'];
                ++cnt;
            }
            if(str[i]>='A'&&str[i]<='Z'){
                ++b[str[i]-'A'];
                ++cnt;
            }
        }
        for(__int64 i=0;i<26;++i){//小写
            printf("%c出现的频率为: %f",i+'a',a[i]/cnt);
        }
        printf("\n");
        for(__int64 i=0;i<26;++i){//大写
            printf("%c出现的频率为: %f",i+'A',b[i]/cnt);
        }
    }

    你这怕是c语言作业吧,虽然我是新手,但是你这代码问题太多了,我敲这点代码纯属无聊,拜拜~

    评论

报告相同问题?

悬赏问题

  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了