首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NOIP 2018普及组复赛第1题答案详解

NOIP 2018普及组复赛第1题答案详解

作者头像
海天一树
发布2018-12-17 14:48:43
1.5K0
发布2018-12-17 14:48:43
举报
文章被收录于专栏:海天一树海天一树海天一树

NOIP 2018普及组复赛第1题.jpg

一、C程序

解法一:用gets()函数

#include <stdio.h>
#include <string.h>

int main()
{
    // 将控制台的数据重定向到文件里
    freopen("title.in", "r", stdin);
    freopen("title.out", "w", stdout);

    char s[100];
    gets(s);
    int total = 0;
    printf("%d\n", sizeof(s));

    // 这里只能用strlen,不能用sizeof
    // 因为sizeof(s)=sizeof(s)/sizeof(char)=100
    for(int i = 0; i < strlen(s); i++)
    {
        if(s[i] != ' ')
        {
            total++;
        }
    }

    printf("%d", total);
    return 0;
}

解法二:用scanf()函数

#include <stdio.h>
#include <string.h>

int main()
{
    // 将控制台的数据重定向到文件里
    freopen("title.in", "r", stdin);
    freopen("title.out", "w", stdout);

    char s[100];
    // 不能使用scanf("%s",s);因为遇到第一个空格就会结束
    // 符号^表示取反,[^\n]表示除了换行符,其他的字符都可以读取
    scanf("%[^\n]", s);
    int total = 0;

    // 这里只能用strlen,不能用sizeof
    // 因为sizeof(s)=sizeof(s)/sizeof(char)=100
    for(int i = 0; i < strlen(s); i++)
    {
        if(s[i] != ' ')
        {
            total++;
        }
    }

    printf("%d", total);
    return 0;
}

二、C++程序

#include <iostream>
#include <stdio.h>  // freopen和stdin、stdout要用到此头文件
using namespace std;

int main()
{
    // 将控制台的数据重定向到文件里
    freopen("title.in", "r", stdin);
    freopen("title.out", "w", stdout);

    string s;
    getline(cin, s);
    int total = s.length();
    // for循环里面的s.length()不要写成total,因为total是不断减小的
    for(int i = 0; i < s.length(); i++)
    {
        if(s[i] == ' ')
        {
            total--;
        }
    }

    cout << total << endl;
    return 0;
}

三、总结

本题考察的知识点有两个: (1)输入带空格的字符串 常用的scanf和cin,遇到第一个空格就会停止输入。 C语言可以使用gets()输入带空格的字符串。当然使用scanf(“%[^\n]”, s)也可以。 C++可以使用getline()输入带空格的字符串

(2)求字符串的长度 C语言的字符数组可以使用strlen(s); C++的string可以使用s.length()或s.size()。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 KidsCode少儿编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、C程序
    • 解法一:用gets()函数
      • 解法二:用scanf()函数
      • 二、C++程序
      • 三、总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档