c语言的一些小题目(初阶),持续分享......

news/2024/11/14 19:14:35/

文章目录

1.打印杨辉三角形

2.打印X形图案

3.打印菱形

4.字符串左旋

5.倒置字符串

文章内容

1.杨辉三角形是一道非常经典的题目,观察下面的图片中红色与蓝色方块的关系我们不难发现,两个红色方框里的数字相加等于蓝色方框里的数字,找到这种规律我们就可以下手写代码了,需要注意的是第一列和第一行还有第二行都是1。

 代码如下:

int main()
{int arr[10][10] = { 0 };//c语言中没有变长数组所以我们使用一个固定的数组int i = 0;for (i = 0; i < 10; i++)//i为行数 j为列{int j = 0;for (j = 0; j <= i; j++){if (i == j || j == 0)//所有为1的地方arr[i][j] = 1;if (i >= 2 && j >= 1)//这是我们发现的规律{arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}}for (i = 0; i < 10; i++)//这里我们要打印出来杨辉三角形{int j = 0;for (j = 0; j <= i; j++)//只打印我们给值的地方{printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

2.x形状团比杨辉三角形简单,我们需要发现其中的规律,行数和列数相等的时候有*号(主对角线),或者行数加列数等与我们要求的总行数-1。(我们上述讨论的行数和列数都是从0开始的)

 代码如下:

int main()
{int n = 0;while (scanf("%d", &n) == 1){int i = 0;int j = 0;for (i = 0; i< n;i++){for (j = 0; j < n; j++){if (i == j || i + j == n - 1){printf("*");}else{printf(" ");}}printf("\n");}}return 0;
}

3.打印菱形分为上半部分和下半部分,当我们输入要打印多少行的时候,上半部分就会打印多少行,下半部分就是行数减一,我们观察 到第0行✳  第1行✳ ........与行数的关系是2*行数+1(行数是从第零行开始的,列数也是从第0行开始的),其次我们可以看出空格随着行数增加时单调递减到我们打印的那一行,便没有空格了,第0行打印7个空格,第八行打印0个空格,可以得出空格与行数的关系时 我们要打印的 行数-1-第几行。

打印下半部分的空格较为简单,但是打印✳的关系不太好找,但仔细观察后我们可以发现是2*(行数-1-第几行)-1。

 代码如下;

#include <stdio.h>
int main()
{int line = 0;scanf("%d", &line);//7//上int i = 0;for (i = 0; i < line; i++){//打印一行//打印空格int j = 0;for (j=0; j<line-1-i; j++){printf(" ");}//打印*for (j = 0; j < 2*i+1; j++){printf("*");}printf("\n");}//下for (i = 0; i < line-1; i++){//打印一行//打印空格int j = 0;for (j = 0; j <= i; j++){printf(" ");}//打印*for (j = 0; j < 2*(line-1-i)-1; j++){printf("*");}printf("\n");}return 0;
}

4.字符串左旋

题目:

实现一个函数,可以左旋字符串中的k个字符。

例如:

ABCD左旋一个字符得到BCDA

ABCD左旋两个字符得到CDAB

这种题目是我们首先要输入一个字符串,然后我们要决定从第几个字符串开始左旋。

思路:我们可以把从第几个字符开始左旋之前的分为一部分,之后的分为一部分。分别逆序这两部分,然后再将整体的字符串逆序。

代码如下。

void reverse(char* arr, int i, int j)
{while (i < j){char tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;i++;j--;}}void leftRound(char* arr,int time)
{int len = strlen(arr);int mid = time % len;reverse(arr , 0, mid-1);reverse(arr, mid, len-1);reverse(arr, 0, len-1);
}int main()
{char arr[50] = {0};gets(arr);int n = 0;scanf("%d",&n);leftRound(arr,n);printf("%s\n",arr);return 0;
}

5.倒置字符串

题目:将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。字符串长度不超过100。

这个题的思路跟上一题基本类似,都是将部分逆序,再将整体逆序,不同之处在于这一题要如何来判定每一部分,题目中每一部分的结束是空格,最后是’\0‘。

代码:

#include <stdio.h>
void reverse(char* left, char* right)
{while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}//函数逆序字符串
int main() {char arr[101] = {0};gets(arr);//读取一个字符串,即使中间有空格int len = strlen(arr);reverse(arr, arr + len - 1);//逆序每个单词char* start = arr;char* cur = arr;while (*cur)//"\0"的ascii 为0{while (*cur != ' ' && *cur != '\0')//等与空格或者‘\0’开始逆序或者跳出循环{cur++;}reverse(start, cur - 1);start = cur + 1;if (*cur == ' ')//只有当*cur为空格的时候才++,为"\0"跳出循环cur++;}printf("%s\n", arr);return 0;
}


http://www.ppmy.cn/news/252878.html

相关文章

编译原理 | 课程设计 — Lex 和 Yacc的使用

第1关 — 碱基序列里特定碱基比例的计算 1、任务描述 双链DNA分子中&#xff0c;G、C碱基对所占比例越高&#xff0c;其稳定性越强。编写一个lex描述文件&#xff0c;计算指定碱基序列里G、C碱基的比例。 2、编程要求 完成上述编程任务&#xff0c;将C语言源程序复制粘贴到右侧…

java设计模式(十五)责任链模式

目录 定义模式结构角色职责代码实现适用场景优缺点 定义 责任链模式(Chain of Responsibility) 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象能够处理…

主板的简介

主板的另一特点&#xff0c;是采用了开放式结构。主板上大都有6-8个扩展插槽&#xff0c;供PC机外围设备的控制卡(适配器)插接。通过更换这些插卡&#xff0c;可以对微机的相应子系统进行局部升级&#xff0c;使厂家和用户在配置机型方面有更大的灵活性。 总之&#xff0c;主板…

主板结构

主板结构 百科名片 简略主板结构 主板作为其他硬件运行的平台&#xff0c;为电脑的运行发挥联通和纽带的作用。 目录 概念 一、主板板型分类 1、PCAT主板 2、Baby AT主板 3、ATX结构主板 4、MATX结构主板 5、BTX具有如下特点&#xff1a; 6、Mini-ITX结构主板&#xff1a; 二、…

主板类型

主板类型 什么是主板 主板&#xff0c;又叫主机板(mainboard)、系统板(systembourd)和母板(motherboard)&#xff1b;它安装在机箱内&#xff0c;是微机最基本的也是最重要的部件之一。 主板一般为矩形电路板&#xff0c;上面安装了组成计算机的主要电路系统&#xff0c;一般有…

主板bios

目前市面上较流行的主板BIOS主要有 Award BIOS、AMI BIOS、Phoenix BIOS三种类型。 通过Intel授权的全球一共有四家&#xff0c;除了上面说的三家还有一家国产BIOS--Byosoft BIOS。 早期的286、386大多采用AMI BIOS&#xff0c;它对各种软、硬件的适应性好&#xff0c;能保证系…

组装电脑基础知识之主板

前言 本系列文章是为准备自己组装台式机的小伙伴写的关于中央处理器CPU、主板、显卡等部分的参考资料。 一、简介 主板作为计算机CPU、显卡等硬件的载体&#xff0c;各硬件通过主板进行连接成为一个整体从而完成协作。 提示&#xff1a;因为需要考虑主板是否兼容CPU以及能否…

Vue2 vue-cli

安装与卸载vue脚手架 npm i -g vue/cli vue --version 查看vue脚手架版本 vue -V 查看vue脚手架版本 npm uninstall -g vue/cli 卸载 创建项目 vue create 项目名 选择项目 &#xff08;Default 为快速创建项目&#xff09; 选择最后一下&#xff0c;回车 上下键选择 Rou…