摘要:介绍了C语言程序设计中一种常见的题目――图形打印问">

C语言中打印图形类问题解决方法探析

C语言中打印图形类问题解决方法探析
<a rel='nofollow' onclick="doyoo.util.openChat();return false;"
href="#">
摘要:介绍了C语言程序设计中一种常见的题目――图形打印问题的解决方案,并详细介绍了如何使用待定系数法解决双重循环的边界问题。

关键词:C语言图形打印待定系数法
在C语言程序设计中有一类让学生感到头疼的问题,就是图形打印问题。

如何让学生掌握好这类问题的解决方案呢?笔者根据多年的教学经验,对这类问题研究出一种有效的解决方法,下面就对这种方法进行阐述。

1 C语言中的图形打印问题
在C语言程序设计中的图形打印问题通常要求学生用某种字符(如“*”)打印出一种有变化规律的图形。

常见的图
形如图1中的各图所示:??
图 1 常见图形问题示例2 整体解决思路
对于这类问题,有一个整体的解决思路。

通过观察可以发现,每个图形都是由若干行、若干列的符号组成的,因此可以考虑使用双重循环来解决。

双重循环是指在一个循环体内完整地包含另一个或多个循环结构,当外层循环控制变量为某一值时,内层循环要全部执行一遍。

外层循环变量才能再次改变一次。

对于这类题目,可以由外层循环控制行数,每行打印的内容由内层循环控制。

首先,确定图形的行数,通常用一个变量来表示当前行号,例如i 。

i的变化范围可以由1至总行数,总行数可以直观地看到,例如图(a),外层循环的控制可以表示为
for(i=1;i<=5;i++)。

其次,内层循环来表示每一行需要打印的内容,可以分为两种情况:
1)每行直接打印若干个符号,前面不含空格。

这种情况较简单,双重循环,外层循环控制行数,内层循环控制每一行的符号数。

2)每行先打印若干个空格,再打印符号。

这种情况可以使用两个内层循环,一个用来打印空格,一个用来打印符号。

需要注意的是,每一行的内容打印完成之后,也就是在
最后一个内层循环的下边,外层循环的循环体内,一定别忘了加上打印换行符的语句,否则是打印不出需要的图形的。

3具体的解决方案
上面介绍了这类问题的整体解决方案,但是,对于具体的题目,各有特点,应用时是有区别的,关键点就在于如何控制内层循环的执行次数,下面针对具体的问题给出解决方案:
3.1图形(a)的解决方法
图形(a)是一种最简单的情况,通过观察可以看到,共打印5行符号,每一行直接打印4个符号,且前面没有空格,只要让外层循环从1到5,内从1到4变化即可,双重循环表示如下:
for(i=1;i<=5;i++)
{
for(j=1;j<=4;j++)
printf("*");
printf("\\n");//用于打印换行符
}
3.2图形(b)的解决方法
图形(b)也属于较简单的情况,因为每一行直接打印若干个符号,前面没有空格,只要观察好每行的符号数与行号的关系即可。

通过观察可以发现第1,2,3,4行打印的符号
数分别是1,2,3,4,恰好和行数是一致的,因此,内层循环的次数控制可以是1到行号i,本题目对应的双重循环表示如下:
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf("*");
printf("\\n");//用于打印换行符
}
3.3图形(c)的解决方法
图形(c)的情况比图形(b)复杂了一点,虽然也是每行直接打印符号,但是打印的符号数和行号没有非常直观的关系,第1,2,3,4行打印的符号数分别是5,4,3,2。

对于这样的情况,可以采用待定系数发来解决。

通过观察可以看到每行的符号数和行号之间存在一种
线性的关系,根据数学常识,可以列出如下的式子:ai+b=j 来表示行号和列号之间的关系。

