输入一行字符,统计其中单词的个数
分析:设长度为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]);
}
}