输入:一个整数n。
输出:直角三角形图形。第一行为1个1,第二行为2个2,第三行为3个3.......
注意:最下面一行前面无空格,倒数第二行前面一个空格,倒数第三行前面两个空格......
代码如下图所示:
现在就说一下做这道题时的思路:
首先我们可以把这个图形分成两部分,第一部分就是数字前面的空格,我们用字符“n”来表示总行数,字符“i”来表示第几行,字符“j”表示空格,由于最后一行是没有空格的,所以我们的空格行数就只有n-1行,且第一行的空格数量为n-1个,第二行的空格数量为n-2个......则我们可以用“n-i”表示;第二部分就是在空格后面把我们需要的数字放进去,我们用字符“k”表示,其中k是等于i的。这样我们的思路就非常的清晰了,接着就可以开始写代码了。
首先我们把大体框架代码写出来,如下所示,这部分是确保在每行输完后转跳到下一行:
#include<stdio.h> //预处理,包含文件
int main() //主函数
int i, j, k, n; //声明我们需要的整型变量
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
//在这输入需要补充的代码
printf("\n");
return 0;
而后我们就可以往框架里面补充第一部分的代码,即确定每行中输入的空格数量,如下所示:
#include<stdio.h> //预处理,包含文件
int main() //主函数
int i, j, k, n; //声明我们需要的整型变量
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
for (j = 1; j <= n - i; j++)
//每行输入的空格
printf(" ");
//在这输入需要补充的代码
printf("\n");
return 0;
最后的一部分也可以输入了,如下使其形成完整的代码,如下所示:
#include<stdio.h> //预处理,包含文件
int main() //主函数
int i, j, k, n; //声明我们需要的整型变量
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
for (j = 1; j <= n - i; j++) //每行输入的空格
printf(" ");
for (
k
= 1;
k
<= i;
k
++)
//每行空格后面输入的数字
printf("%d", i);
printf("\n");
return 0;
在代码写完后就可以进行运行测试了,假设输入5,程序的运行效果如下图所示
在C语言中三种循环语句while、do...while、for可以相互嵌套,自由组合形成多重循环,使同一个题目有更多的代码写法,更具思考性与趣味性。
第2章 线性表 5
【习2.1】 习2-5 图2.19的数据
结构
声明。 5
【习2.2】 习2-6 如果在遍历单链表时,将p=p.next语句写成p.next=p,结果会怎样? 5
【习2.3】 实验2.2 由指定数组中的多个对象构造单链表。 5
【习2.4】 实验2.2 单链表的查找、包含、删除操作详见8.2.1。 5
【习2.5】 实验2.2 单链表的替换操作。 6
【习2.6】 实验2.2 首尾相接地连接两条单链表。 6
【习2.7】 实验2.2 复制单链表。 6
【习2.8】 实验2.2 单链表构造、复制、比较等操作的递归方法。 7
【习2.9】 建立按升序排序的单链表(不带头结点)。 8
【习2.10】 实验2.6 带头结点的
循环
双链表类,实现线性表接口。 10
【习2.11】 实验2.5 建立按升序排序的
循环
双链表。 14
第3章 栈和队列 17
【习3.1】 习3-5 栈和队列有何异同? 17
【习3.2】 能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17
【习3.3】 能否用一个线性表作为栈的成员变量,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17
【习3.4】 能否将队列声明为继承线性表,入队方法是add(e),出队方法是remove(0)?为什么? 17
第4章 串 18
【习4.1】 实验4.6 找出两个字符串中所有共同的字符。 18
【习4.2】 习4-9(1) 已知目标串为"abbaba"、模式串为"aba",画出其KMP算法的匹配过程,并给出比较次数。 18
【习4.3】 习4-9(2) 已知target="ababaab"、pattern="aab",求模式串的next数组,画出其KMP算法的匹配过程,并给出比较次数。 18
第5章 数组和广义表 20
【习5.1】 求一个矩阵的转置矩阵。 20
第6章 树和二叉树 21
【习6.1】 画出3个结点的各种形态的树和二叉树。 21
【习6.2】 找出分别满足下面条件的所有二叉树。 21
【习6.3】
输出
叶子结点。 21
【习6.4】 求一棵二叉树的叶子结点个数。 22
【习6.5】 判断两棵二叉树是否相等。 22
【习6.6】 复制一棵二叉树。 23
【习6.7】 二叉树的替换操作。 23
【习6.8】 后根次序遍历中序线索二叉树。 24
第7章 图 25
第8章 查找 26
【习8.1】 实验8.1 顺序表的查找、删除、替换、比较操作。 26
【习8.2】 实验8.2 单链表的全部替换操作。 28
【习8.3】 实验8.2 单链表的全部删除操作。 28
【习8.4】 折半查找的递归算法。 29
【习8.5】 二叉排序树查找的递归算法。 29
【习8.6】 二叉排序树插入结点的非递归算法。 30
【习8.7】 判断一棵二叉树是否为二叉排序树。 31
第9章 排序 32
【习9.1】 判断一个数据序列是否为最小堆序列。 32
【习9.2】 归并两条排序的单链表。 32
【习9.3】 说明二叉排序树与堆的差别。 34
其实,for
循环
嵌套与while
循环
嵌套,都是在一个whlie(for)
循环
的上,再一个。但是要注意的一点是外
循环
执行一次,内
循环
全部执行一次(
循环
执行一次时,
循环
要全部执行完毕一次)。所以在
使用
for
循环
嵌套时,一定要注意for
循环
嵌套的,不要了也不能了。下图是for
循环
嵌套的一个大致框架。
浙大版《C语言程序设计实验与习题指导(第3版)》题目集实验1-4
输出
三角形
(5 分)二、题解c代码
实验1-4
输出
三角形
(5 分)
本题要求编写程序,
输出
指定的由“*”组成的三角图案。
输入格式:
本题目没有输入。
输出
格式:
按照下列格式
输出
由“*”组成的三角图案。
#include <stdio.h>
int main() {
for (int i = 4; i >= 1; i--) {
for (int
话说有这么一个
图形
,只有两种符号组成(‘+’或者‘-’),
图形
的最上层有n个符号,往下个数依次减一,形成倒置的金字塔形状,除第一层外(第一层为所有可能情况),每层形状都由上层决定,相邻的符号相同,则下层的符号为‘+’,反之,为‘-’;如下图所示(n = 3 时的两种
Description
写程序,输入一个正整数N(N≤30),
输出
一个用
数字
表示的等腰直角
三角形
,符合这样的规律:两等边(第一行和第N列)都是N个
数字
,
数字
1、2、3、4、5、6、7、8、9、0依次逐列填入,直至结束。各列之间空一格。
Input
一个整型
数字
Output
Sample Input
Sample Output
1 2 4 7 1...
Description
小文是一个兴趣广泛的人,最近在迷恋数学的同时,还对图像产生了极大的兴趣。他觉得能将
数字
按照一定的规则有序填入一个阵列(n*n)中是一个非常有趣而且具有挑战性的事情。现在他正在考虑对于给定的正整数n(0
1 2 3
8 9 4