编程练习三



程序一、编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。

#include <stdio.h>

#include <string.h>

#include <ctype.h>

 

void count(char a[], char w[][10], int n, int b[]);

 

int main()

{

    char a[100], w[10][10];

int b[100];

int n,i;

 

printf("Please inpu a string:\n");

scanf("%s", a);

printf("Please input the number of the words:\n");

scanf("%d", &n);

    printf("Please input the words:\n");

for(i = 0; i < n; i++)

{

        scanf("%s", w[i]);

}

count(a, w,n,b);

 

    return 0;

}

 

void count(char a[], char w[][10], int n, int b[])

{

    int i, t;

int j = 0;

int k = 0;

int num = 0;

    int len_word;

int len_str = 0;

    

    for(i = 0; i < n; i++)

{

k = 0;

num = 0;

len_word = strlen(w[i]);

while(a[k] != '\0')

{

    len_str = 0;

j = 0;

if(isalpha(a[k]))

{   

while(a[k] == w[i][j] && a[k] != '\0')

{

len_str++;

k++;

j++;

}

}

if(len_word == len_str && !isalpha(a[k]))

{

num++;

}

            

k++;

}

b[i] = num;

}

 

for(i = 0; i < n; i++)

{

printf("%s=%d  ", w[i], b[i]);

}

printf("\n");

}

 

 

程序二、编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。

#include <stdio.h>

 

int start(int a[], int n, int c[][2]);

 

int main()

{

int a[100];

int c[100][2];

int n, i;

 

printf("Please input a number:");

scanf("%d", &n);

 

if(n % 2 != 0)

{

printf("Please input a new number:");

scanf("%d", &n);

}

printf("Please input the numbers:\n");

for(i = 0; i < n; i++)

{

scanf("%d", &a[i]);

}

 

    start(a, n, c);

    

    return 0;

}

 

int start(int a[], int n, int c[][2])

{

int i;

int j = 0;

int num = 0;

 

for(i = 0; i < n; i +=2)  //组成n/2个数

{

          c[j++][0] = a[i] * 10 + a[i+1];

}

 

for(i = 0; i < n/2; i++)      //统计出现的次数

{

        for(j = 0; j < n/2; j++)

{

if(c[i][0] == c[j][0])

{

num++;

}

}

c[i][1] = num;

num = 0;

}

 

for(i = 0; i < n/2; i++)   

{

printf("%5d", c[i][0]);

printf("%5d", c[i][1]);

printf("\n");

}

printf("\n");

    

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值