输出逐行加2个' *'的图案

本文介绍了一种使用C语言指针技巧打印金字塔图案的方法。通过定义一个包含最多星号'*'的字符串,利用指针指向该字符串的不同位置,控制星号的输出数量,从而形成金字塔形状。文章详细解释了指针的逆向和正向移动过程,以及如何通过改变指针位置来调整输出图案。

//在屏幕上输出以下图案
//*
//***
//*****
//*******
//*********
//***********
//*************
//***********
//*********
//*******
//*****
//***
//*
//思路:
//先将’‘最多的一行以字符串的形式保存起来;
//再通过指针指向该字符串位置的改变来改变打印’
'的数目:
//使该指针指向字符串末尾,通过指针前移改变指针指向字符串的长度,
//指针位置每改变2,打印输出指针指向字符串,
//直到指针指向字符串的长度大于该字符串的长度;
//最后通过指针后移,改变指针指向该字符串的长度,
////指针位置每改变2,打印输出指针指向字符串,
//直到指针指向该字符串的长度小于0;

#include<stdio.h>
#include<stdlib.h>

//打印函数
void Print(char str[],int len){
	int n = len;    //定义一个变量n,保存字符串原始长度
	char *p = str + sizeof(str[0])*len;   //使指针p指向字符串的末尾(即*p等于'\0')
	char *q;  //定义一个辅助输出指针q
	/*通过指针p逆向移动使输出的*由少至多*/
	while (len > 0){	//若len大于0
		--p;    //指针p向前移
		--len;  //字符串长度减1
		q = p;  //使指针q指向p
		printf("%s\n", q);	 //打印输出指针q指向的字符串
		--p;    //指针p向前移
		--len;  //字符串长度减1
}
	//通过指针p正向移动使输出的*由多至少
	while ( len < n ){  //若len小于n
		++p;    //指针p向后移
		++len;  //字符串长度加1
		q = p;  //使指针q指向p
		if (len > 0){  //若字符串长度大于0(即跳过q指向str[0]时的输出)
			printf("%s\n", q);  //打印输出指针q指向的字符串
		}
		++p;    //指针p向后移
		++len;	//字符串长度加1
	}
}

//主函数
int main(){
	char str[] = "*************";   //定义字符串,并赋值
	int len = strlen(str);     //获取字符串长度,并保存
	Print(str,len);   //调用打印函数
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值