将一致的两组关系i=1,j=5和i=2,j=4代入以上式子,形成了一个二元一次方程组:??
a+b=5??2a+b=4
求解方程组,得到a=-1,b=6,代入ai+b=j,最后得到列号j与行号i之间的关系为:j=6-i,于是得到该问题对应的双重循环如下:
for(i=1;i<=5;i++)
{
for(j=1;j<=6-i;j++)
printf("*");
printf("\\n");//用于打印换行符
}
3.4图形(d)的解决方法
图形(d)的情况又比图形(c)复杂了一点,通过观察可以看到,共打印5行符号,每一行先打印若干个空格,再打印若干个符号,对于空格部分和符号部分,可分别用两个内从循环来表示,分别使用循环变量j和k。

循环的次数可以使用以上介绍的待定系数法,得到每行的空格数与行号之间的关系为:j=5-i,每行的符号数与行号的关系为:k=2i-1 ,从而本题对应的双重循环表示如下:
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\\n");
}4 结论
有时候具体题目给出的可能是几个图形的组合,只要进行合理拆分,一一处理就行了。

虽然本文只是给出了几种典型的图形打印问题的解决方案,但只要掌握了相应的方法,一定可以做到举一反三。

??
参考文献:
[1]方风波.C语言程序设计.地质出版社.
[2]谭浩强. C语言程序设计教程.高等教育出版社.。

合集下载

C语言中的调试技巧和常见问题解析

C语言中的调试技巧和常见问题解析

C语言中的调试技巧和常见问题解析C语言是一种经典且广泛应用的编程语言,在开发过程中不可避免地会遇到各种问题和bug。

因此,掌握一些调试技巧和解决常见问题的方法对于C程序员来说是非常重要的。

本文将介绍一些实用的C语言调试技巧并解析常见问题,帮助程序员提高调试能力和开发效率。

一、打印调试信息打印调试信息是最简单和常用的调试技巧之一。

在C语言中,我们可以使用printf函数输出变量的值,帮助我们定位错误所在。

比如:```int a = 10;printf("a的值为:%d\n", a);```通过打印变量的值,我们可以观察变量是否符合我们的预期,进而判断程序是否存在逻辑错误。

二、使用断点调试除了打印调试信息,调试器的使用可以更方便地定位问题。

常用的C语言调试器有GDB、LLDB等,它们可以设置断点、单步执行、查看变量等功能,极大地提高了调试效率。

以GDB为例,我们可以使用以下命令设置断点:```gcc -g -o demo demo.c //编译时加上-g选项gdb demo //进入GDB环境b main //在main函数设置断点run //运行程序```设置断点后,程序会在断点处停下来,我们可以查看此时的变量值,使用step命令单步执行,帮助我们逐行排查错误。

三、利用静态分析工具静态分析工具是在编译器级别对代码进行分析的工具,能够检测出一些潜在的问题和错误。

常用的C语言静态分析工具有Coverity、Clang等,它们可以自动检测出一些常见的错误,如空指针解引用、内存泄漏等。

静态分析工具的优势在于无需运行程序即可发现一些问题,但也有一定的局限性,无法检测出所有问题,仍需要手动调试来解决更复杂的错误。

四、遵循规范和最佳实践在编写C语言代码时,遵循规范和最佳实践是预防错误的重要手段。

比如,合理命名变量和函数、避免使用未初始化的变量、释放动态分配的内存等。

这些习惯使得代码更加易读、易懂,减少了出错的概率。

c语言字符图形问题

c语言字符图形问题

