标题:截取字符问题,求指教。
只看楼主
祁建邵
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:10
注 册:2020-10-15
结帖率:100%
已结贴  问题点数:20 回复次数:12 
截取字符问题,求指教。
小孟很聪明,但是很偷懒。他打数字从来不用空格,因此相邻的几个数都会连在一起。
比如,小孟想打三个数123 98 -8921,他会打成12398-8921。
今天,小孟妈妈让他记几组整数,可是小孟打下来的数字又连在一起了。
不过小孟记得每组数据都有三个数,前两个数字都是正数,其中第一个数字有3位,第二个数字有2位,
第三个数字是负数,连同负号一共有5位。

你能帮帮小孟么?
上面是题目,我真的不会了。老师说要字符串变成整数,大佬么救救我。
搜索更多相关主题的帖子: 字符 数字 截取 整数 个数 
2020-10-21 20:53
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:2 
回复 楼主 祁建邵
先给你一个思路:将那一组全部置于一个字符数组
然后,用循环语句截取,或者直接用字符截取函数 strncpy() 其头函数是 string.h 也可以,你哪个离就用哪个
转为数字也有函数可用,atoi():就是将字符串转换为整型值,int atoi(char,str[ ])一条语句就搞定
我直接给你程序不利于你学习提高,你先自己写程序。若不行的话,晚些时候,我再给你一个程序

[此贴子已经被作者于2020-10-21 21:29编辑过]

2020-10-21 21:20
祁建邵
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:10
注 册:2020-10-15
得分:0 
回复 2楼 风过无痕1989
好的哥,我去试试。知道的还是太少了,唉。
2020-10-21 22:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
上面是题目
这就是题目啦,怎么连输入输出的说明都没有?

程序代码:
#include <stdio.h>

int main( void )
{
    for( int a,b,c; scanf("%3d%2d%5d",&a,&b,&c)==3; )
        printf( "%d %d %d\n", a, b, c );
}
2020-10-21 22:41
祁建邵
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:10
注 册:2020-10-15
得分:0 
输入;12345-1234
输出;123 45 -1234
2020-10-21 22:48
祁建邵
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:10
注 册:2020-10-15
得分:0 
回复 4楼 rjsp
输入;12345-1234
输出;123 45 -1234
2020-10-21 22:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用祁建邵在2020-10-21 22:50:26的发言:

输入;12345-1234
输出;123 45 -1234

只要一组数据的话,那将我给你的代码中的for()删除掉
2020-10-21 23:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
不对呀,你给的题目明明说
小孟妈妈让他记几组整数
2020-10-21 23:45
祁建邵
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:10
注 册:2020-10-15
得分:0 
回复 8楼 rjsp
哥,他计数不加空格。所以就记成一串数字了。然后让写编程还
2020-10-22 00:43
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:10 
回复 楼主 祁建邵
程序代码:
// 将12398-8921截取为三组数,第一个数字3位,第二个数字2位,第三个数字是负数,连同负号一共有5位。

#include<stdio.h>
#include <stdlib.h>
int main(void)
{
    int i,num1,num2,num3;
    char str1[4] = {' '};   // 声明时多一个,存放结束符,避免出乱码(下同),因为利用循环切割字符时,并不会自动加结束符。
    char str2[3] = {' '};
    char str3[6] = {' '};
/*    char str[10] = "12398-8921";   */
    char str[10] = {' '};   // 此语句及下面的循环输入,与上一条被注释掉的语句可互相替换
    for(i = 0;i < 10;i++)
    {
        scanf("%c",&str[i]);
    }

    for(i = 0;i < 3;i++)    // 截取第1组字符
    {
        str1[i] = str[i];
        str1[4] = '\0';
    }
    for(i = 3;i < 5;i++)    // 截取第2组字符
    {
        str2[i - 3] = str[i];
        str2[3] = '\0';
    }
    for(i = 5;i < 10;i++)    // 截取第3组字符
    {
        str3[i - 5] = str[i];
        str3[6] = '\0';
    }
    num1 = atoi(str1);       // 将字符转换为数字
    num2 = atoi(str2);
    num3 = atoi(str3);

    printf("第一个数字是:%d \n",num1);
    printf("第二个数字是:%d \n",num2);
    printf("第三个数字是:%d \n",num3);
}
2020-10-22 01:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503573-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.301369 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved