c语言程序范例

题目:统计字符串中子串展示的次数
1,程序解析:
2,程序源代码:
#include “string.h”
#include “stdio.h”
main()
{ char str1[20],str2[20],*p1,*p2;
int sum=0;
printf(“please input two strings\n”);
scanf(“%s%s”,str1,str2);
p1=str1;p2=str2;
while(*p1!=‘\0’)
{
if(*p1==*p2)
{while(*p1==*p2&&*p2!=‘\0’)
{p1++;
p2++;}
}
else
p1++;
if(p2==‘\0’)
sum++;
p2=str2;
}
printf(“%d”,sum);
gainch();}
一、单一符号图形
1,根本的几何图形
部分复杂的图形同样会由几种最根本的图形组合而成,把握简单的几何图形的编程方式,就给复杂的图形的编程打下优异的全然.
典型的使用双重循环实现根本的几何图形的程序为:
这个地方面有三个打印语句,这一个确认每行第一个字符的打印位置;第二个肯定打印的字符;第三个的作用是 换行.
在下面的各个图形中,上面程序的 n 的值根基上 4,打印的内容 c 根基上 “
”,解析它们各个的打印位置 a 和每行列数 b 各有啥差不.





* * * * *
  * * * * *
    * * * * * 	        * * * * *
  * * * * *
* * * * *

* *
* * *
* * * *	          *
    * * 
  * * *
* * * * 

(1) (2) (3) (4) (5)
* * * *
* * *
* *
* * * * *
* * *
* *
* *
* * *
* * * * *


* * * * *


* * * * *
  * * *
    *

(6) (7) (8) (9) (10)
2,对称图形
打印较复杂的对称图形,同样有下面几种方式:
(1)、组合拼接法
立即一个较复杂的图形,看成由两个或几个简单的几何图形拼接而成,这时只需要分不打印各简单图形的程序毗连在一路就能了.
例:给出边长 N ,打印出菱形
解析:由右图可以发现,边长为 N 的实心菱形的上半部分是 个 N 行的正立的等腰三角形,下半部分是 个 N-1 行的倒置等腰三角形.关键题目上下两部分每行的第一个字符的位置要找准.
源程序:略. *
* * *
* * * * *


* * * * *
  * * *
    *

(2)、中间变量法
操纵与循环变量的值的关系的另外的变量,结合前提语句,来处理分不打印对称图形的上、下两部分或一行字符中的左、右两部分的对称题目,是 中间变量法要处理的关键题目.
例:给出边长 N ,打印出菱形
解析:由右图可以发现,菱形可以看成以横轴对称的两个相等的三角形,咱们可以操纵它的对称性,全体打印那个菱形.用循环变量 I 操纵行数从 1 到 2*N-1 通过前提语句判断往后行是 在上半部仍是 在下半部再分不操作.
源程序:略. *
* * *
* * * * *


* * * * *
  * * *
    *

(3)、循环变量对称法
这类方式让循环变量由初值 -K 到终值 K (初值与终值的绝对值同样),循环变量的绝对值以 0 为原点对称分布,这类放置对应的图形的对称或每行打印内容对称.
例:给出边长 N ,打印出菱形
解析:从右图可以发现,菱形可以看成以横轴对称的两个相等的三角形,咱们可以操纵对称行与对称轴的间隔同样的性质,将水平方向的对称轴定为 0 行,上边的为正行数,下边为负行数,行数的绝对值即可以看成各行与对称轴的间隔,对称轴上下行数与每边字符个数的关系为 N-1,
源程序:略. *
* * *
* * * * *


* * * * *
  * * *
    *

