c语言-把else if改为if之后为什么数字和空格就统计不了了

问题描述

把else if改为if之后为什么数字和空格就统计不了了
#include
int letter digit space others;
int main()
{
void count(char str[]);
char text[80];
printf(""input string:
"");
gets_s(text);
puts(text);
letter = 0; digit = 0; space = 0; others = 0;
count(text);
printf(""
letter:%d
digit:%d
space:%d
other:%d
""letterdigitspaceothers);
}
void count(char str[])
{
int i;
for (i = 0; str[i] != ''; i++)
if ((str[i] >= 'a'&&str[i] <= 'z') || (str[i] >= 'A'&&str[i] <= 'Z'))
letter++;
else if (str[i] >= '0'&&str[i] <= '9')
digit++;
else if (str[i] == ' ')
space++;
else
others++;
}

解决方案

for (i = 0; str[i] != ''; i++)
{
if ((str[i] >= 'a'&&str[i] <= 'z') || (str[i] >= 'A'&&str[i] <= 'Z'))
letter++;
else if (str[i] >= '0'&&str[i] <= '9')
digit++;
else if (str[i] == ' ')
space++;
else
others++;
}

解决方案二:
少了花括号
for (i = 0; str[i] != ''; i++)
{
if ((str[i] >= 'a'&&str[i] <= 'z') || (str[i] >= 'A'&&str[i] <= 'Z'))
letter++;
else if (str[i] >= '0'&&str[i] <= '9')
digit++;
else if (str[i] == ' ')
space++;
else
others++;
}

解决方案三:
jstl,if...else...
你还在用if else吗?
ant的if-else

解决方案四:
其实省略括号并不能对代码规范有任何帮助,
也没有多大的性能提升,
反而不利于你去读懂代码。

解决方案五:
如果你自己单步调试很快就可以发现问题出在哪里

时间: 2024-08-31 23:45:15

c语言-把else if改为if之后为什么数字和空格就统计不了了的相关文章

c++-C语言迷宫小游戏改为C++语言的,应该改哪些地方?(代码见正文)

问题描述 C语言迷宫小游戏改为C++语言的,应该改哪些地方?(代码见正文) #include <stdio.h> #include <conio.h> #include <windows.h> #include <time.h> #define Height 25 //迷宫的高度,必须为奇数 #define Width 25 //迷宫的宽度,必须为奇数 #define Wall 1 #define Road 0 #define Start 2 #define

c语言-C语言中如何判断一个数是否为周期数字,如:123123,12341234,123123123

问题描述 C语言中如何判断一个数是否为周期数字,如:123123,12341234,123123123 C语言中如何判断一个数是否为周期数字,如:123123,12341234,123123123 解决方案 转换成字符串,用最长公共子串(LCS)算法. 解决方案二: 可以证明的是,一个周期循环的字符串,必然它的周期是最长公共子串.有了周期,从头开始逐一比较每一段是不是这个串就可以了. 解决方案三: 最长公共子串(LCS) 解决方案四: 没有现成的函数给你用,所以要自己想办法写程序来实现. 解决方

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验

2.7 列联表.二元统计及数据正态性检验 列联表是由两个或多个分类变量及每个分类所占比例构成的频率表.频率表展示的是一个分类变量,而列联表用来展示两个分类变量. 我们以Cars93数据集为例,来解读列联表.二元统计和数据正态性: 前面已给出过汽车的两个分类变量AirBags和Type各自的频率表: 如上面的代码所示,conTable对象保存了两个变量的交叉表.每个单元的百分比显示在下列代码中.如果需要计算行百分比或列百分比,则需要指定相应参数的值: 若要计算行百分比,则应将值设为1.若要计算列百

c语言-如何使用C语言识别出bmp图片中的数字?

问题描述 如何使用C语言识别出bmp图片中的数字? 解决方案 如果是屏幕截图,你可以准备好字库,直接点阵匹配就可以了. 解决方案二: 应该有这方面的开源库 ,你可以搜一下 解决方案三: OpenCV 可以做 解决方案四: 可以百度一下:c++数字图像处理

C++统计中英文大小写字母、数字、空格及其他字符个数的方法_C 语言

本文实例讲述了C++统计中英文大小写字母.数字.空格及其他字符个数的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 28 日 * 版 本 号:v1.0 * 输入描述: * 问题描述: 有一篇文章,共有三行文字,每行有80个字符.要求分别统计出其中英文大写字母.小写字母.数字.空格以及其他字符的个数. * 程序输出: * 问题分析:略 * 算法设计:略 */ #include<iostream> using namespace std;

《C语言及程序设计》实践参考——前导0的数字

返回:贺老师课程教学链接  项目要求 [项目:前导0的数字]输入小时和分,以hh:mm形式输出,其中小时和分钟不足两位数时,用零前导例,输入14 25,输出14:25,输入8 9,输出08:09[参考解答] 解法1:用分支语句控制 #include <stdio.h> int main ( ) { int h, m; printf("输入小时和分钟"); scanf("%d %d", &h, &m); if(h<10) printf

区域和语言选项打不开

  方法1: 在任务栏单击鼠标右键,弹出快捷菜单,把鼠标移动到"工具栏"上,会弹出子菜单,看看其中的"语言栏"有没有被选中,如果没有选中,单击选中"语言栏",一般会显示输入法图标. 方法2: 依次单击"开始→设置→控制面板",打开控制面板,在控制面板中单击"日期.时间.语言和区域设置",单击"语言和区域设置",弹出"语言和区域设置"对话框,单击"语言&quo

C语言常用函数说明

1.原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针.   char* strcpy(char* des,const char* source) {

c语言 设计一个找出同数值部分排列的程序

问题描述 c语言 设计一个找出同数值部分排列的程序 定义一行的整数的输入有相同连续的地方为"同数值部分排列"找出有最长的同数值部分排列,并输出排列长度及这个数字的程序.最长的同数值部分排列有两个以上的时候,输出最后那个.输入的数字用空格或者换行区别 例1输入:0 1 1 1 2 0 0输出:3 1 例2输入:1 1 1 31 2 223输出:3 2 解决方案 #include <stdio.h>int main(){ int x; int c = 0; int px = -