扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#includelt;stdio.hgt;
成都创新互联是一家以成都网站建设、网页设计、品牌设计、软件运维、成都网站营销、小程序App开发等移动开发为一体互联网公司。已累计为成都建筑动画等众行业中小客户提供优质的互联网建站和软件开发服务。
void TongJi(char s[])
{
int ZiMu=0,KongGe=0,ShuZi=0,QiTa=0,i;
for(i=0;slt;igt;!='\0';i++)
{
if(slt;igt;==32)KongGe++;
else if((slt;igt;gt;=48)(slt;igt;lt;=57))ShuZi++;
else if(((slt;igt;gt;=97)(slt;igt;lt;=122))||((slt;igt;gt;=65)(slt;igt;lt;=90)))ZiMu++;
else QiTa++;
}
printf("空格:%d;数字:%d;字母:%d;其他:%d。\n",KongGe,ShuZi,ZiMu,QiTa);
}
int main()
{
char s[100];
printf("请输入:");
gets(s);
TongJi(s);
return 0;
}
扩展资料:
return用法
C++的关键字,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值.
说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助.
很多人甚至市面上的一些书籍,都使用了void main(),其实这是错误的。C/C++中从来没有定义过void main()。
C++之父Bjarne Stroustrup在他的主页上的FAQ中明确地写着The definition void main(){/*...*/}is not and never has been C++,
nor has it even been C.(void main()从来就不存在于C++或者C)。下面我分别说一下C和C++标准中对main函数的定义。
1.C
在C89中,main()是可以接受的。Brian W.Kernighan和Dennis M.Ritchie的经典巨著The C programming Language 2e(《C程序设计语言第二版》)用的就是main()。不过在最新的C99标准中,只有以下两种定义方式是正确的:
int main(void)
int main(int argc,char*argv[])
(参考资料:ISO/IEC 9899:1999(E)Programming languages—C 5.1.2.2.1 Program startup)
当然,我们也可以做一点小小的改动。例如:char*argv[]可以写成char**argv;argv和argc可以改成别的变量名(如intval和charval),不过一定要符合变量的命名规则。
如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc,char*argv[])。
main函数的返回值类型必须是int,这样返回值才能传递给程序的激活者(如操作系统)。
如果main函数的最后没有写return语句的话,C99规定编译器要自动在生成的目标文件中(如exe文件)加入return 0;,表示程序正常退出。不过,我还是建议你最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯。
注意,vc6不会在目标文件中加入return 0;,大概是因为vc6是98年的产品,所以才不支持这个特性。现在明白我为什么建议你最好加上return语句了吧!不过,gcc3.2(Linux下的C编译器)会在生成的目标文件中加入return 0;。
个人意见:
首先你的思路是有缺陷的,
如一楼所说。
其次,这个问题的实现,可以借鉴多项式处理的思路。
从行首开始读取,
特例:判断行首是否为"main",如果是,则算一个函数。
一般情况:
读取行首到" "间的第一个字符串,看是否为有效返回类型(void,int,float...)
如果是有效返回类型,继续读取后续,否则本次处理完毕,读取下一行。
继续读取" "到"("间的字符串(这期间如果直到行尾都没有读到{,则本次处理完毕,读取下一行),
将"("压栈,继续读取,如果在其后读取到非有效字符(如"{","("等),则本次处理完毕,读取下一行,如果读取到")",则继续读取,
如果在本行,或者下一行读取到"{",则计数加一。
(判断本行,或者下一行读取到"{"的目的是为了防止读到函数声明,也被计数了)
时间较紧,想的还有很多缺陷,
不过说实话,这个明天就要交,估计时间不够。
行数和列数在编译器上都自动标出来了,
而统计一个程序中句子数你可以让其和行数相等(每行只有一个语句),这也是程序员约定俗成的规矩,这样做不仅美观,而且条理清晰便于修改;
统计函数你可以在main函数前声明并初始化一个计数器为0,并在每个被你调用的函数定义中让计数器自加运算,这样当程序结束是,printf计数器的值便是你程序中调用的函数的个数。
#include stdio.h
#include ctype.h
void main()
{
int i,num,al1,al2,spa,other;
i=num=al1=al2=spa=other=0;
char a[30];
gets(a);
for(i=0;a[i]!='\0';i++)
{
if(a[i]==' ')
spa++;
else if(isdigit(a[i]))
num++;
else if(isupper(a[i]))
al1++;
else if(islower(a[i]))
al2++;
else
other++;
}
printf("空格个数为:%d\n数字个数为:%d\n大写字母个数为:%d\n小写字母个数为:%d\n其它字符个数为:%d\n",spa,num,al1,al2,other);
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流