BC7 缩短二进制
printf 格式控制符 “%o” —— 八进制整数 、“%x” —— 十六进制整数 ;
修饰符 “#” —— 控制前导显示
BC64 K形图案
错因:把图形分成两部分,下半部分打印错误
先把下半部分作为一个完整三角形:
int n=0; scanf("%d",&n); int i=0; for(i=0;i<n;i++)//i=0 —— 可以打印一个完整的三角形 { int j=0; for(j=0;j<=i;j++) { printf("* "); } printf("\n"); } //将i=0 —> i=1 就可以控制从完整三角形的第二行开始打印,从而完成题目效果
BC68 X形图案
打印 n 方形的两条对角线 —— 核心思想:分析图形中元素的行列关系
int n=0; scanf("%d",&n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j || i+j==n-1) printf("*"); else printf(" "); } printf("\n"); } //行:0,1,2,... ;列:0,1,2,... //对角线上元素 行列满足: **1. i == j ; 2. i + j == n-1**
BC74 HTTP状态码
1. if 条件判断语句
2. switch 语句
BC77 有序序列插入一个数
#include<stdio.h> int main() { int n=0; scanf("%d",&n);//有序数组元素的个数 int arr[50]={0}; int i=0; for(i=0;i<n;i++)//输入有序数组 { scanf("%d",&arr[i]); } int m=0; scanf("%d",&m);//插入值 for(i=n;arr[i-1]>m;i--)//将所有比m大的元素向右移一位 arr[i]=arr[i-1]; arr[i]=m;//插入 for(i=0;i<n+1;i++) printf("%d ",arr[i]); return 0; }
BC99 序列中整数去重
两个思路:
#include<stdio.h> #define N 1000 //1.将完整数组输入后,再进行去重 int main() { int n = 0; scanf("%d", &n); int arr[N] = { 0 }; int i = 0; for (i = 0; i < n; i++) scanf("%d", &arr[i]); //去重 for (i = 0; i < n - 1; i++) { int j = 0; for (j = i + 1; j < n; j++) { if (arr[j] == arr[i]) arr[j] = 0; } } //打印 for (i = 0; i < n; i++) { if (arr[i]) printf("%d ", arr[i]); } return 0; } //2.定义arr[N] arr2[N], //arr中每输入一个值就与已经输入的值进行比较,没有重复则放入arr2 int main() { int n = 0; scanf("%d", &n); int arr[N] = { 0 }; int arr2[N] = { 0 }; int i = 0; for (i = 0; i < n; i++) { int flag = 1; scanf("%d", &arr[i]); for (int j = 0; j < i; j++) { if (arr2[j] == arr[i]) { flag = 0; break; } } if (flag == 1) arr2[i] = arr[i]; } //打印arr2 for (i = 0; i < n; i++) { if (arr2[i]) printf("%d ", arr2[i]); } return 0; }
BC117 小乐乐走台阶
//分析1,2阶台阶的走法 //1:(1) —— 1 //2:(1,1) , (2) —— 2 //n阶台阶 //第一步可以选择走1阶或2阶,则剩下n-1 或 n-2 阶 //eg: 3阶 //走1阶,剩2阶 //走2阶,剩1阶
本质上是 斐波那契数列 的变形;
#include<stdio.h> int Fib(int n) { if(n>2) return Fib(n-1)+Fib(n-2); else return n; } int main() { int n=0; scanf("%d",&n); int step=Fib(n); printf("%d\n",step); return 0; }
BC118 小乐乐与序列
题中隐藏一个重要信息:
int arr[100000]={0}; int n=0; scanf("%d",&n); for(int i=0;i<n;i++) { int tmp=0; scanf("%d",&tmp); arr[tmp]=tmp; }