关于整数算法题目的编程

1、题目:通过编程实现,统计1~n有多少个9 (提示:n通过参数传入int)

#include<stdio.h>

int main()
{
    int n, m;
    int i, j;
    int count=0;

    printf("输入一个n值:\n");
    scanf("%d", &n);

    for(i = 1; i <= n; i++)
    {
        m = i;        //把循环中i的值给到while中
        while(m)
        {
            j = m % 10;  //用m%10 余数来判定,若余数为9,择肯定数字中含9
            if(j == 9)
            {
                count++; //每次判断成功 count++表示加1
            }
            m = m / 10;  //当个位比较玩,就可以比较百位,依次类推。
        }
    }
    printf("共有%d个9\n", count);
    return 0;
}

2、题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位。(提示:用数组完成)

#include<stdio.h>

int main()
{
    int a[1000] = {0};
    int i, j = 0;
    int k=0;
    int n;

    printf("输入n的值:\n");
    scanf("%d", &n);

    for( i = 0; i < n; i++)
    {
        a[i] = 1;     //值1代表存在,值0代表不存在
    }
    for(i = 1; i < 4; i = i % 3 + 1)
    {
        if (i == 3 && a[j] !=0)
        {
            a[j] = 0;
            printf("%d号玩家出局\n", j+1);   //数组中序号为3倍数的人首先淘汰。
            k++;
            if(n - 1 == k)
            {
                break;
            }
            j = (j + 1) % n;     
            continue;
        }
        if ( a[j] == 0)
        {
            j = (j + 1) % n;
            i--;
            continue;
        }
        j = (j + 1) % n;
    }
    for (i = 0; i < n;i++)
    {
        if(a[i] == 1)
        {
            printf("%d号玩家留到最后\n", i+1);
        }
    }
    return 0;
}

3、题目:一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3。请编程找出1000以内的完数。

#include<stdio.h>

int main()
{
    int a;

    printf("输入1000以内的数:\n");
    scanf("%d", &a);

    int i, j, sum=0;
    for(i = 1; i <= a; i++)
    {
        for(j = 1; j < i; j++)   //j<i 所以若i%j==0;表示j是i的约数
        {   
            if(i % j == 0)
            {
                sum = sum + j;  //sum起累加作用,将约数值加起来。
            }
        }
        if( sum == i)  //判断sum与i值是否相同,若相同就输出。
        {
            printf("%d ",i);
        }
        sum = 0;
    }
    printf("\n");
    return 0;
}

今日编程遇到的注意点:

1、两行scanf()中间有时要用getchar();     //滤掉回车符

2、strlen ( )函数求字符串长度,如果字符串是用户输入的,则不能提前声明,要放在输入之后求取。

猜你喜欢

转载自blog.csdn.net/wow66lfy/article/details/81191181