打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++复合类型
#include <iostream>
#include <cstring> //C 语言中的 string.h  用 strlen() function
void arrayTest(void); // array 练习
void stringTest(void);// 字符串练习
void stringTest_one();//字符串练习
void stringGetline(); //面向行输入
void stringGet(); //面向行输入
void CopyArray(int *& array1, int *& array2);
//void CopyArray(const int& array1, int& array2);
//void ArraySort(int (&array)[4]);
void ArraySort(int array[], int cnt);
void ArrayCopy(int array1[], int array2[]);
int main(void)
{
//arrayTest();
//stringTest();
//stringTest_one();
//stringGetline();
//stringGet();
/*
当 用getline  get  cin  混合输入时 要注意
换行符 会结束当前的输入 但是会把换行符保存在 输入的队列中 如果下面还有输入的设置
那么他将读取这个换行符 所以会导致 第二次没有输入的机会
*/
int a[] = {1,2,3,4};
int b[4] = {0};
/*for(int i = 0; i< (sizeof(a) / sizeof(int)); i ++)
{
b[i] = a[i];
}*/
//memcpy(b, a, 4 * sizeof(int)); // 数组深copy 相互不影响  参数:目标数组  原数组  长度
ArrayCopy(a, b); // 数组copy
ArraySort(b,sizeof(b)/sizeof(int)); // 降序
// a[0] = 100;
for(int i = 0; i < 4; i++)
{
std::cout<<b[i]<<std::endl;
}
std::cout<<&b<<std::endl;
return 0;
}
//
void ArrayCopy(int array1[], int array2[]) // 这里的引用 必须给出 元素个数 否则会出错
{
for (int i = 0; i < 4; i++)
{
array2[i] = array1[i];
}
}
//void ArraySort(int (&array)[4])
void ArraySort(int array[], int cnt) // 这里的引用 必须给出 元素个数 否则会出错
{
for(int i = 0; i< cnt; i++)
{
for(int j = i + 1;j <cnt ; j++ )
{
if (array[i] < array[j])
{
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
void arrayTest(void)
{
/*
声明数组:1.元素的个类型 2.数组名 3. 数组元素的总数
typeName arrayName[arraySize]
arraySize  必须是整型常数 或者 常量表达式 就是 不能是变量
索引是从 0 开始的 所以 最后一位 元素 是 [arraySize - 1]
*/
int yams[5] = {0}; // 5个元素 的初始值都是 0
//int m[5] {0, 1, 2, 3} C++11 可以这样初始化
for(int i = 0; i < (sizeof(yams) / sizeof(int)); i++)
{
std::cout<<"yams"<<
"["<<i<<"]"<<
"---------->"<<yams[i]
<<std::endl;
}
/*
初始化规则:
1.初始化数组时,提供的值可以少于数组的元素数目, 编译器将其他元素设置为0
2.定义时 如果不给 arraySize 那么 在后面 值列表里 写几个值 那么 arraySize 就是几
*/
}
void stringTest(void)
{
/*
字符串是储存在内存的连续字节中的一系列字符
在 C++ 处理字符串有两种
1.C 风格的
char dog[3] = {'b','a','c'}  -- 这个不是字符串 因为 字符串是空字符(\0)结束
char dog[4] = {'b','a','c','\0'}  这个是字符串
char dog[] = "bac";   这样 隐藏空字符 但是也包括在里面
2. C++ 中 的string类库
*/
const int Size = 15;
char name1[Size];
char name2[Size] = "C++owboy";
std::cout<<"Howdy! I'm"<<name2<<std::endl;
std::cout<<"!what's your name?"<<std::endl;
std::cin>>name1;
std::cout<<"well,"<<name1<<",your name has"<<std::endl;
std::cout<<strlen(name1)<<"\t letters and is stored"<<std::endl;
std::cout<<"in an array of"<< sizeof(name1)<<"\t bytes"<<std::endl;
name2[3] = '\0';
std::cout<<"Here are the first 3 characters of my name:"<<name2<<std::endl;
//strlen() 返回数组中 字符串的长度 而 sizeof() 返回的是数组的长度
}
void stringTest_one()
{
/*
std::cin 当碰到 空白 (空格,制表符和换行符)结束 输入
*/
const int ArSize = 20;
char name[20];
char favorite[30];
std::cout<<"Enter your name"<<std::endl;
std::cin>> name;
std::cout<<"Enter your favorite"<<std::endl;
std::cin>> favorite;
std::cout<<"i  hava  some delicious\t" <<favorite<<std::endl;
std::cout<<"for you \t"<<name<<std::endl;
}
void stringGetline()
{
/*
getline()
读取整行的输入,通过回车键 来确定输入结束
两个参数,第一个要输入的数组名,第二个是长度
如果长度输入20 那么 他最多读取19个字符 最后一个留给空字符来结束
在有效的读取长度内 碰到 回车键结束读取
getline 不会将换行符现实在屏幕上
*/
const int ArSize = 20;
char name[20];
char favorite[30];
std::cout<<"Enter your name"<<std::endl;
std::cin.getline(name, 20);
std::cout<<"Enter your favorite"<<std::endl;
std::cin.getline(name, 30);
std::cout<<"i  hava  some delicious\t" <<favorite<<std::endl;
std::cout<<"for you \t"<<name<<std::endl;
}
void stringGet()
{
/*
get() 变体很多 其中一个和 geline用法  参数 都一样。
但是get函数读取并保存回车键 这样在 第二次调用get()时 第一个字符就是上一次的回车键
这样就借用 get另一种形式 那就是 什么参数都不传,这样就接受一个字符
因为 cin.get() 返回的是一个cin的对象 所以 可以直接 cin.get().get()
*/
const int ArSize = 20;
char name[20];
char favorite[30];
std::cout<<"Enter your name"<<std::endl;
std::cin.get(name, 20).get();
std::cout<<"Enter your favorite"<<std::endl;
std::cin.get(name, 20);
std::cout<<"i  hava  some delicious\t" <<favorite<<std::endl;
std::cout<<"for you \t"<<name<<std::endl;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C++ 流
C/C++ memset的作用以及memcpy和strcpy的区别
delete p和delete[] p的区别
Winx基本类参考手册之AutoFreeAllocT
cin.cpp
设计带构造函数的Dog类 代码参考
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服