鱼C论坛

 找回密码
 立即注册
查看: 2261|回复: 13

大一C语言考试题 求助 有会编写的大神么

[复制链接]
发表于 2019-10-17 16:36:57 | 显示全部楼层 |阅读模式

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

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

x
1.有一固定格式的字符串”+IPD,ID号,7:L-2-$ ”(双引号以内的为固定格式的字符串)。
字符串1 ”DQF124+IPD,0,7:L-2-$1234”
字符串2 ”He!#+IPD,3,7:L-2-$071231fg”
字符串3 ” Wo2019107$+IPD,5,7:L-2-$420”
请写一个函数,要求输入上述3个字符串都可以找到每个字符串里对应的ID号是多少。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-17 16:54:56 | 显示全部楼层
#include <stdio.h>
#include <string.h>

int id(const char * s)
{
        int d , k                                        ;
        for(d = 0 ; d < strlen(s) && s[d] != ',' ; d ++) ;
        sscanf(& s[d + 1] , "%d" , & k)                  ;
        return k                                         ;
}

int main(void)
{
        char s[256]                                           ;
        for(;;) {
                printf("\n")                                  ;
                printf("Input string : ")                     ;
                fgets(s , 256 , stdin)                        ;
                s[strlen(s) - 1] = '\0'                       ;
                if(strlen(s)) printf("the id = %d\n" , id(s)) ;
                else break                                    ;
        }
        printf("\n\n")                                        ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2019-10-17 17:15:12 | 显示全部楼层

谢谢 但是好难看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-17 17:22:03 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-17 17:23 编辑
BadWomen 发表于 2019-10-17 17:15
谢谢 但是好难看不懂


      只要抓住要点,一切都很简单,就像我的代码。

      ID 是一个整型数,紧挨在字符串第一个逗号之后出现,于是,先定位到这个逗号,然后,从它的后面位置开始,用 sscanf() 函数从字符串中读取一个整型数,它就是我们需要的 ID。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-17 17:22:44 | 显示全部楼层

大佬 请问有没有方法能把 输入的DQF124+IPD,0,7:L-2-$1234字符中 含有+IPD 7:L-2-$的来个字符去掉 我想知道这种方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-17 17:24:53 | 显示全部楼层
BadWomen 发表于 2019-10-17 17:22
大佬 请问有没有方法能把 输入的DQF124+IPD,0,7:L-2-$1234字符中 含有+IPD 7:L-2-$的来个字符去掉 我想知 ...


      听不懂你的表述,请用实例讲解一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-17 17:28:40 | 显示全部楼层
BadWomen 发表于 2019-10-17 17:22
大佬 请问有没有方法能把 输入的DQF124+IPD,0,7:L-2-$1234字符中 含有+IPD 7:L-2-$的来个字符去掉 我想知 ...

      好像明白了,你的意思是字符串只留下 id 把其他成份统统滤除?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-17 17:31:28 | 显示全部楼层
jackz007 发表于 2019-10-17 17:28
好像明白了,你的意思是字符串只留下 id 把其他成份统统滤除?

对的 在这串字符中 找到没带+IPD  7:L-2-$的字符 也就是ID所表达的字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-17 17:41:01 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-17 17:43 编辑
BadWomen 发表于 2019-10-17 17:31
对的 在这串字符中 找到没带+IPD  7:L-2-$的字符 也就是ID所表达的字符

#include <stdio.h>
#include <string.h>
char * filter(char * s)
{
        int d , k , m                                        ;
        for(d = 0 ; d < strlen(s) && s[d] != ',' ; d ++)     ;
        for(m = d + 1 ; m < strlen(s) && s[m] != ',' ; m ++) ;
        for(k = d + 1 ; k < m ; k ++) s[k - (d + 1)] = s[k]  ;
        s[m - (d + 1)] = '\0'                                ;
        return s                                             ;
}

int main(void)
{
        char s[256]                                               ;
        for(;;) {
                printf("\n")                                      ;
                printf("Input string : ")                         ;
                fgets(s , 256 , stdin)                            ;
                s[strlen(s) - 1] = '\0'                           ;
                if(strlen(s)) printf("the id = %s\n" , filter(s)) ;
                else break                                        ;
        }
        printf("\n\n")                                            ;
}

      你感觉和前面那个方案又有什么区别?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-17 18:45:13 | 显示全部楼层
jackz007 发表于 2019-10-17 17:41
你感觉和前面那个方案又有什么区别?

两个都可以 只是我看不懂而已 我只是想知道一个简单的代码而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-17 20:54:08 From FishC Mobile | 显示全部楼层
BadWomen 发表于 2019-10-17 18:45
两个都可以 只是我看不懂而已 我只是想知道一个简单的代码而已

      难道我写的代码不够简单?你心目中的 “简单” 代码应该长什么样?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-18 12:19:41 | 显示全部楼层
jackz007 发表于 2019-10-17 20:54
难道我写的代码不够简单?你心目中的 “简单” 代码应该长什么样?

#include <stdio.h>

int main() {
    int a;
    printf("INPUT:");
    char raw[256] , id;
    scanf("%s" , raw);

    for (a = 0; raw[a] !='\0';a++) {
        if (raw[a]==','&&raw[a + 1] !='\0' && raw[a + 2]==',') {
            id = raw[a+1];
            printf("ID: %c\n", id);
            break;
        }
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-18 17:41:08 | 显示全部楼层
jackz007 发表于 2019-10-17 17:41
你感觉和前面那个方案又有什么区别?

你的代码怎样实现的分号统一右对齐,是用的插件吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-19 21:17:50 From FishC Mobile | 显示全部楼层
海-啵啵鱼 发表于 2019-10-18 17:41
你的代码怎样实现的分号统一右对齐,是用的插件吗?

      纯人工,没办法,强迫症!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 15:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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