厦门大学 石墨烯合作:新人求高手分析题目!!!!!

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 12:10:09
在书上看到一个例题,我看了半天都看不懂有哪个高手能分析一下!
有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void main()
{
int i,j,c,upper,lower,digit,space,punch;
char str[3][80];
upper=lower=digit=space=punch=0;
for(i=0;i<3;i++)
{
gets(str[i]);
for(j=0;j<10;j++)
{
c=str[i][j];

if(isupper(c)!=0)
{
upper++;
}

if(islower(c)!=0)
{
lower++;
}

if(isdigit(c)!=0)
{
digit++;
}

if(isspace(c)!=0)
{
space++;
}

if(ispunct(c)!=0)
{
punch++;
}
}
}
printf(" upper%d\n lower%d\n digit%d\n space%d\n punch%d\n",upper,lower,digit,space,punch);

}

/*str[3][80]是一个字符数组,就是共有3行文字,每行有80个字符的意思
先置中英文大写字母、小写字母、数字、空格以及其他字符的个数的记数初值为0,即
upper=lower=digit=space=punch=0
isupper(c)检查c是不是大写字母
islower(c)检查c是不是小写字母
isdigit(c)检查c是不是数字
isspace(c)检查c是不是空格、跳格符或换行符
ispunct(c)检查c是不是标点
如果是就在相应的个数的记数上加上1*/
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void main()
{
int i,j,c,upper,lower,digit,space,punch;
char str[3][80];
upper=lower=digit=space=punch=0;
for(i=0;i<3;i++)
{ gets(str[i]);
for(j=0;j<80;j++) /*应该是j<80吧?*/
{ c=str[i][j];
if(isupper(c)!=0)
{ upper++; }
if(islower(c)!=0)
{ lower++; }
if(isdigit(c)!=0)
{ digit++; }
if(isspace(c)!=0)
{ space++; }
if(ispunct(c)!=0)
{ punch++; }
}
}
printf(" upper%d\n lower%d\n digit%d\n space%d\n punch%d\n",upper,lower,digit,space,punch);
}

定义整形变量,逐个推进,换行,遇合适条件变量增加。

这个程序太简单

哈哈,真的也是个刚学C语言的哦,哈哈,我喜欢,我也刚学,不过我都会,哈哈