引言
针对初学者,每日练习几个题,快速上手C语言。第七天。(连续更新中)
采用在线OJ的形式
什么是在线OJ?
在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统,也可以用于平时的练习。
详细内容可以看一下这篇博客:关于C/C++语言的初学者在哪刷题,怎么刷题-CSDN博客https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
建议从第一天开始做,前面讲了的知识点后面只是会提一下。有不懂的写再评论区里
今天的题目都是一些找规律题,说实话,不是很好做,耐住性子找规律,可以锻炼代码能力
1.翻转金字塔图案
点进去直接做题:翻转金字塔图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/c4775776e4464537bfb6a5ba37c596c6?tpId=107&&tqId=33343&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>//代码一: 比较难想,尽量想一下
#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;for (i = 0; i < n; i++){//一行int j = 0;for (j = 0; j < i; j++){printf(" ");}for (j = 0; j < n - i; j++){printf("* ");}printf("\n");}}return 0;
}
//代码二:
int main() {int a,b,c;while (scanf("%d", &a) != EOF){for(b=a;b>0;b--){c=a-b;while(c>0){printf(" ");c--;}while(c<b){printf("* ");c++;}printf("\n");}}return 0;
}
解析:
1. 多组输入
2. 控制好行数,控制好每一行前面的空格数
3.一定要亲自敲出来,先找出规律再敲
2.菱形图案
点进去直接做题:菱形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/8b935f8ffe99445dbd42494febd13e45?tpId=107&&tqId=33344&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;//上for (i = 0; i < n; i++){//一行int j = 0;for (j = 0; j < n - i; j++){printf(" ");}for (j = 0; j <= i; j++){printf("* ");}printf("\n");}//下for (i = 0; i <= n; i++){//一行int j = 0;for (j = 0; j < i; j++){printf(" ");}for (j = 0; j <= n - i; j++){printf("* ");}printf("\n");}}return 0;
}
解析:
1. 首先把菱形的打印分为上下2个部分
2. 上下分别控制好行数和空格的个数
3. 多组输入
4. 一定要把规律想明白,自己把代码敲出来
3.K形图案
点进去直接做题:
K形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/753cc2662d9949fe826a85f815db0ca4?tpId=107&&tqId=33345&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main() {int n = 0;while (scanf("%d", &n) != EOF) {//上一半for (int i = n+1; i>0; i--) {for (int j = i; j>0; j--) {printf("* ");}printf("\n");}//下一半for (int i = 1; i <= n; i++) {for (int j = 0; j <= i; j++) {printf("* ");}printf("\n");}}return 0;
}
解析:
1. 多行输入
2. 图形的打印分为上下2个部分
4.反斜线形图案
点进去直接做题:
反斜线形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/7b066963c4eb4d188becd18c37dfe22d?tpId=107&&tqId=33347&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
int main(){int i;while(~scanf(" %d",&i)){//多组输入for(int j=0;j<i;j++){//行for(int k=0;k<j;k++)//每一行需要输入的空格数printf(" ");printf("*\n");//最后输入*,换行。}}return 0;
}
解析:看代码注释来理解
5.反斜线形图案
点进去直接做题:
反斜线形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/7b066963c4eb4d188becd18c37dfe22d?tpId=107&&tqId=33347&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
int main(){int i;while(~scanf(" %d",&i)){ //多组输入for(int j=0;j<i;j++){ //行for(int k=0;k<j;k++)//每一行需要输入的空格数printf(" ");printf("*\n");//最后输入*,换行。}}return 0;
}
解析:看代码注释
6.正斜线形图案
点进去直接做题:正斜线形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/61ef68d129534dfbb04b232e1244e447?tpId=107&&tqId=33348&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
int main()
{int n;int i,j;while(~scanf("%d", &n)){for(i=0;i<n;++i){for(j=i+1;j<n;++j){printf(" ");}printf("*\n");}}return 0;
}
解析:找规律
7.X形图案
点进去直接做题:
X形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/83d6afe3018e44539c51265165806ee4?tpId=107&&tqId=33349&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
int main()
{int n = 0;while(~scanf("%d",&n)){//n*n的数组,对角线初始化为*,其余初始化为‘ ’,最后打印这个二维数组char arr[20][20];int i = 0,j = 0;for(i = 0;i<n;i++){for(j = 0;j<n;j++){//主对角线if(i==j){arr[i][j] = '*';}//反对角线else if((i+j)==(n-1)){arr[i][j] ='*';}else{arr[i][j]=' ';}printf("%c",arr[i][j]);}printf("\n");}}return 0;
}
解析:找规律
8.空心正方形图案
点进去直接做题:
空心正方形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/72347ee949dc47399186ee183632f303?tpId=107&&tqId=33350&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main()
{int n = 0;while(scanf("%d", &n) != EOF){for(int i=0; i<n; i++) //外循环为行{for(int j=0; j<n; j++) //内循环为列{if(i==0||i==n-1||j==0||j==n-1)//找规律printf("* ");elseprintf(" ");}printf("\n");}}
}
解析:找规律
9.空心三角形图案
点进去直接做题:
空心三角形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/2ccc5fca423e47f0b622fe6f151cfab4?tpId=107&&tqId=33351&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main()
{int num,i,j;while(scanf("%d",&num)!=EOF){for(i=0;i<num;i++)//行数{for(j=0;j<num;j++)//每行的打印{if(j==0|i==num-1)//打印每一行的第一个*和最后一排printf("* ");else if(j==i&&i!=0)//从第二排开始每隔i个空打印一个*printf("* ");else //其余的都打双空格printf(" ");}printf("\n");//最后换下一行}}return 0;
}
解析:找规律