#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//打印箭形图案
//int main()
//{
// int i = 0;
// scanf("%d", &i);
// int r = 0;
// int m = 0;
// //先打印上半部分
// for (r = 0;r<i+1;r++)
// {
// for (m =2*i-2*r;m > 0;m--)
// {
// printf(" ");
// }
// for (m = r + 1;m > 0;m--)
// {
// printf("* ");
// }
// printf("\n");
// }
// //在打印下半部分
// for (r = 0;r<i;r++)
// {
// for (m = (r+1) * 2;m > 0;m--)
// {
// printf(" ");
// }
// for (m=i-r;m>0;m--)
// {
// printf("* ");
// }
// printf("\n");
// }
// return 0;
//}
//公务员面试
//输入7个整数,去除最高分和最低分求平均分
//int max(int* arr)
//{
// int max = arr[0];
// int i = 0;
// for (i = 0;i < 6;i++)
// {
// if (max < arr[i + 1])
// {
// max = arr[i + 1];
// }
// }
// return max;
//}
//int min(int* arr)
//{
// int min = arr[0];
// int i = 0;
// for (i = 0;i < 6;i++)
// {
// if (min > arr[i + 1])
// {
// min = arr[i + 1];
// }
// }
// return min;
//}
//
//int main()
//{
// int a = 0;
// int b = 0;
// int c = 0;
// int d = 0;
// int e = 0;
// int f = 0;
// int g = 0;
// scanf("%d %d %d %d %d %d %d", &a, &b, &c, &d, &e, &f, &g);
// int arr[] = { a,b,c,d,e,f,g };
// int Max = max(arr);
// int Min = min(arr);
// float fal = (a + b + c + d + d + f + g - Max - Min) / 5.0;
// printf("%.2lf", fal);
// return 0;
//}
//模拟实现atoi
// int atoi (const char* str);
// 将字符串转换为一个整型
//
//#include <stdlib.h>
//int main()
//{
// char arr[20] = "123456";
// int ret = atoi(arr);
// printf("%d\n", ret);
// return 0;
//}
//模拟实现
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <limits.h>
//空指针
// 空字符串
// 跳过空格
// +-
// 越界
// 非数字字符停止
//
//enum Status
//{
// valid,
// invalid
//}sta = invalid;//默认非法
//int my_atoi(const char* str)
//{
// assert(str);
// int flag = 1;
// while (*str == ' ')
// {
// str++;
// }
// if (*str == "-")
// {
// flag = -1;
// str++;
// }
//
// long long ret = 0;
// while (*str)
// {
// if (isdigit(*str))
// {
// ret = ret * 10 + (*str - '0');
// if (ret > INT_MAX || ret < INT_MIN)
// {
// return 0;
// }
// }
// else
// {
// return ret;
// }
// str++;
// }
// if(*str == '\0')
// sta = valid;
// return (int)ret;
//
//}
//int main()
//{
// char arr[] = " -123456";
// int ret = my_atoi(&arr);
// if (sta == invalid)
// {
// printf("非法返回:%d", ret);
// }
// else
// {
// printf("合法返回:%d", ret);
//
// }
// return 0;
//}
//文件的后缀名决定了一个文件的默认打开方式
// 文件名中有禁止使用的字符
// 文件名中不一定包含后缀名
// 文件路径指的是从盘符到文件所经历的路径中各符号名的集合
//
// getchar只适用于键盘,是适用于标准输入流的
// sscanf是从字符串中读取格式化的数据
// sprintf是将格式化的数据写入字符串中
//
//写一个宏,可以将一个整数的二进制奇数位和偶数位互换
//#define swap(a) a = (((a&0xaaaaaaaa)>>1)+((a&0x55555555)<<1))
//int main()
//{
// int a = 0;
// scanf("%d", &a);
// swap(a);
// printf("%d", a);
// return 0;
//}
//实现一个函数,将字符串中的空格都变为%20
//void replace(char* arr,int len)
//{
// //先数字符串中空格的个数
// char* str = arr;
// int space = 0;
// while (*str != '\0')
// {
// if (*str == ' ')
// {
// space++;
// }
// str++;
// }
// //对字符串进行移动,并插入
// int end1 = len - 1;
// int end2 = len + space * 2 - 1;
// *(arr + end2 + 1) = '\0';
// while (end1 != end2)
// {
// if (*(arr + end1) != ' ')
// {
// *(arr + end2--) = *(arr + end1--);
// }
// else
// {
// end1--;
// *(arr + end2--) = '0';
// *(arr + end2--) = '2';
// *(arr + end2--) = '%';
//
// }
// }
// return;
//}
//int main()
//{
// char arr[] = "My name is Wangjiale.";
// int len = strlen(arr);
// replace(arr,len);
// printf("%s", arr);
// return 0;
//}