字符图形例1:*号图形(打印行数n由键盘输入)分析(2)号图形:从第1行打印到第n行,打印第i行时(i从1~n),首先打印n-i 个空格;接着打印i个*号;换行; 分析:(6)号图形:打印第i行(i 从1~n)时,首先打印i-1个空格;接着打印2(n-i)+1个*号;换行;#include "stdio.h"void main(){ /*打印(2)号图形*/int n,i,j;printf("Input n=");scanf("%d",&n);for (i = 1;i <= n;i++) {for (j = 1;j <= n-i;j++)putchar(' ');for (j=1;j<=i;j++)putchar('*');printf("\n");}}例2:打印如下数字方阵(打印行数n可输入)1 2 3 4 52 234 53 3 34 54 4 4 4 55 5 5 5 5(1)特点:每行主对角线之前打印行号,主对角线之后打印列号#include "stdio.h"void main(){int i,j,n;printf("Input n =");scanf("%d",&n);for (i = 1;i <= n;i++) {for (j = 1;j <= i;j++)printf("%4d",i);for (j = i + 1;j <= n;j++)printf("%4d",j);printf("\n");}}1 2 3 4 52 3 4 5 13 4 5 1 24 5 1 2 35 1 2 3 4(2)特点:每行主对角线之前从行号打到n;主对角线之后从1打到行号-1#include "stdio.h"void main(){int i,j,n;printf("Input n=");scanf("%d",&n);for(i = 1;i <= n;i++) {for(j = i;j <= n;j++)printf("%4d",j);for(j = 1;j <= i-1;j++)printf("%4d",j);printf("\n");}}思考:图形位置向屏幕左边移动m列,以及图形位置放在屏幕中央该怎么办?例3:打印n阶杨辉三角形(n由键盘输入)分析:杨辉三角形的第i行(i从0~n)是i次二项式(x+y)i 的展开系数递推法计算组合数#include "stdio.h"void main(){int c,n,i,j;printf("Input n =");scanf("%d",&n);for (i = 0;i <= n;i++) {for (j = 0;j < n-i;j++)printf("%4c",' ');c = 1;for (j = 0;j <= i;j++) {printf("%4d",c);printf("%4c",' ');c = c * (i - j) / (j + 1);/*可以写成c *= (i - j) / ( j + 1)吗?*/ }printf("\n");}}。

C语言典型例题 关于图形输出

