首页 > 其他分享 >数组与字符串

数组与字符串

时间:2024-10-19 23:46:45浏览次数:9  
标签:std main cout int 数组 字符串 using include

数组

一维数组
构造的数据类型之一,由若干数据类型相同的元素组成。其中数组名是地址常量不可修改,所以不能赋值操作,sizeof(数组名)求总内存空间。
特点:数组不赋初始值,随机生成
static修饰,默认位0
部分赋值,其余默认为0

//验证以上
#include <iostream>
using namespace std;
int main()
{
	int a[5];
	static int b[8];
	int c[6]={3,3,2};
	for(int i=0;i<5;i++)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl;
	for(int i=0;i<8;i++)
	{
		cout<<b[i]<<" ";
	}
	cout<<endl;
	for(int i=0;i<6;i++)
	{
		cout<<c[i]<<" ";
	}
	cout<<endl;
	return 0;
}

以上是输出结果

//对一组数据进行冒泡排序
#include <iostream>
using namespace std;
int main()
{
	int arr[8]={3,76,99,34,6,78,46,77};
	cout<<"排序前数据为:";
	int n = sizeof(arr)/sizeof(int);//求个数
	for(int i=0;i<n;i++)
	{
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	int temp;
	//开始冒泡排序
	for(int i=0;i<n-1;i++)//第一层只用到n-1
	{
		for(int j=0;j<n-1-i;j++)//第二层再减i
		{
			if(arr[j]>arr[j+1])//大的数往后冒,只比较j和j+1
			{
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	cout<<"排序后数据为:";
	for(int i=0;i<n;i++)
	{
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	return 0;
}

在这里插入图片描述以上是输出结果
二维数组
[行] [列],其中元素个数=行数*列数,永远是行序优先
特点:连续存储
数组名是地址常量,可以用sizeof求总空间
只能省略行不能省略列

//验证以上
#include <iostream>
using namespace std;
int main()
{
	int a[3][2]={{5,3},{1,2},{7,6}};
	int b[][3]={{3,2},{2,1}};
	int n = sizeof(a)/sizeof(int);
	cout<<"元素个数是:"<<n<<endl;
	cout<<"二维数组a首地址是:"<<&a<<endl;
	cout<<"a[0]首地址是:"<<&a[0]<<endl;
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<2;j++)
		{
			cout<<&(a[i][j])<<endl;//打印地址体现顺序存储
		}
	}
	cout<<"b数组行数是:"<<sizeof(b)/sizeof(b[0])<<"列数是:"<<sizeof(b[0])/sizeof(int)<<endl;
	cout<<"b数组元素"<<endl;
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<3;j++)
		{
			cout<<b[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<endl;
	return 0;
}

在这里插入图片描述以上是输出结果

//打印杨辉三角前十行
#include <iostream>
using namespace std;
#define Max 10//可以随意打印前任意行
int main()
{
	int a[Max][Max]={0};//先初始化为0
	for(int i=0;i<Max;i++)
	{
		a[i][0]=1;//定义列全部为1
		for(int j=1;j<=i;j++)
		{
			a[i][j] = a[i-1][j-1]+a[i-1][j];//当行元素是上一行前两个之和
		}
		for(int j=0;j<=i;j++)//输出要从0开始
		{
			cout<<a[i][j]<<"\t";	
		}
	}
	return 0;
}

在这里插入图片描述以上是输出结果
**字符数组 **
整型0 = 字符型’\0’ = NULL
其中由’\0’结束的字符数组可以称为字符串

//对字符数组的认识,这里是想看没有定义大小的1和已经定义大小的3的区别
//但是好像有点问题后面再改
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
        char arr1[]= {'a','b','c'};
        char arr2[6]= {'b','c','d'};
        char arr3[2]= {'e','e','d'};
        int n = strlen(arr1);
        int m = strlen(arr2);
        int k = strlen(arr3);
        cout<<"arr1地址排序:"<<endl;
        for(int i = 0;i<n;i++)
        {
        	cout<<(&arr1[i])<<endl;
        }
        cout<<"arr2地址排序:"<<endl;
       	for(int i = 0;i<m;i++)
        {
        	cout<<(&arr2[i])<<endl;
        }
         cout<<"arr3地址排序:"<<endl;
       	for(int i = 0;i<k;i++)
        {
        	cout<<(&arr3[i])<<endl;
        }
        return 0;
}

//将输入的字符串逆序输出
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
        char ch[100],temp;
        cout<<"input string:";
        cin>>ch;
        int n = strlen(ch);//求字符个数
        for(int i = n-1;i>=0;i--)
                cout<<char(ch[i]);//直接逆序输出
        cout<<endl;
        int i= 0,j=n-1;
        while(i<j)//首尾交换i+j-直到相遇
        {
                temp = ch[i];
                ch[i] = ch[j];
                ch[j] = temp;
                i++;
                j--;
        }
        for(int i = 0;i<n;i++)
                cout<<char(ch[i]);
        cout<<endl;
        return 0;
}
     

在这里插入图片描述输出结果如上

//关于多维数组再写一个找最大值的例子
#include <iostream>
using namespace std;
int main()
{
	int a[2][3] = {{2,4,78},{5,56,88}};
	int row=0;
	int col=0;
	for(int i = 0;i<2;i++)
	{
		for(int j = 0;j<3;j++)
		{
			if(a[row][col]<a[i][j])
			{
				row = i;
				col = j;
			}
		}
	}
	cout<<"最大值是:"<<a[row][col]<<endl;
	return 0;
}

比较常用的字符串函数
头文件<string.h>
strlen():得到字符串长度,\xhh 十六进制 \ddd八进制
strcpy(1,2): 拷贝字符串1是复制结果要足够大,‘\0’也有拷贝
strcat(1,2):链接字符串2接在1后面,注意1的’\0’要取消,新串最后加
ctrcmp(1,2):比较是否相对,一个一个对比不等结束,遇到’\0’结束(正负表示两个串的大小不过意义不大)
strncpy(1,2,n):指定长度复制
strncat(1,2,n):指定2的长度接在1后面
strncmp(1,2,n):自动位数比较
strcasecmp(1,2):忽略大小写比较
strchr(p,c):查找单个字符返回地址
strrchr(p,c):反向查找
strstr(p,c):查找字符串
判断数据类型的函数
头文件<ctype.h>
isalpha():判断字母
isupper():判断大写
islower():判断小写
isdigit():判断数字
toupper():转大写
tolower():转小写

#include <iostream>
#include <stdio.h>
#include <ctype.h>
using namespace std;
int main()
{
        cout<<"请输入成绩:";
        int score;
        cin>>score;
        while((score = getchar())!= EOF)
        {
                if(isdigit(score))
                        break;
                if(isalpha(score))
                {
                        cout<<"请输入成绩:";
                        cin>>score;

                }

        }
        return 0;
}

标签:std,main,cout,int,数组,字符串,using,include
From: https://blog.csdn.net/qq_45080494/article/details/143027370

相关文章

  • lua插件之----【luaString 字符串类】
    API列表 接口原型说明luaString.left(str,num)获取字符串左侧指定数量的字符luaString.right(str,num)获取字符串右侧指定数量的字符luaString.mid(str,pos,num)获取字符串指定起始位置后的几个字符luaString.lTrim(str,filterStr)去掉字符串左侧指定......
  • MarsCode--字符串有多少种可能性【简单】
    问题描述给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,……,11翻译成“l”,……,25翻译成“z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。输入格式一个int型的数字,0<=num<=2的31次......
  • 代码随想录算法训练营day20| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树
    学习资料:https://programmercarl.com/0669.修剪二叉搜索树.html#算法公开课学习记录:669.修剪二叉搜索树(直接在原函数上操作,要根据情况用root的左右子树递归,因为子树中有满足条件的;前序:根左右)点击查看代码#Definitionforabinarytreenode.#classTreeNode:#def_......
  • C# 字符串拼接
    C#字符串拼接在C#中,可以使用多种方法来拼接字符串,以下是几种常见的方法:使用加号(+)操作符:  stringstr1="Hello";stringstr2="World";stringresult=str1+""+str2;//"HelloWorld"使用String.Concat方法:  stringresul......
  • js查缺补漏——引用类型对象和数组
    一、什么是引用类型——Object引用类型是一种数据结构,而对象是引用类型的实例。有时候也叫对象定义,包含对象的属性和方法。Object是原生引用类型之一。创建对象实例的方法:1.使用new操作符varobj=newObject()obj.name="aaa"obj.age=122.使用对象字面量的......
  • 数组
    数组目录​数组的概念数组的概念一维数组的创建和初始化一维数组的使用一维数组在内存中的存储sizeof计算数组元素个数​二维数组的创建二维数组的初始化二维数组的使用二维数组在内存中的存储C99中的变长数组​数组练习​1.数组的概念数组是......
  • 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一
    这里写目录标题问题详情分析问题代码展示问题详情剑指Offer56:一个整型数组nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例:输入:nums=[4,1,4,6]输出:[1,6]或[6,1]分析问题......
  • 钥匙对对碰:RSA加密解密(数字版&字符串版)JAVA实现
    钥匙对对碰:RSA加密解密(数字版)RSA加密的原理其实很简单,就是你有两把钥匙,一把叫公钥,一把叫私钥。这两把钥匙都有很特别的性质:用公钥加锁(加密)之后,只能用对应的私钥来解锁(解密),反过来也一样。我们来一步步看看它是怎么实现的。1.找两把钥匙的“材料”要做出公钥和私钥,首先需......
  • 数组的定义和初始化
    一、数组的定义数组:是一块连续固定大小的内存空间,有着索引的概念定义数组的语句格式:数据类型[]数组名;【推荐】数据类型数组名[];二、数组的静态初始化/*如果只是定义一个数组的话,没有给初始化值,相当于一个变量没有值,是不能够直接使用的如何对一个数组......
  • 字符串和字符的操作
    一、字符串和字符互相进行+运算注意:1、+号两边若都没有字符串,这个就是最普通的算数加法运算2、若有字符参与算数运算的话,java虚拟机会将该字符所对应的ASCII码表中的数值进行转换记住三个特殊的字符对应的ASCII码值:'0'-48......