函数题 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?