记一些小程序

1.在屏幕上输出以下图案:
这里写图片描述

int main()
{
    int i, j;
    //打印上半部分
    for (i = 0; i<7; i++)
    {
        for (j = 0; j< 6 - i; j++)
            printf(" ");
        for (j = 0; j<i * 2 + 1; j++)
            printf("*");
        printf("\n");
    }
    //打印下半部分
    for (i = 0; i<6; i++)
    {
        for (j = 0; j<i + 1; j++)
            printf(" ");
        for (j = 0; j<(5 - i) * 2 + 1; j++)
            printf("*");
        printf("\n");
    }
    system("pause");
    return 0;
}

2.求出0〜999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。

int main()
{
    int i = 0;
    int a = 0;
    int b = 0;
    int c = 0;
    for (i = 0; i < 1000; i++)
    {
        a = i / 100;//得到百位
        b = i / 10 % 10;//得到十位
        c = i % 10;//得到个位
        if (a * 100 + b * 10 + c == a*a*a + b*b*b + c*c*c)
        {
            printf("%d ", i);
        }

    }

    system("pause");
    return 0;
}

这里写图片描述
3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222

int main()
{
    int a = 0;
    int n = 0;
    int tmp = 0;
    int sum = 0;
    int i = 0;
    scanf("%d %d", &a, &n);
    for (i = 0; i < n; i++)
    {
        tmp = tmp*10 + a;
        sum += tmp;
    }
    printf("%d", sum);
    system("pause");
    return 0;
}

4.编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。

分析:有以下几种情况:
这里写图片描述
因此设置一个计数器,当遇到 { 时计数器+1,遇到 } 计数器-1,只有计数器为0但第一个不是 } 时,括号才匹配正确。


int main()
{
    int ch = 0;
    int count = 0;
    while ((ch = getchar()) != EOF)
    {
        if (ch == '{')
            count++;
        else if (ch == '}'&&count == 0)
        {
            count = 1;
            break;
        }
        else if (ch == '}')
            count--;
    }
    if (count == 0)
    {
        printf("匹配\n");
    }
    else
    {
        printf("不匹配\n");
    }
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/mmwwxx123/article/details/81232382