(4)、子字符串截取法
这类方式操纵取子字符串函数来截取源字符串的方式来做文本图形.这类方式可以省掉内循环,特别合用于打印不易找到数学规律的字符或数字内容,更有它的优胜性.
以上四种方式,同时不根基上 彼此独立的,可以依照图形的具体特点彼此结合机动使用.
3,空心图形
以上咱们所打印的根基上 实心的文本图形,介入空心的图形似那边理呢?这个地方讲解两种方式.
(1)、操纵打印标准函数TAB(x)
把图形空缺的双方的字符分成左右两部分,操纵打印标准函数TAB(x)分不定出每一部分字符的位置.
(2)、操纵打印空格函数SPC(x)
使用空格函数来处理打印具有空缺图形的利益是 :可以不思考右半部图形的第一个字符的具体位置,把空格也看成图形的一部分接连打印.
4,接连图形
(1)、二方接连文本图形
将一个根本几何图形沿左右方向重复接连地 表现出来,叫做二方接连的图形.咱们明白,文本图形输出时,每一行只能从左往右打印,同时追行由上而下输出.为领会决那个题目,所以操纵同时列打印几个重复图形的循环语句应加在操纵每个图形行数的外循环与操纵每个图形每行字符个数的内循环之间.
操纵每个图形每行第一个字符打印位置的方式有两种:
方式一:用TAB函数操纵第一个图形每行第一个字符的位置,用SPC函数操纵每个图形每行之间的空格数.
方式二:用TAB函数操纵各个图形之的每一行的第一个字符的位置.
(2)、四方接连文本图形
将一个根本几何图形按上下左右接连重复构成的一个图形叫四方接连文本图形.那个图形的打印对比简单,只需要在前面所讲的二方接连文本图形的全然上,在最外头加上一层操纵图形层数的循环就能了.
 
二、有规律的数字图形
在字符图形中有些图形不是 由单一的字符构成,而是 由部分有规律变化的字符构成的,打印这些图形除了要找出外形的变化规律外,还要找到字符的变化规律与图形外形变化之间的联系,偶然还要看重字符变化或许给图形变化带来的作用.
1,看重数字与字符的区不
例:打印似下图形(见图 1 )
解析:同样都会信任程序的假想与单一字符图形时是 同样的,只需要把“*”号换成循环变量 I 就能啦 ,但结论打印出来的款式就变成了图 2 的外形了.原由定是 在BASIC语言里数值变量的前后都会有一个空格输出.为此,必须加上一个标准操纵语句:USING"#",以使数字可以接连输出. 1
222
33333
4444444
图 1 1
2 2 2
3 3 3 3 3
4 4 4 4 4 4 4
图 2
2,看重字符变化或许带来的作用
例:打印似下图形
解析:图中的字符有一名数也有两位数,介入仍是 用前面的方式,那么就会展示有部分数字挤在一路.介入咱们碰着了这类状况,即数字符号位数差不时,要将操纵打印位置的语句与打印字符语句放在一路.对每个打印符号都要定位后再打印. 1
2 3 4
5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23 24 25
三、有规律的字符图形
符号图形不光可以由有规律的数字构成,还可以由有规律变化的字符构成.
例:打印似下图形(图 1)
解析:这一类图形可以咱们仿效有规律的数字图形同样去编程,介入把图 1 中的字母变形成ASCⅡ码图形,那么会变成图 2 的模样,介入再把图 2 中每个ASCⅡ码都减去64就会得到图 3 的图形,那么那个图形咱们差不多会了.题目也就处理了. A
AB
ABC
ABCD
ABCDE
图 1 65
6566
656667
65666768
6566676869
图 2 1
12
123
1234
12345
图 3
四、特别文本图形
有些数字阵列咱们称为特别文本图形.似拉丁方阵、螺旋方阵、杨辉三角形等.
1,螺旋方阵
例:打印N×N螺旋方阵(图 1,N=5).
解析:螺旋方阵是 从数字1最早,人雠阵的左上角按顺时候方向布列的一组自然数.有序数字的布列方向偶然按行,偶然 1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
图 1 1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
图 2 1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
图 3
按列,而 表现方式只能按行,是以咱们解析一下数字与所在行和行上位置(列)的关系.用一个二维数组来储存那个图形:A(1,1)=1,A(1,2)=2,A(1,3)=3,A(1,4)=4,A(1,5)=5,A(2,5)=6,A(3,5)=7……,可以发觉数组下标先是 行下标不变,再是 列下标不变,接着又是 行下标不变……,对于最外边一圈数字,咱们可以按同行差不列或同列差不可将它们分成四块,似图 2 ,每块长度为K=N-1,第一圈赋值完了往后,按刚才的方式把第二圈也分成四块,似图 3 ,这时块的长度该当减 2 ,相应的行列位置应有加有减.接着再做第三圈……一贯到K<=0,此刻介入K<0,那么余下中间一个数字,那么就能开门见山赋值;介入K=0,那么刚好实现全部数字的赋值.这时只需要把那个二维数组输出即可.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxbyzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值