// 1. 四舍五入
#include "stdio.h"
int main()
{
    float fd;
    scanf("%f", &fd);
    int id = (int)(fd + 0.5f);

    printf("%f 四舍五入 = %d", fd, id);
    return 0;
}

// 2. 反序
#include "stdio.h"
int main()
{
    int d, t;
    scanf("%d", &d);
    printf("%g 反序 =", d);
    while (d != 0 && ((d % 10) == 0)) d/=10;
    do{
        printf("%d", d % 10);
    }while (d /= 10);
    return 0;
}

// 3. 字母 ascii
#include "stdio.h"
#include "conio.h"
int main()
{
    char ch = getch();
    printf("%c ascii = %d", ch, (int)ch);
    return 0;
}

// 4. 平均成绩
#include "stdio.h"
int main()
{
    float d1, d2, d3;
    scanf("%f,%f,%f", &d1, &d2, &d3);
    printf("平均成绩 = %.2f", (d1+d2+d3)/3.f);
    return 0;
}

// 5. 分区间计算y
#include "stdio.h"
int main()
{
    float x, y;
    scanf("%f", &x);
    if (-10 < x && x < 0){ y = x + 10; }
    else if (0 <= x && x < 10) { y = 2 * x; }
    else { y = x* x; }
    printf("y = %f", y);
    return 0;
}

// 6. 成绩评定
#include "stdio.h"
int main()
{
    int x;
    scanf("%d", &x);

    char res;
    switch (x / 10)
    {
    case 10: 
    case 9: res = 'A'; break;
    case 8: res = 'B'; break;
    case 7: res = 'C'; break;
    case 6: res = 'D'; break;
    default:res = 'E'; break;
    }

    printf("x = %c", res);
    return 0;
}

// 7. 最10个数中的最大值
#include "stdio.h"
int main()
{
    int a[10], max, i;
    for (i = 0; i < 10; ++i){
        scanf("%d", &a[i]);
    }

    max = a[0];
    for (i = 1; i < 10; ++i){
        if (max < a[i]){
            max = a[i];
        }
    }
    printf("max = %d\n", max);
    return 0;
}

// 8. 输出金字塔
#include <stdio.h>
int main()
{
    int i, j, k, n = 5;
    for (i = 0; i < n; i++)
    {
        for (j = 1; j < n - i; j++)
            printf(" ");
        for (k = 0; k < i + 1; k++)
            printf("%d", k + 1);
        for (k = i; k--;)
            printf("%d", k + 1);
        printf("\n");
    }
    return 0;
}

// 9. 数组插入
#include <stdio.h>
int main(){
    int i, j, num;
    int a[10] = { 2, 4, 6, 8, 10 };
    printf("数组为:");
    for (i = 0; i < 5; i++)
        printf("%4d", a[i]);
    printf("\n输入一个数:");
    scanf("%d", &num);
    for (i = 0; i < 6; i++){
        if (num < a[i])
            break;
    }
    for (j = 5; j > i; j--){
        a[j] = a[j - 1];
    }
    a[j] = num;
    printf("结果为:");
    for (i = 0; i < 6; i++)
        printf("%4d", a[i]);
    return 0;
}

// 10. 偶数字符串
#include <stdio.h>
int main()
{
    int i, j;
    char s[100] = {}, d[100] = {};
    printf("输入字符串:");
    gets(s);
    for (i = 0, j = 0; s[i]; i++){
        if ((s[i] % 2) == 0) d[j++] = s[i];
    }
    printf("结果为:%s", d);
    return 0;
}

// 11. 各位数求和
#include "stdio.h"
int fun(int x)
{
    int r = 0;
    do{
        r += x % 10;
    } while (x /= 10);
    return r;
}
int main()
{
    int d;
    printf("输入整数:");
    scanf("%d", &d);
    printf("%d 求和 = %d", d, fun(d));
    return 0;
}


// 13. 交换最大最小数
#include "stdio.h"
void fun1(int* x)
{
    int i;
    printf("输入10个整数:");
    for (i = 0; i < 10; ++i){
        scanf("%d", &x[i]);
    }
}
void fun2(int* x)
{
    int i;
    int *minp = x;
    int *maxp = x;
    for (i = 0; i < 10; ++i){
        if (*minp > x[i]) minp = x + i;
        if (*maxp < x[i]) maxp = x + i;
    }
    int temp = *minp; *minp = x[0]; x[0] = temp;
    temp = *maxp; *maxp = x[9]; x[9] = temp;
}
void fun3(int* x)
{
    int i;
    printf("结果为:");
    for (i = 0; i < 10; i++)
        printf("%4d", x[i]);
}
int main()
{
    int d[10];
    fun1(d);
    fun2(d);
    fun3(d);
    return 0;
}


// 14. 围圈报数
#include<stdio.h>
int baoshu3(int* p, int n)
{
    int m = n;
    for (int i = 0; i < n; ++i) {
        *(p + i) = i + 1;
    }
    for (int i = 0, k = 1; m > 1; ++i) {
        if (*(p + i) != 0) {
            k += 1;
            if (k == 4) {
                k = 1;
                *(p + i) = 0;
                m -= 1;
            }
        }

        if (i == n - 1) {
            i = -1;
        }
    }
    for (int i = 0; i < n; ++i) {
        if (*(p + i) != 0) {
            return *(p + i);
        }
    }
    return -1;
}

int main() {
    int n; int d[300];
    printf("请输入人数n: ");
    scanf("%d", &n);
    printf("最后留下的是%d号\n", baoshu3(d, n));
    return 0;
}