C语言典型例题  关于图形输出
} 从上边一系列此类图形输出编程无非就是找行数、空格数及星号
数之间的关系,在进行一系列组合便能输出更为复杂的图形。亲爱的 同学希望这对你能有所帮助。
{for(j=1;j<i+1 ;j++) printf(" ");
(10)
for(k=1;k<=7-2*i;k++) printf("*"); printf("\n"); } } (8) #include "stdio.h" void main() { int i,j,k; for(i=1;i<=5;i++) {for(j=1;j<=5-i;j++) printf(" "); for(k=1;k<=i;k++) printf("*"); printf("\n"); } for(i=1;i<=4;i++) {for(k=1;k<=5-i;k++) printf("*"); printf("\n"); } } (9) #include "stdio.h" void main() { int i,j;
(4)
#include "stdio.h"
void main()
{ int i,j,k;
for(i=1;i<=7;i++)
{for(j=1;j<=8-i;j++) printf("*");
printf("\n");

代数方法在C语言图形打印问题中的应用

代数方法在C语言图形打印问题中的应用

图 1 常见图形打印问题示例
2 解决问题的整体思路
在这类问题中, 所要打印的图形都是由多行多列字 符组成的, 因此必须使用双重循环来解决问题。双重循 环是指在一个循环体内完整 地包含另一个 循环结构 ( 常见形式如图 2 所示
[ 2] [ 1]
) , 当外层循环控制变量为某一
值时, 内层循环要全部执行一遍 , 外层循环变量才能再次 改变一次。在这里打印的行由外层循环控制, 每行打印 的内容由内层循环控制。 首先, 确定所要打 印图形的 行数, 用一个变 量来表 示 , 例如 i, i的变化范围一般从 1 开始 ( 易于理解 , 也可不从 1 开始 ), 到总行数值结束。例如图形 b , i的变化 范围是 1~ 4 , 可用 for 循环语句表示为 for( i = l; i < = 4 ; i+ + ) 。
3 具体解决方法
图形 a和 b是比较简单的情况, 而图形 e 是图形 c 和 d 的综合, 下面分别介绍各个图形的具体解决方 法。 3 . 1 图形 a解决方法 该图形是图形打印问题中最简单的一种情况。图形中每一行的字符都是从头开始打印的, 没有前导空 格 , 而且每行都固定打印 6 个字符, 因此只要使内层循环中控制打印字符的变量 k 从 1变化到 6 即可。每循 环一次打印一个字符 , 可用 for循环语句表示为: for( k= ; l k< = 6 ; k+ + ) P rin tf( * ! ); 每打印完一行, 需要利用 printf( m a in ( ) { int ,i k ; for( i= ;l i< = 4 ; i+ + ) { for ( k= ; l k< = 6 : k+ + ) prin tf( * ! ); prin tf( / n! ) ; } 3 . 2 图形 b解决方法 该图形中每一行的字符都是从头开始打印的, 没有前导空格 , 只要研究字符的规律就可以了。根据观 察 , 发现每行字符个数分别是 1 、 3 、 5 、 7 奇数项的变化规律。在代数中 , 一般用 2 * i + 1 或 2* i- 1 表示一个 奇数项序列的变化规律, 在这里 i即指所在的行号。如果 i从 1 开始变化, 那么将第一行的 i= 1 代入上面两 个式子 , 发现第二个式子可以满足要求, 即第一行打印一个字符, 因此打印字符的规律找到 , 即控制字符的变 量 k 可以从 1 变化到 2 * i- 1 , 每循环一次打印一个字符 , 可用 for循环语句表示为: for ( k= 1 ; k< = 2 : * i- 1 ; k+ + ) printf( * ! ) ; 再代入其它行号 , 经过验证也都是正确的。 完整程序如下: m a in ( ) { int ,i k ; for( i= ; l i< = 4 : i+ + ) { for ( k= 1 ; k< = 2 * i- 1 ; k+ + ) prin tf( * ! ); prin tf( \ n! ) ; } } \n! ) 换行 , 完整程序如下 :

C语言编程中的常见问题解决方法

C语言编程中的常见问题解决方法

C语言编程中的常见问题解决方法在C语言编程过程中,常常会遇到一些问题,这些问题可能会导致程序运行失败或出现错误。

为了帮助大家更好地解决这些问题,本文将介绍一些常见的C语言编程问题以及解决方法。

一、语法错误语法错误是指程序中存在语法错误或规范不符合C语言语法规范的情况。

这些错误通常会在编译阶段被检测到,并给出相应的错误提示。

解决这类问题的方法主要是仔细检查代码并修正语法错误,确保代码符合C语言的规范。

二、逻辑错误逻辑错误是指程序运行时出现的逻辑问题,导致程序输出结果错误或无法达到预期的效果。

解决逻辑错误的方法一般是通过调试,跟踪程序的执行过程,查找可能存在的问题,并逐步修改代码来纠正错误。

在调试过程中,可以使用调试工具或打印输出来辅助定位问题所在。

三、内存管理问题内存管理问题是C语言编程中常见的问题之一。

例如,未正确释放动态分配的内存、内存越界访问等。

解决内存管理问题的方法包括合理地分配和释放内存、使用合适的内存访问方式等。

在使用动态内存分配函数(如malloc、calloc和realloc)时,应该确保每次分配内存后都能正确释放,并且谨慎使用指针操作,避免出现越界访问等错误。

四、文件操作问题C语言中的文件操作常常与错误处理密切相关。

在打开文件、读取或写入文件时,可能会遇到文件不存在、权限不足、读取或写入错误等问题。

解决文件操作问题的方法包括检查文件是否成功打开、检查文件读写操作的返回值是否正常,以及合理处理可能出现的错误情况。

五、性能优化问题性能优化是提高程序执行效率的关键步骤。

在C语言编程中,常常需要通过优化算法、减少不必要的计算和内存访问等方法来提高程序性能。

解决性能优化问题的方法包括通过算法优化、合理使用循环和条件判断、减少内存碎片等。

六、库函数使用问题C语言提供了丰富的库函数,而正确地使用这些库函数对于编写高效、稳定的程序至关重要。

解决库函数使用问题的方法包括熟悉库函数的使用方法、阅读官方文档或手册,以及参考相关示例和案例。

C语言技术中常见的问题及解决方法

C语言技术中常见的问题及解决方法

C语言技术中常见的问题及解决方法随着计算机科学的发展,C语言成为了一门广泛应用的编程语言。

然而,由于其复杂性和技术性质,C语言编程也常常遭遇各种问题。

本文将探讨C语言技术中常见的问题,并提供相应的解决方法。

问题一:语法错误在C语言编程中,语法错误是最常见的问题之一。

这些错误可能是由于拼写错误、缺少分号、大括号未正确匹配等导致。

解决方法:1.仔细检查代码中的每一行,确保拼写正确且没有遗漏任何分号;2.检查大括号是否正确地用于代码块的开始和结束;3.使用编译器来检测和指出语法错误,并按照相应的指示进行修正。

问题二:逻辑错误逻辑错误是指程序在运行时不按预期的方式执行,并产生错误的结果。

这些错误可能是由于算法设计的不当、变量使用错误、循环条件的错误等引起的。

解决方法:1.对代码进行仔细的逻辑分析,确保算法的正确性;2.检查变量的使用是否正确,确保正确赋值和使用正确的数据类型;3.检查循环条件,确保它们能够正确地控制代码的执行。

问题三:内存管理错误在C语言中,内存管理是一个重要的问题。

错误的内存管理可能导致内存泄漏、指针错误、重复释放等问题。

解决方法:1.确保在使用动态内存分配函数(如malloc、calloc等)之前,已经合理地声明了指针变量;2.在使用完动态分配的内存后,记得使用free函数释放内存,以避免内存泄漏;3.避免野指针的产生,确保指针变量指向有效的内存地址。

问题四:编译错误编译错误是指在编译过程中发生的错误。

这些错误可能是由于函数声明的不一致、头文件未正确包含等原因引起的。

解决方法:1.检查函数声明是否与其实际定义一致,确保函数名、返回类型和参数类型数量相匹配;2.确保程序中包含所需的头文件,并正确包含在代码中。

问题五:性能问题在编写C语言程序时,性能问题可能会导致程序运行效率低下。

这些问题可能是由于算法设计的不当、冗余代码等原因引起的。

解决方法:1.优化算法设计,采用更高效的算法来替代低效的算法;2.删除冗余的代码,确保代码只执行必要的操作。

C语言技术的常见问题解析及解决方案

C语言技术的常见问题解析及解决方案C语言作为一种广泛应用于软件开发和系统编程的编程语言,常常面临各种技术问题。

本文将探讨一些常见的C语言技术问题,并提供解决方案。

一、内存管理问题在C语言中,内存管理是一个常见的问题。

其中最常见的问题是内存泄漏和内存溢出。

内存泄漏指的是程序在分配内存后,没有正确释放该内存,导致内存资源的浪费。

解决内存泄漏的方法是在每次分配内存后,确保在不再使用时释放该内存。

另一个问题是内存溢出,它发生在程序试图分配超过其可用内存的情况下。

解决内存溢出的方法是在分配内存前,检查该内存是否足够,并在不足时采取相应措施,如调整内存大小或释放其他不必要的内存。

二、指针问题指针是C语言中一个强大而复杂的概念。

常见的指针问题包括空指针引用和野指针引用。

空指针引用指的是程序试图访问一个未初始化的指针,而野指针引用指的是程序试图访问一个已经释放的指针。

为了解决这些问题,我们可以在使用指针之前,确保指针已经被正确初始化。

另外,在释放指针后,应该将其设置为NULL,以避免野指针引用。

三、数组越界问题数组越界是C语言中常见的错误之一。

它发生在程序试图访问数组的越界元素时。

这可能导致程序崩溃或产生不可预测的结果。

为了解决这个问题,我们应该在访问数组元素之前,确保索引值在合法范围内。

另外,可以使用循环结构来遍历数组,以确保不会越界访问。

四、字符串处理问题字符串处理是C语言中常见的任务之一。

然而,由于C语言中没有内置的字符串类型,所以字符串处理常常面临一些问题,如缓冲区溢出和字符串拷贝错误。

为了解决这些问题,我们可以使用安全的字符串函数,如strncpy()和strncat(),来确保字符串操作不会导致缓冲区溢出。

此外,还可以使用指针和循环结构来逐个字符地处理字符串,以避免错误。

五、性能优化问题在C语言中,性能优化是一个重要的考虑因素。

常见的性能问题包括循环结构的效率和函数调用的开销。

为了提高循环结构的效率,我们可以使用适当的循环条件和循环变量更新方式,以减少循环次数。

csdn页面打印不正常的解决方法

csdn页面打印不正常的解决方法When encountering abnormal printing issues on the CSND website, there are several potential solutions to consider. These problems can arise due to various factors, including browser settings, compatibility issues, or specific website configurations. To address this problem, it is important to approach the issue from multiple perspectives and consider different possible causes.Firstly, it is recommended to check the browsersettings and ensure that they are properly configured for printing. This includes checking the print preview settings, page orientation, and print scaling options. Sometimes, adjusting these settings can resolve printing abnormalities and ensure that the content is printed correctly.Secondly, compatibility issues between the browser and the CSND website may be causing the problem. It isadvisable to try accessing the website using different browsers such as Google Chrome, Mozilla Firefox, orMicrosoft Edge. By doing so, it is possible to identify whether the issue is specific to one browser or if it persists across multiple platforms. If the problem is browser-specific, updating the browser to the latest version or reinstalling it might help resolve the issue.Thirdly, the CSND website itself may have specific configurations that affect printing. It is worth checking if there are any specific printing options or settings within the website. Some websites have customized print stylesheets that can cause abnormalities when printing. In such cases, contacting the CSND website support team or seeking assistance from the website's community forums can provide valuable insights and potential solutions.Furthermore, it is important to consider thepossibility of a temporary server or network issue. If the abnormal printing behavior is not consistent and only occurs sporadically, it might be related to the website's server or network connectivity. In such cases, it is advisable to wait for some time and try printing again later. If the issue persists, contacting the CSND websitesupport team can help in troubleshooting and resolving the problem.Additionally, ensuring that the printer drivers are up to date is crucial. Outdated or incompatible printerdrivers can cause printing abnormalities. It is recommended to visit the printer manufacturer's website and download the latest drivers compatible with the operating system being used. Updating the printer drivers can often resolve printing issues.Lastly, if none of the above solutions work, it might be helpful to seek assistance from the CSND website's user community. Online forums or discussion boards dedicated to CSND or similar platforms can provide insights from users who might have encountered similar printing issues in the past. Sharing the problem and seeking advice from the community can lead to potential solutions or workarounds.In conclusion, when encountering abnormal printing issues on the CSND website, it is essential to consider various factors such as browser settings, compatibility,website configurations, server or network issues, printer drivers, and seeking assistance from the user community. By approaching the problem from multiple perspectives and trying different solutions, it is possible to resolve the printing abnormalities and ensure a smooth printing experience on the CSND website.。

c语言课程设计遇到的问题与解决方法

C 语言课程设计遇到的问题与解决方法一、引言C 语言作为一种通用的高级编程语言,具有高效、灵活和强大的特点,因此在计算机科学和程序设计等领域广泛应用。

在许多大学和技术学院的计算机课程中,C 语言课程设计是非常重要的一环,通过设计不同的项目来提高学生的编程能力和实践经验。

然而,在进行 C 语言课程设计的过程中,学生们常常会遇到各种各样的问题,例如代码逻辑不清晰、程序运行出错等,本文将对 C 语言课程设计中常见的问题进行深入探讨,并给出解决方法。

二、常见问题及解决方法1. 问题:逻辑思维不清晰在进行 C 语言课程设计时,许多学生常常会遇到逻辑思维不清晰的问题,导致编写的代码难以理解和调试。

这种情况下,学生往往会陷入困惑和迷茫。

解决方法:在进行 C 语言课程设计之前,学生可以先思考整个程序的逻辑结构,并将逻辑关系用流程图或伪代码表示出来,以便更好地理清程序的结构和功能。

在编写代码的过程中,可以注释适当的备注,帮助自己理解和记忆整个程序的逻辑。

2. 问题:语法错误导致程序无法运行C 语言是一种对语法要求非常严格的语言,因此在编写代码时很容易出现语法错误,导致程序无法正常运行。

解决方法:为了避免语法错误,学生可以通过阅读相关的编程书籍或参考在线编程教程来加强对 C 语言语法的掌握。

学生还可以在编写代码后,使用编译器进行语法检查,及时发现并纠正问题。

3. 问题:内存管理不当导致程序崩溃在 C 语言中,内存管理是非常重要的一个环节,如果内存管理不当,很容易导致程序崩溃或内存泄漏等问题。

解决方法:学生可以通过阅读相关的内存管理书籍或教程来深入理解C 语言中的内存管理机制,包括栈和堆的使用、指针的应用等。

学生还可以多加练习,编写涉及内存管理的程序,以加深对内存管理的理解和掌握。

4. 问题:程序性能不佳在进行 C 语言课程设计时,学生常常会遇到程序性能不佳的问题,例如运行速度慢、内存占用大等。

解决方法:为了提高程序性能,学生可以通过对算法进行优化,使用更高效的数据结构,如数组、链表等,或者使用并行计算技术来提高程序的运行效率。

C语言-打印字符图形

打印字符图形例1 用for循环编程画出下列图形:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM分析:该图形一共有10行,每一行增加一个字符,所以,应循环10次,每次输出一行,其循环模式为:for( i=1;i<=10;i++){输出第i行换行}“输出第i行”是在for循环中的一个小循环。

每次执行“输出第i行”,其长度都是不一样的,但长度的变化正好与循环变量i同步,故可以依赖于i。

注意到第i行的M字符数与i的关系。

行 i M数1 1 12 2 23 3 34 4 4…10 10 10所以,可以得到“输出第i行”的循环为:for(j=1;j<=i;j++)printf(“%c”,’M’)完整的程序如下:#include <stdio.h>main(){int i,j;for(i=1;i<=10;i++){for(j=1;j<=i;j++)printf("%c",'M');printf("\n"); }}说明:对付这种字符图形,一般用两重循环,外循环遍历所有行,内循环遍历行中每个字符。

例2 输出下列图形:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM分析:该图形一共有10行,这次要考虑每行中,先输出若干个空格,所以,其外循环为:for( i=1;i<=10;i++){输出若干个空格输出若干M换行}下面列出在第i行,其空格数,M数与i的关系为:行i 空格数 M数1 0 192 1 173 2 154 3 13…10 9 1即第i行的空格数为i-1个,M个数为21-2i。

即在第i行输出空格和输出M字符的内循环分别为:for(j=1;j<=i-1;j++)printf(“”);for(k=1;k<=21-2i;k++)printf(“%c”,’M’);合起来,构成一个完整程序如下:#include <stdio.h>main(){ int i,j,k;for(i=1;i<=10;i++){for(j=1;j<=i-1;j++)printf(" ");for(k=1;k<=21-2*i;k++)printf("%c",'M');printf("\n");}}例3 输出下列图形:AABCABCDEABCDEFGABCDEFGHIABCDEFGHIJKABCDEFGHIJKLMABCDEFGHIJKLMNOABCDEFGHIJKLMNOPQABCDEFGHIJKLMNOPQRS分析:该图形一共有10行,这次要考虑每行中,先输出若干个空格,所以,其外循环为:for( i=1;i<=10;i++){输出若干个空格输出若干字符换行}如果要输出A起头依序的n(n<27)个字母,可以为:for(ch='A';ch<'A'+n;++ch)printf("%c",ch);下面分析每一行中的空格数与字符数与第i行之间的关系着手:行i 空格数字符数1 9 12 8 33 7 54 6 7…10 0 19即第i行的空格数据为10-i个,字符数为2i-1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档