目录

  1. 打印图案
    1. 等腰三角形之字母扩展
    2. 空心菱形 方法一:两个等腰三角形拼接
    3. 空心菱形 方法二:对角线相等
    4. 杨辉三角
    5. 螺旋矩阵
    6. 蛇形矩阵 1
    7. 蛇形矩阵 2
  2. 趣味习题
    1. 打印某年某月日历排版
    2. 找出最长的单词
    3. 颠倒一串英文句子
    4. 颠倒一串英文句子 Java版本
    5. 生成不重复的随机数
    6. 统计班级成绩排名 Java 版本
    7. 统计班级成绩排名 C 版本
    8. 报数 123,报数 3 的童鞋退出,最后留下的是哪个同学。 Java 版本
    9. 报数 123,报数 3 的童鞋退出,最后留下的是哪个同学。 C 语言版本
    10. 模拟对象层级树结构
  3. 基础排序
    1. 插入排序
    2. 选择排序
    3. 冒泡排序
    4. 快速排序
    5. 二分法查找
  4. Json 格式的校验
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <string.h>

void countWords(){

char str[100] = "hello, my name is gaogaoProgramer, welcome to come here!";
int index;
long len = strlen(str);
int spaceIndex = 0; //从第一个下标开始算
int recordMax = 0; //单词空格之间下标最大差即为最长单词
int beforeIndex = 0,afterIndex = 0; //定义最长单词的前空格,后空格
for(index = 0; index < len; index++){
if(str[index] == 32){ //判断空格
if(index - spaceIndex > recordMax){
recordMax = index - spaceIndex;

//记录前下标和后下标。
beforeIndex = spaceIndex;
afterIndex = index;
}
spaceIndex = index;
}
}

printf("原始单词为:%s",str);
printf("\n单词空格之间下标最大差:%d 前下标:%d,后下标:%d",recordMax,beforeIndex,afterIndex);

//输出找到的单词;
printf("\n\n找到的最长度单词为:");
int charIndex;
for(charIndex = beforeIndex; charIndex< afterIndex ; charIndex++){
printf("%c",str[charIndex]);
}
}

图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#define len 9
void luoxuan(){
int arr[len][len];
//开始初始化,给数组赋值0
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
arr[i][j] = 0;
}
}

arr[0][0] = 1; //顶角确定了,我们可以算出第一行右边的数字
int circleTimes = len/2 + 1;
int circelIndex = 0; //圈的数量
//赋值过程
while(circleTimes>0){ //测试时候,每一圈结束可以打印出看一下:&& circelIndex <1
circelIndex ++;
printf("第%d圈\n",circelIndex);
for(int column = 1;column <= len-circelIndex; column++){ //往右排列
if(column >= circelIndex-1){
arr[circelIndex-1][column] = arr[circelIndex -1][column-1] + 1;
}
}

for(int row = circelIndex; row<= len-circelIndex; row++){ //往下排列,从第二行,第X-i 列开始
arr[row][len-circelIndex] = arr[row-1][len-circelIndex] + 1;
}

for(int column = len-circelIndex-1; column >= circelIndex-1; column--){ //往左排,下标递减1,值为后一个 + 1
arr[len-circelIndex][column] = arr[len-circelIndex][column+1] + 1;
}

for(int row =len-circelIndex-1; row > circelIndex-1; row--){ //往上排列
arr[row][circelIndex-1] = arr[row+1][circelIndex-1] + 1;
}

circleTimes--;
}

//输出二维数组
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
printf("%d\t",arr[i][j]);
}
printf("\n\n");
}
}