问题1:代码优化
对于上篇文章的具体代码,作为刚入坑的小白来说或许一时间无法立刻明白这段代码的含义,那么有没有更加简单的表达形式,答案是肯定的,如果你是使用的python,大可以使用split()函数,可是C语言不允许我们耍滑,所以我们就需要找出类似于“[1,2,3,4,5,32]”这类数据的规律。
在这之前可以先回顾上篇的代码。(这段非当本篇代码,如果想要跳过,可以忽略问题1直接进入问题2)
问题2:规律查找
对输入“[1,2,3,4,6,8,9,10]”这种输入形式,我们可以假设'[' 不存在,那么剩下的数据便是“1,2,3,4,6,8,9,10]” ,每两个数据为一组可以发现“1,”,“2,”.......“10]”为一组。
即:一个整形和一个字符型为一组,最开始的第一个字符“[”单独处理。
那么我们现在理清代码流程,首先分别声明一个整型变量和一个字符型变量,分别为c, num。
然后声明一个整型数组arr[100],和一个下标i初始化为0。定义一个while循环结构,在循环外使用一个scanf(),将第一个字符“[”处理掉,然后在循环内部每次循环都将num,c赋值,将num赋值给arr[i]并且i自增1,并检查c是否为‘]’,如果是则退出循环,否则继续。
问题三:具体代码
#include<stdio.h>
int main(void)
{
char c;
int num;
int arr[100];
scanf("%c", &c);
int i = 0;
while (scanf("%d%c", &num, &c))
{
arr[i] = num;//与下面一句i++;可以合并为arr[i++];意思为复制完成后再自增1。
i++;
if (c == ']')
break;
}
for (int j = 0; j < i; j++)
printf("%d ", arr[j]);//输出验证。
return 0;
}
问题四:可能存在的疑问。
与上一章的代码不同,这一章的优化代码十分简洁,甚至都不需要注释,唯一的问题可能就是既然方式可以如此简单,那么上一章的代码是不是就没有思考的必要,实则不然,第一篇虽然麻烦些,但是可以锻炼个人的思维,尤其是如何在字符串中提取两位数及其以上的数字那一段对于小白来说值得思考一下为什么那么做。
理念:
博主实际上也是大一的时候才开始接触编程,如今仍然是个大学生,记得曾经的自己连IDE也不会安装,一个“hello,world”就是一下午,后来遇到了很好的学长,老师,能够在我有困难的时候给予帮助,能力得到了很大的提升,回首往路发现一群人才能走得更远。
最后说明本账号的初衷是尽量能用简洁明了的“人话”就绝对不用对新手不友好的术语来传播自己掌握的浅薄知识,而且会不定时发布一些简单中档题的解法和具体代码与图解来帮助刚入门同学们理解什么是算法,如何做题。
注释:博主在码字的过程中可能会出现错字的情况,不过具体代码都是运行成功后复制而来的,所以代码一般不会有什么问题,