C++用*和空格输出一个正方形及其对角线


零基础起步程序猿,人生中第一个博客,主要是记录一些从开始到以后的生活日常叭,emmm还是有些小忐忑…

废话不说,直接开始

卑微琢磨了几天的一个入门程序
先放代码再说

#include<iostream> 
using namespace std;
int main()//主函数 
{
	int n,i,j,k;//定义四个整型变量 
	cin>>n;//输入正方形的边长n 
	for(i=1;i<=n;i++)//for的外层循环,用来控制正方形的行数 
	{
		if(i==1||i==n)//利用if else循环语句将正方形分割为首行、末行类型相同一个循环,中间几行一个循环 
		{
			for(j=1;j<=n;j++)//在首行和末行中,连续循环* 直到边长数n,即完成正方形首行和末行输出 
			 cout<<"* ";
			cout<<endl;//输出n个* 后,换行 
		}
		else//当n是中间几行时,再把其分为 ①最左侧* 的输出 ②中间对角线上* 的输出 ③最右侧* 的输出 
		{
			cout<<"* ";//①输出最左端的*  
			for(k=1;k<=n-2;k++)// ②对于对角线上的输出采用循环:k<=n-2指中间的行数,即循环的次数 
			{
				if(k==i-1)//在小循环内,用if控制* 输出的位置,当k=行数-1时输出* ,其余的继续循环for,输出空格,直到不符合条件 
				cout<<"* ";
				else
				cout<<"  ";
			}
			cout<<"*"<<endl;// ③最右侧输出* 
		}
		
	}
	return 0;
}

运行结果:

另一种

#include<iostream>
using namespace std;
int main()
{	
   int a;	
   cout << "请输入正方形的行列数a(1<=a<=10)\n";	
   cin >> a;	
   int i, j;	
   for (i = 1; i <= a; i++)	
   {		
      for (j = 1; j <= a; j++)		
      {			
        if (i == 1 || i == a)				
          cout << "* ";			
        else			
        {				
           if (j == 1 || j == a)				
            	cout << "* ";				
           else			
         	{					
         	  if (j == i)						
         	    cout << "* ";					
         	  else						
         	    cout << "  ";			
         	}			
         }		
       }		
       cout << endl;	
       }
    return 0;
}

分析代码思路:

首先确定是循环结构(基于只学到了for循环,数组以后再说😀)

首行,末行形式相同,可用一个循环。

中间行最左侧和最右侧相同,而对角线输出则按照一定规律,则可用一个循环的嵌套。

for()//外层,控制行数。
{ 
   if()
     { for() }
     cout//首行和尾行的输出
     
   else//中间行输出
     cout//最左侧输出
     for()//对角线输出
     cout//最右侧输出
}

这是大致框架

下面分析外层for里面的两个部分:

1. if 的要求是能输出正方形的首行和尾行,则判断可写为:

if(i==1||i==n)

之后进行首行,尾行的循环

for(j=1; j<=n; j++)
 cout<<"* ";
cout<<endl;

2. else这里用来分隔中间几行代码的输入。

第一部分:
     最左侧输出

cout<<"* ";

第二部分:
    对角线输出

for(k=1; k<=n-2; k++)// 对于对角线上的输出采用循环:控制条件 k<=n-2指中间行数,即小循环的次数 
{
  if(k==i-1) 
   cout<<"* ";
  else
   cout<<"  ";
 //在小循环内,用if控制对角线上* 输出的位置,观察规律,当 k=行数-1时输出* ,其余的继续循环for,输出空格,直到不符合条件(指行数被循环完)
}

第三部分:
    最右侧输出

cout<<"*"<<endl;

注:这三部分是并列关系。

最后,将以上所有归入最外层for循环中就okk啦~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值