1.变种水仙花
描述
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
输入描述:
无
输出描述:
一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。
解题思路:
这题最主要的解题思路是如何拆分位,比如:
655=6*55+65*5;
65*5其实就是655/10 * 655%10;
6*55就是655/100 * 655%100;
1461同理;
五位数要得到最高位的话就是/10000;
这样我们就可以用循环来产生10 100 1000 10000;
#include<stdio.h>
int main()
{
int n = 0;
int i = 0;
int num = 0;
int j = 0;
for (i = 10000; i < 100000; i++)
{
int sum = 0;
//产生10 100 1000 10000
for (j = 10; j <= 10000; j *= 10)
{
num = (i / j) * (i % j);
sum += num;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
2. 小乐乐与进制转换
描述
小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:
输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一行,为正整数n表示为六进制的结果
示例1
输入:
6
复制输出:
10
解题思路:
这题主要是进制的转换;
如果我们要将十进制数字转换为六进制的话就除六模六;
比如:
6:6/6=1......0 0就是六进制中的一位;
1/6=0......1 1也是六进制的一位
六进制的6为:10
120:
120/6=20......0
20/6=3......2
3/6= 0......3
六进制的120为320;
但是我们发现我们这样算出来的好像是023,01这样从后往前打印的;
我们可以借助数组从后往前打印;
int main()
{
int n = 0;
scanf("%d", &n);
int arr[30] = { 0 };
int i = 0;
while (n)
{
arr[i] = n % 6;
i++;
n /= 6;
}
for (i--; i >= 0; i--);
{
printf("%d", arr[i]);
}
return 0;
}
3.小乐乐算多少人被请家长
描述
小乐乐的班主任想统计一下班级里一共有多少人需要被请家长,三个成绩(语文,数学,外语)平均分低于60的将被请家长,小乐乐想编程帮助班主任算一下有多少同学被叫家长。
输入描述:
共n+1行
第一行,输入一个数n,代表小乐乐的班级中有n个同学。
在接下来的n行中每行输入三个整数代表班级中一个同学的三科成绩(语文,数学,外语),用空格分隔。
输出描述:
一行,一个整数,代表班级中需要被请家长的人数。
示例1
输入:
3 80 100 90 40 70 65 20 84 93
输出:
1
解题思路:
通过循环来求每一组同学的平均分,n代表要输入几次同学的三科总成绩;
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int a, b, c;
double sum = 0;
int count = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d %d %d", &a, &b, &c);
sum = (a + b + c) / 3.0;
if (sum < 60.0)
{
count++;
}
}
printf("%d", count);
return 0;
}
5.乘法表
描述
输出九九乘法表,输出格式见样例。
输入描述:
此题没有输入
输出描述:
输出乘法表,对齐方式见样例输出
示例1
输入:
无
输出:
1*1= 1 1*2= 2 2*2= 4 1*3= 3 2*3= 6 3*3= 9 1*4= 4 2*4= 8 3*4=12 4*4=16 1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i < 10; i++) {
for (j = 1; j <= i; j++) {
int sum = i * j;
printf("%d*%d=%2d ", j, i, sum);
}
printf("\n");
}
return 0;
}
6.魔法数字变换
描述
有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1
不断重复这样的运算,经过有限步之后,一定可以得到1
牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1
输入描述:
输入一个正整数n,范围在100以内
输出描述:
输出一个整数
示例1
输入:
3
输出:
7
说明:
3->10->5->16->8->4->2->1。总共需要7步
#include <stdio.h>
int main() {
int n = 0;
int count = 0;
scanf("%d", &n);
while (1) {
count++;
if (n % 2 == 0) {
n = n / 2;
} else
n = n * 3 + 1;
if (n == 1) {
break;
}
}
printf("%d", count);
return 0;
}
7.包含数字9的数
描述
今年是2019年,KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。
输入描述:
无
输出描述:
一行,一个整数,表示1~2019中共有多少个数包含数字9。
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 2019; i++)
{
int j = 0;
int m = i;
while (m)
{
j = m % 10;
m /= 10;
if (j==9)
{
count++;
break;
}
}
}
printf("%d", count);
return 0;
}
8.奇偶统计
描述
任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出。
输入描述:
一行,一个正整数N。(1≤N≤100,000)
输出描述:
一行,1~N之间奇数的个数和偶数的个数,用空格分开。
示例1
输入:
5
输出:
3 2
#include <stdio.h>
int main() {
int N;
int count1 = 0;
int count2 = 0;
scanf("%d", &N);
if (N >= 1) {
for (int i = 1; i <= N; i++) {
if (i % 2 == 0) {
count1++;
} else
count2++;
}
}
printf("%d %d", count2,count1);
return 0;
}
9. 数位之和
描述
求一个整数的所有数位之和
输入描述:
输入一行,包含一个整数。
输出描述:
一个整数. int范围内
示例1
输入:
12
输出:
3
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int sum = 0;
while (n)
{
sum += n % 10;
n /=10;
}
printf("%d", sum);
return 0;
}