数组应用:统计

输入一行字符,统计其中单词的个数

分析:设长度为n的字符串,含有word个单词,该字符串存储于字符数组text,各字符元素分别为text[0]-text[n-1]

text为空串,即text[0]='\0',则word的统计结果为0

text的开始字符为空格,表示开始时没有出现单词,word初值置为0

text的开始字符为非空格符,即一开始就出现了单词,word的初值置为1

对于非空字符串,按以下步骤检测下一单词

若text[i] (i=1,2,3,......)不是字符串结束标记'\0',当满足下列条件时,必出现新单词:

text[i-1]=''&&text[i]!=''

>i++

重复上一步,直至text[i]为'\0'时结束

#include<stdio.h>
#define N 100
int main(){
    char text[N];
    int word=0,i;
    gets(text);
    if(text[0]!='\0'){
        if(text[0]!='_') word=1;//没有结束有空格 单词返回一
        for(i=1;text[i]!='\0';i++)//没有结束,前面有空格,后面没有空格,word数目加一
        if(text[i-1]=='_'&&text[i]!='_') word++;
    }
    printf("The number of word is %d\n",word);
}

我自己写一遍

#include<stdio.h>

#define N 100

int main(){

        int word=0,i;

                char text[N];

                        //输入text

                                gets(text);

                                        if(text[0]!='\0'){

                                        第一项没有结束符,则继续判断

                                        if(text[0]="_") word=1;//第一项有空格字数=1

                                        for(i=1;text[1]!='\0';i++)

                                        if(text[i-1]="_"&&text[i]!=“_”)//前一项有空格,后一项没有空格word+1

                                                        word++;

        }

}

#include<stdio.h>
#define N 60
int main(){
    int s1,s2,ave,i;
    static int r[5];
    for(i=0;i<N;i++){
        scanf("%d%d",&s1,&s2);
        ave=(s1+s2)/2;
        switch (ave/10) {
        case 10:
        case 9:
        r[0]++;break;
        case 8:
        r[1]++;break;
        case 7:
        r[2]++;break;
        case 6:
        r[3]++;break;
        default:
        r[4]++;break;
        }

    }
    for(i=0;i<5;i++)
    printf("%d",r[i]);
}

这是求60名学生的两门平均成绩各是多少?

r[0]优秀

r[1]良好

r[2]中等

r[3]及格

r[4]不及格

数组应用举例

#include<stdio.h>
int main(){
    int i,j,s1,s2,ave;
    static a[3][5];
    for(i=0;i<3;i++){
        for(j=0;j<5;j++){
            scanf("%d%d",&s1,&s2);
            ave=(s1+s2)/2;
            switch (ave/10) {
            case 10:
            case 9:
            a[i][0]++;break;
            case 8:
            a[i][1]++;break;
            case 7:
            a[i][2]++;break;
            case 6:
            a[i][3]++;break;
            default:
            a[i][4]++;break;
            }
        }
        for(i=0;i<3;i++){
            for(j=0;j<5;j++)
                 printf("%d",a[i][j]);
                
        }
    
    }

}

这是用二维数组进行计算:三个班级(班级内每个同学的两门成绩的平均值)的5个等级

我手打一下

#include<stdio.h>

int main(){

int i,j,ave,s1,s2;

static a[3][5];

for(i=0;i<3;i++){

for(j=0;j<5;j++){

scanf("%d%d",&s1,&s2);

ave=(s1+s2)/2;

switch(ave/10){

case 10:

case 9:

a[i][0]++;break;

case 8:

a[i][1]++;break;

case 7:

a[i][2]++;break;

case 6:

a[i][3]++;break;

default:

a[i][4]++;break;

}

}

}

for(i=0;i<3;i++){

for(j=0;j<5;j++)

printf("%d\n",a[i]a[j]);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

靳向阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值