偶尔写写代码有健脑益智的功能,且不可贪多啊,过犹不及,上瘾了就停不下来,停下了很快就会对代码越来越缺乏敏锐的阅读力和表达力,代码如写作,多看多练,自然会越来越纯熟。像写作文时常用的修辞手法,总分总的结构等等,这些都会在写代码时慢慢找到类似的感觉。
如果你认为我说的“不可贪多”是反话,请留意下你的身体还好吗,如果996的话,很危险的!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define character_len 32
#define str_len character_len+1
int input_name(char*);
int choose(int,int);
int monkey_beach(void);
int recurcive(int);
int mysql_and_innodb(void);
int echo_num(void);
int main(int argc, char** argv) {
char name[str_len] = { '\0' };
//输入姓名
//while (input_name(name))
//{
// puts("please input your name!");
//}
//choose(atoi(argv[1]), atoi(argv[2]));
//monkey_beach();
//recursive(5);
//mysql_and_innodb();
echo_num();
return 0;
}
/*
获取键盘输入的字符
*/
int input_name(char* str) {
int i = 0, asc = 0;
while (i < (str_len - 1))
{
asc = getchar();
if (asc == '\n')
{
break;
}
else
{
str[i] = asc;
i++;
}
}
if (str[0] == '\0')
{
return 1;
}
printf("%s\n", str);
return 0;
}
/*
从给定的数中,选取M个数字,它们的和等于SUM,输出下标值
*/
int choose(int M,int SUM) {
int num[] = { 8,9,3,1,6,18,5,3,15,99,9,18,1000,15,500 };
int len = sizeof(num) / sizeof(int);
int i = 0;
if (M == 1)
{
while (i < len)
{
if (num[i] == SUM) {
printf("%2d,", i);
}
i++;
}
printf("\b \n");
}
if (M == 2)
{
for (size_t i = 0; i < len; i++)
{
if (num[i] >= SUM)continue;
int another = SUM - num[i];
for (size_t j = i + 1; j < len; j++)
{
if (num[j] == another)
{
printf("%d-%d\n", i, j);
}
}
}
}
if (M == 3)
{
for (size_t i = 0; i < len; i++)
{
if (num[i] >= SUM) continue;
int another = SUM - num[i];
for (size_t j = i + 1; j < len; j++)
{
if (num[j] >= another) continue;
int end = another - num[j];
for (size_t k = j + 1; k < len; k++)
{
if (num[k] == end)
{
printf("%d-%d-%d\n", i, j, k);
}
}
}
}
}
return 0;
}
/*
猴子摘桃的小问题
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;
第二天早上将剩下的桃子吃掉一半后,又多吃了一个;以后每天早上都吃
了前一天剩下的一半,再多吃一个;到第 10 天早上想再吃时,见只剩下一
个桃子了。请编程求出猴子第一天最少摘了多少个桃子。
*/
int monkey_beach(void) {
int total_beach;
int count;
for (size_t j = 0; j < 500000; j++)
{
total_beach = j;
for ( count = 1; count < 10; count++)
{
total_beach = total_beach - (total_beach / 2 + 1);
}
if (total_beach == 1)
{
printf("%d\n", j);
break;
}
}
return 0;
}
/*
做一个简单的递归
对递归有更详细的介绍:http://c.biancheng.net/view/1861.html
递归除了尾递归,还有中间递归和多层递归,这些写法都比较烧脑。另外,递归作为一种
编程技巧,也是有缺陷的,使用递归会带来时间和空间的巨大代价。
*/
int recursive(int a) {
if (a==0)
{
return 0;
}
else
{
printf("%d\n", a);
return recursive(--a);
}
}
/*
mysql && innodb 优化的层次关系
*/
typedef struct _point_variables_url
{
char id[16];
char name[64];
char variable[64];
char url[128];
}point_variables_url;
int mysql_and_innodb(void) {
point_variables_url mai[1024];
strcpy(mai[0].id, "01");
strcpy(mai[0].name,"introduction_to_innodb");
strcpy(mai[0].url, "https://dev.mysql.com/doc/refman/8.0/en/innodb-introduction.html");
printf("%s,%s,%s,%s", mai[0].id, mai[0].name, mai[0].url, mai[0].variable);
return 0;
}
/*输出1-31的数字,奇数和偶数分开显示*/
int echo_num() {
int a = 1;
for (size_t i = 1; i < 32; i++)
{
if (i%2==0)
{
printf("%d,", i);
}
}
printf("\b \n"); //去掉行末尾的逗号
for (size_t i = 1; i < 32; i++)
{
if (i % 2 == 1)
{
printf("%d,", i);
}
}
printf("\b \n"); //去掉行末尾的逗号
return 0;
}