我从简单到难,一起走上漫漫刷题路!
我会持续在我的博客中更新我每天刷题的内容!
相互交流!
大家一键三连,多多关注!
这是今天我给大家带来的题!以后难度逐渐加深!
1.杨辉三角
描述
KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
输入描述:
第一行包含一个整数数n。 (1≤n≤30)
输出描述:
包含n行,为杨辉三角的前n行,每个数输出域宽为5。
#include<stdio.h>
int main() {
int num = 0, arr[30][30] = {0};
scanf("%d", &num);
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
if (i >= j) {
if (j == 0 || i == j)
arr[i][j] = 1;
else
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
if (arr[i][j] != 0)
printf("%5d", arr[i][j]);
}
printf("\n");
}
return 0;
}
2.井字棋
描述
KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
输入描述:
三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。
输出描述:
如果KiKi获胜,输出“KiKi wins!”;
如果BoBo获胜,输出“BoBo wins!”;
如果没有获胜,输出“No winner!”。
#include<stdio.h>
int main() {
int i, j, k, flag = 0;
char a[3][3];
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf(" %c", &a[i][j]);
}
}
for (j = 0; j < 3; j++) {
if (a[j][0] == 'K' && a[j][1] == 'K' && a[j][2] == 'K') {
printf("KiKi wins!");
flag = 1;
break;
}
if (a[0][j] == 'K' && a[1][j] == 'K' && a[2][j] == 'K') {
printf("KiKi wins!");
flag = 1;
break;
}
if (a[0][0] == 'K' && a[1][1] == 'K' && a[2][2] == 'K') {
printf("KiKi wins!");
flag = 1;
break;
}
if (a[0][2] == 'K' && a[1][1] == 'K' && a[2][0] == 'K') {
printf("KiKi wins!");
flag = 1;
break;
}
if (a[j][0] == 'B' && a[j][1] == 'B' && a[j][2] == 'B') {
printf("BoBo wins!");
flag = 1;
break;
}
if (a[0][j] == 'B' && a[1][j] == 'B' && a[2][j] == 'B') {
printf("BoBo wins!");
flag = 1;
break;
}
if (a[0][0] == 'B' && a[1][1] == 'B' && a[2][2] == 'B') {
printf("BoBo wins!");
flag = 1;
break;
}
if (a[0][2] == 'B' && a[1][1] == 'B' && a[2][0] == 'B') {
printf("BoBo wins!");
flag = 1;
break;
}
}
if (flag == 0) {
printf("No winner!");
}
return 0;
}
3.小乐乐与进制转换
描述
小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:
输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一行,为正整数n表示为六进制的结果
#include <stdio.h>
int main() {
long n, arr[10], i = 0, sum = 0;
while (scanf("%ld", &n) != EOF) {
while (n) {
arr[i] = n % 6;
n /= 6;
i++;
}
for (int j = i - 1; j >= 0; j--) {
printf("%ld", arr[j]);
}
}
return 0;
}
4.小乐乐求和
描述
小乐乐最近接触了求和符号Σ,他想计算
的结果。但是小乐乐很笨,请你帮助他解答。
输入描述:
输入一个正整数n (1 ≤ n ≤ 10)
输出描述:
输出一个值,为求和结果。
#include <stdio.h>
int main() {
int n=0,m=0;
long sum=0;
scanf("%d",&n);
for(m=1;m<=n;m++)
{
sum+=m;
}
printf("%ld",sum);
return 0;
}
5.小乐乐与欧几里得
描述
小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。
输入描述:
每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)
输出描述:
对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。
#include<stdio.h>
int main() {
long long a = 0;
long long b = 0;
scanf("%d %d", &a, &b);
long long sum = 1;
long long n = a * b;
while (sum = a % b) {
a = b;
b = sum;
}
long long m = n / b;
printf("%lld\n", m + b);
return 0;
}
6.小乐乐改数字
描述
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
#include <stdio.h>
int main() {
int a, b = 1, sum = 0;
scanf("%d", &a);
while (a / b != 0) {
sum += (a % (10 * b) / b) % 2 * b;
b *= 10;
}
printf("%d\n", sum);
return 0;
}
7.小乐乐走台阶
描述
小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
输入描述:
输入包含一个整数n (1 ≤ n ≤ 30)
输出描述:
输出一个整数,即小乐乐可以走的方法数。
#include<stdio.h>
int num(int n) {
if (n > 1) {
if (n - 2 > 0) {
return num(n - 1) + num(n - 2);
} else
return 2;
} else
return 1;
}
int main() {
int n = 0;
scanf("%d", &n);
int ret = num(n);
printf("%d", ret);
return 0;
}
8.小乐乐与序列
描述
老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。
输入描述:
第一行包含一个正整数n,表示老师给出的序列有n个数。接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 105,1 ≤ k ≤ n)
输出描述:
输出一行,为去重排序后的序列,每个数后面有一个空格。
#include <stdio.h>
int main() {
int n = 0;
int arr[100000] = {0};
int i = 0;
int tmp = 0;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &tmp);
arr[tmp] = tmp;
}
for (i = 0; i < n; i++) {
if (arr[i] != 0)
printf("%d ", arr[i]);
}
return 0;
}