思维导图
输入一个年份,判断是否是润年
用C语言实现atoi(const char *nptr)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[128] = ""; // 声明一个字符数组,用于存储用户输入的字符串,假设最大长度为128
printf("请输入字符串:"); // 提示用户输入字符串
gets(str);
int i = 0; // 初始化一个计数器,用于遍历字符串
// 跳过输入字符串中的前导空格
while (*(str+i)==' ')
{
i++;
}
int k = i; // 记录数字可能开始的位置(跳过空格后),可能是符号的位置,也可能是数字的开始位置
// 检查是否存在前导的 '+' 或 '-' 符号
if (*(str+i)=='+' || *(str+i)=='-')
{
i++; // 移动到符号后的下一个字符
}
int num = 0; // 初始化一个变量,用于存储解析后的整数值
// 解析数字字符('0' 到 '9' 之间的有效字符),并且不是字符串结束符'\0'
while (*(str+i)>='0' && *(str+i)<='9' && *(str+i)!='\0')
{
// 将字符数字转换为整数,并累加以形成最终的数字
num = num * 10 + (*(str+i) - '0');
i++; // 移动到下一个字符
}
// 判断前面检测到的数字开始处,第一个是不是符号,+号不管,-号则取反
if (*(str+k)=='-')
{
num = -num; // 如果数字是负数,则取其相反数
}
// 打印解析出的整数
printf("解析后的数字为:%d\n", num);
return 0; // 程序正常退出
}