函数题 2019-04-29

作业时间: 2019-04-29 15:26:00 至 2019-05-14 15:25:00

你觉得这个网站有什么值得改进的地方?点击这里!

1.按照正序输出

主要思路:

测试数据

期望输出

测试数据1

1024

1 0 2 4

测试数据2

123

1 2 3

测试数据3

1050

1 0 5 0

测试数据4

-123

1 2 3

测试数据5

102

1 0 2

参考代码

#include <stdio.h>
int main()
{
    char a[10];//定义一个字符数组
    int i, j;
    for (i = 0; i < 10; i++)//将整数每一位作为单独的字符(char)读入字符数组
    {
        scanf("%c", a + i);//作为字符读入所以要用 %c 
        if (a[i] == '\n')//如果遇到回车'\n'就代表输入完成,跳出循环
        {
            break;
        }
    }
    for (j = 0; j <= i; j++)//将每一位按照字符(char)分别打印
    {
        if (a[j] != '-')//不打印符号
        {
            printf("%c ", a[j]);//按照题目要求每个字符后都要有个空格
        }
    }
    return 0;
}

2.最大公约数和最小公倍数

测试数据

期望输出

测试数据1

65 26

130 13

测试数据2

4453 5767

351787 73

测试数据3

40 60

120 20

测试数据4

108 96

864 12

测试数据5

28 35

140 7

参考代码

#include <stdio.h>
int main() /*  使用辗转相除法求最大公约数 */
{
    int m, n, a, b, c;
    scanf("%d %d", &a, &b);
    m = a;
    n = b;
    while (b != 0) /* 余数不为0,继续相除,直到余数为0 */
    {
        c = a % b;
        a = b;
        b = c;
    }
    printf("%d %d", (m * n / a), a);
    return 0;
}

3.判断素数

测试数据

期望输出

测试数据1

17

Yes

测试数据2

101

Yes

测试数据3

130

No

测试数据4

9

No

测试数据5

169

No

参考代码

#include <stdio.h>
int main()
{
    int a = 0;   // 素数的个数
    int num = 0; // 输入的整数
    scanf("%d", &num);
    for (int i = 2; i < num; i++)
    {
        if (num % i == 0)
        {
            a++; // 素数个数加1
        }
    }
    if (a == 0)
    {
        printf("Yes");
    }
    else
    {
        printf("No");
    }
    return 0;
}

Last updated

Was this helpful?