• 【C++】杨辉三角+二维数组鞍点+strcpy()函数(字符串b中的字符复制到数组a中)


    写文原因:因为10月3号之前需要上交C++头歌作业,提交格式是md格式,故而直接在CSDN中记录博客,也以便后续复习使用。

    自我要求:三道编程题全部写完,同时附上做题思路+代码注释,以及运行截图展示

    1、输出八行的杨辉三角

    输出格式:

    1
    1    1
    1    2    1
    1    3    3    1
    1    4    6    4    1
    1    5    10    10    5    1
    ...
    

    杨辉三角的特点是:①等腰三角形 ②两个最外边都是1
    其算法为:每个数等于它上方两数之和

    • 将数据保存在二维数组中,便于赋值以及输出
    • 先对第一列以及对角线进行处理
    • 再对中间需要用算法进行变化的值进行处理
    • 最后依次输出即可
    #include 
    #include 
    using namespace std;
    
    /*
    杨辉三角 - 等腰三角形,两个最外边都是1
    算法:每个数等于它上方两数之和
    */
    int main(){
    	
    	// 为了行数从1开始,就设置n为9 
    	const int n=9;
    	int i,j,a[n][n];
    	
    	//设置第一列和对角线元素的值为1
    	for (i=1;i<n;i++){		
    		a[i][i]=1;//使最右侧边全为1
    		a[i][1]=1;//使最左侧边全为1
    	}
    	
    	//从第三行开始
    	for (i=3;i<n;i++)		
    		for (j=2;j<=i-1;j++) //j始终慢i一步
    			//每个数等于它上方两数之和
    			a[i][j]=a[i-1][j-1]+a[i-1][j]; //如a32=a21+a22[a32代表第三行第二个]
    	   
    	
    	//输出数组各元素的值
    	for (i=1;i<n;i++){			//从第一行开始
    		for (j=1;j<=i;j++)			//利用j将每一行的数据全部输出
    			cout<<a[i][j]<< " ";	//前元素末尾与后元素末尾之间有空格位
    		cout<<endl;             // 换行 
    	}
    	cout<<endl;
    	return 0;
    }
    
    

    在这里插入图片描述

    改进:输出n行的杨辉三角,n由用户输入

    只需要修改一下输入部分即可。
    在这里插入图片描述

    #include 
    #include 
    using namespace std;
    
    /*
    杨辉三角 - 等腰三角形,两个最外边都是1
    算法:每个数等于它上方两数之和
    */
    int main(){
    	
    	// 为了行数从1开始,就设置n为9 
    	int n_temp = 1;
    	cout <<  "请输入杨辉三角行数(整数):" << endl;
    	cin >> n_temp; 
    	int n = n_temp+1;
    	int i,j,a[n][n];
    	
    	//设置第一列和对角线元素的值为1
    	for (i=1;i<n;i++){		
    		a[i][i]=1;//使最右侧边全为1
    		a[i][1]=1;//使最左侧边全为1
    	}
    	
    	//从第三行开始
    	for (i=3;i<n;i++)		
    		for (j=2;j<=i-1;j++) //j始终慢i一步
    			//每个数等于它上方两数之和
    			a[i][j]=a[i-1][j-1]+a[i-1][j]; //如a32=a21+a22[a32代表第三行第二个]
    	   
    	
    	//输出数组各元素的值
    	for (i=1;i<n;i++){			//从第一行开始
    		for (j=1;j<=i;j++)			//利用j将每一行的数据全部输出
    			cout<<a[i][j]<< " ";	//前元素末尾与后元素末尾之间有空格位
    		cout<<endl;             // 换行 
    	}
    	cout<<endl;
    	return 0;
    }
    
    

    在这里插入图片描述

    2、找出二维数组中的鞍点

    设计一个算法找出二维数组中的鞍点,即该位置上的元素在该行最大、在该列最小,数组也有可能没有鞍点

    #include 
    #include 
    using namespace std;
    int main()
    {
      bool flag;                               //声明一个布尔变量;
      const int n=3,m=3;                       //定义常变量行和列
      int i,j;
      int a[n][m];
      int k,max,maxj;                         //maxj为该行最大值的列标
    
      cout<<"请输入一个3乘3的二维数组:"<< endl;
      for(i=0; i<n; i++)
      {
        for(j=0; j<m; j++)
        {
          cin>>a[i][j];
        }
      }
      
      for(i=0; i<n; i++)                       //求出该行的最大值的列下标;
      {
        k=a[i][0];
        max=0;
        for(j=0; j<m; j++)
        {
          if(a[i][j]>k)
          {
            max=a[i][j];
            maxj=j;  
          }
        }
         flag=true;                           //默认flag为真
         for(k=0; k<n; k++)                   //判断该行是否是其所在列的最小值;
         { 
            if(max>a[k][maxj])
            {
              flag=false;                    //如果不是最小,继续下一行(i=1)的内循环
            }
         }
    
       if(flag)                              //如果是最小,则输出
        {
          cout<<"a["<<i<<"]["<<maxj<<"]="<<max;
          cout<<endl;
          break;
        }
      }
      if(!flag)
      {
        cout<<"没有鞍点!";
      }
      return 0;
    }
    
    

    在这里插入图片描述

    3、字符串b中的字符复制到数组a当中

    编写一个函数void strcpy(char a[],char b[]);将字符串b中的字符复制到数组a当中。(要求不使用C++函数库中的strcpy()函数)

    #include
    using namespace std;
    #define size 200 //字符串的最大长度
    void strcopy(char * pa , char * pb)
    {
    	int i;
    	for( i=0;pa[i]!='\0';i++ ) 
    		pb[i] = pa[i];
    	pb[i] = '\0';
    }
    int main()
    {
    	int i;
    	char a[15] = "Hello World";
    	char b[] = "Hi World";
    	strcopy(b,a);
    	// b中的元素进入a中 
    	for(i=0;a[i]!='\0';i++){
    		printf("%c",a[i]);
    	}
    	printf("\n");
    }
    

    在这里插入图片描述

    改进:b由用户输入

    #include
    using namespace std;
    #define size 200 //字符串的最大长度
    void strcopy(char * pa , char * pb)
    {
    	int i;
    	for( i=0;pa[i]!='\0';i++ ) 
    		pb[i] = pa[i];
    	pb[i] = '\0';
    }
    int main()
    {
    	int i;
    	char a[size],b[size];
    	// 控制行输入 
    	printf("请输入数组b:");
    	gets(b);
    	
    	// 调用函数 
    	strcopy(b,a);
    	// b中的元素进入a中 
    	printf("复制后的数组a:");
    	for(i=0;a[i]!='\0';i++){
    		printf("%c",a[i]);
    	}
    	printf("\n");
    }
    

    在这里插入图片描述

  • 相关阅读:
    SQL注入漏洞解析-less-8(布尔盲注)
    AOP的概念和使用
    【JS】Chapter11-正则&阶段案例
    Synchronized和volatile 面试简单汇总
    Leetcode_C++之238. Product of Array Except Self(除本身元素之外数组其他元素的积)
    力扣(LeetCode)272. 最接近的二叉搜索树值 II(2022.09.29)
    【云手机】数据安全如何保障?
    Go语言学习(三)包的使用
    String的compareTo()方法使用场景介绍及全量ASCII 码表(完整版)
    Flir Blackfly S工业相机:颜色校正讲解及配置与代码设置方法
  • 原文地址:https://blog.csdn.net/weixin_42198265/article/details/127099698