鱼C论坛

 找回密码
 立即注册
查看: 971|回复: 19

[已解决]求大佬们看一下,小甲鱼while语句作业的,为什么这样运行总是有问题??

[复制链接]
发表于 2020-8-26 22:09:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>

int main()
{
    char str[100];
    int i=0,coust=0;
    printf("请输入一行英文句子:");
    scanf("%s",str);
    while(str[i]!='\0')
    {
        if(str[i]>='A'&&str[i]<='Z')
           {
               coust++;
           }
        i++;
    }
    printf("你总共输入了%d个大写字母",coust);
    return 0;
}
最佳答案
2020-8-26 22:20:24
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         char str[100];
  5.         int i=0,coust=0;
  6.         printf("请输入一行英文句子:");
  7.         gets(str);// 换成gets(str)就可以接收空格了
  8.         while(str[i]!='\0')
  9.         {
  10.                 if(str[i]>='A'&&str[i]<='Z')
  11.                 {
  12.                         coust++;
  13.                 }
  14.                 i++;
  15.         }
  16.         printf("你总共输入了%d个大写字母",coust);
  17.         return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-26 22:12:44 | 显示全部楼层
我这里没有问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:13:23 | 显示全部楼层
在最上方添加宏定义
  1. #define _CRT_SECURE_NO_WARNINGS
复制代码

这好象是一种安全问题,挺常见的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:13:52 | 显示全部楼层
什么问题?我这边没问题,你是要可以输入空格吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-26 22:15:34 | 显示全部楼层
昨非 发表于 2020-8-26 22:13
在最上方添加宏定义

这好象是一种安全问题,挺常见的

加上了也不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-26 22:16:53 | 显示全部楼层
qiuyouzhi 发表于 2020-8-26 22:12
我这里没有问题?

我是用codeblocks的,不跳错,就是运行结果不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:17:14 | 显示全部楼层
qiuyouzhi 发表于 2020-8-26 22:12
我这里没有问题?

VS下会有scanf安全问题
““scanf”:此函数或变量可能不安全。”

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:17:48 | 显示全部楼层
心之火 发表于 2020-8-26 22:16
我是用codeblocks的,不跳错,就是运行结果不对

scanf("%s")不接收空格,你是不是输入空格了?
如果是要接收空格:
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         char str[100];
  5.         int i=0,coust=0;
  6.         printf("请输入一行英文句子:");
  7.         gets(str);// 换成gets(str)就可以接收空格了
  8.         while(str[i]!='\0')
  9.         {
  10.                 if(str[i]>='A'&&str[i]<='Z')
  11.                 {
  12.                         coust++;
  13.                 }
  14.                 i++;
  15.         }
  16.         printf("你总共输入了%d个大写字母",coust);
  17.         return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-26 22:17:55 | 显示全部楼层
baige 发表于 2020-8-26 22:13
什么问题?我这边没问题,你是要可以输入空格吗?

对,就I Love FishC.com!这句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:17:57 | 显示全部楼层

那就奇怪了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:18:19 | 显示全部楼层
用gets
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:18:55 | 显示全部楼层
心之火 发表于 2020-8-26 22:16
我是用codeblocks的,不跳错,就是运行结果不对

那你用Dev-C++试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:19:34 | 显示全部楼层
昨非 发表于 2020-8-26 22:17
VS下会有scanf安全问题
““scanf”:此函数或变量可能不安全。”

我这里用Dev-C++,没有这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:20:24 | 显示全部楼层    本楼为最佳答案   
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         char str[100];
  5.         int i=0,coust=0;
  6.         printf("请输入一行英文句子:");
  7.         gets(str);// 换成gets(str)就可以接收空格了
  8.         while(str[i]!='\0')
  9.         {
  10.                 if(str[i]>='A'&&str[i]<='Z')
  11.                 {
  12.                         coust++;
  13.                 }
  14.                 i++;
  15.         }
  16.         printf("你总共输入了%d个大写字母",coust);
  17.         return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-26 22:20:36 | 显示全部楼层
baige 发表于 2020-8-26 22:17
scanf("%s")不接收空格,你是不是输入空格了?
如果是要接收空格:

可以了,大佬,那为什么scanf语句不能做到这个呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:21:41 | 显示全部楼层
心之火 发表于 2020-8-26 22:20
可以了,大佬,那为什么scanf语句不能做到这个呢?


scanf将读取并忽略空白字符(空白字符包含空格、回车和制表符);
遇到空白字符scanf就结束了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:21:55 | 显示全部楼层
心之火 发表于 2020-8-26 22:17
对,就I Love FishC.com!这句

你自己代码里判断条件是\n还敢带空格???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:22:51 | 显示全部楼层
qiuyouzhi 发表于 2020-8-26 22:19
我这里用Dev-C++,没有这个问题

不同编译器有差异很正常,我用vs习惯了,感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-26 22:22:53 | 显示全部楼层
ok了,谢谢大佬们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:23:38 | 显示全部楼层
问题解决的话就结贴吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-4 21:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表