C语言 数组
来源:互联网 发布:数据库规范化理论 编辑:程序博客网 时间:2024/06/11 03:48
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//函数的声明
void changeScalar(int x);
void changArray(int arr[5]);
int main(int argc,const char * argv[]) {
int sum = 0;
for (int i =1; i<= 100; i++)
{
sum += i;
}
/*
C语言的数组
1.数组的概念及定义
2.访问数组
3.操作数组
4.字符数组和 字符串数组
5.数组作为函数参数
6.二维数组
7.结构体的定义及使用
*/
/*
数组的概念
数组是一个集合,它在计算机内存空间中是一串连续的地址空间,它可以存储多个 同类型的 变量
数组是一个存储多个同类型 变量连续的 集合
数组的定义:
数组的类型 数组名[长度] = {元素1,元素2,...};
*/
int array1[4] = {1,4,5,7};
int array2[] = {1,5};
int array3[10] = {1,3,6,7};
float array4[] = {3.9,45};
float array5[] = {3.4,4,5};
//字符数组
char str[] = {'b','o','k','a','n'};
//字符串数组
char str1[] = "bokan";
/*
访问数组的元素,下标访问
在C语言中,下标是从0开始的,因为数组的元素是顺序存储的,所以后面的元素下标依次累加一,数组最后一个元素的下标为数组个数减去一。
*/
int element = array1[0];
printf("element = %d\n",element);
//求数组元素的个数 sizeof
int count = sizeof(array1) /sizeof(int) ;
// printf("count = %d\n",count);
for (int i =0; i < count; i++)
{
printf("array1[%d] = %d\n",i,array1[i]);
}
//操作数组
int array[] = {1,5,6,8,9,10};
count =sizeof(array)/sizeof(int);
//求数组里面元素的和
int sum2 = 0;
for (int i =0; i < count; i++) {
sum2 += array[i] ;
}
// printf("%d\n",sum2);
//将数组倒序排序
int tmp ;
for (int i =0; i < count/2; i++)
{
tmp = array[i];
array[i] = array[count-1 - i];
array[count -1-i] = tmp ;
}
for (int i =0; i< count; i++)
{
printf("array[%d] = %d\n",i,array[i]);
}
/*
数组的定义必须要有大小
数组只能存放同一类型的变量
数组的元素是用下标访问,且下标从0开始
数组的长度为 sizeof(数组变量名) / sizeof(数组的类型)
*/
/*
随机产生20个在[1,100]的数,且此20个数不相同,存放到一个数组中,求和,求最大值,求最小值,求平均数
arc4random()
#include<stdlib.h>
*/
int arrayNum[20];
int i = 0;
do {
int num = arc4random() %100 +1;
if (i == 0)
{
arrayNum[0] = num;
i++;
}
int j = 0;
for (; j < i; j++)
{
if (arrayNum[j] == num)
{
break;
}
}
if (j == i)
{
arrayNum[i] = num;
i++;
}
}while (i < 20);
for (int i =0; i < 20; i++)
{
printf("arrayNum[%d] = %d\n",i,arrayNum[i]);
}
//求和
//求最大值
//求最小值
//冒泡排序算法
count =sizeof(arrayNum) / sizeof(int);
printf("排序前的顺序:");
for (int i =0; i < count; i++)
{
printf("%d ",arrayNum[i]);
}
printf("\n");
//排序开始,外层循环为趟数,比数组元素个数少一
for (int i =0; i < count -1; i++)
{
//每趟排序所用循环
for (int j =0; j < count -1 -i; j++)
{
if (arrayNum[j] > arrayNum[j+1])
{
int temp = arrayNum[j];
arrayNum[j] = arrayNum[j+1];
arrayNum[j+1] = temp;
}
}
// printf("第%d趟循环排序的结果为: ",i+1);
//
// for (int k = 0; k< count; k++)
// {
// printf("%d ",arrayNum[k]);
// }
// printf("\n");
}
printf("冒泡排序后的值为:\n");
for (int i =0; i < count; i++)
{
printf("arrayNum[%d] = %d\n",i,arrayNum[i]);
}
//最小值就是排序后数组的第一个元素
//最大值就是排序后数组的最后一个元素(count -1)
//求平均求和/个数
//字符数组和 字符串数组
char c1[10] = {'i','b','k','a','n'};
char c2[] = {'w','i','s','d','o','m'};
/*
字符数组:
如果花括号提供的字符个数大于数组长度,按语法错误处理;
如果小于数组长度,则只将这些字符数组中前面那些元素算上,其余的元素自动定位空字符(即'\0')
*/
//字符数组初始化的另一种方式--即可以用字符串常量来初始化字符数组
char newC1[] = "ibokan";
/*
什么是字符串?
字符串是一组字符的组合,可以用来描述文本信息。但是,在C语言中,无法将一个字符串作为一个整体存储到一个变量中。所以。将字符串拆分为多个字符,然后存储到一个字符数组中。
注意:
1.在C语言中,使用双引号引起来的字符序列为字符串。字符串也为字符常量,在存储字符串的时候,结尾加上一个末端字符'\0'作为结束标志。
2.上述这种字符数组的整体赋值只能在字符数组初始化时 使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,
char newC1[] ;
newC1 = "ibokan";
*/
char st1[13] ="Hello world!";
//等价于
char st2[13] = {'H','e','l','l','o',' ','w','o','r','l','d','!','\0'};
//注意:数组名就是我们的数组元素首地址,所以在scanf()函数中,只需要使用数组名即可
int ii ;
scanf("%d",&ii);
char st3[10];
// scanf("%s",st3);
// printf("%s\n",st3);
//gets 与 puts函数(书P142)
gets(st3);
puts(st3);
/*
字符串的一些函数,包含在 #include<string.h>头文件中
strcpy(str1,str2);
strcat(str1,str2);
strlen(str1);
*/
char st5[100] ="ibokan";
char st6[] = "wisdom";
strcpy(st5, st6);
puts(st5);
strcat(st5, st6);
puts(st5);
//strlen返回的是无符号整型,所以需要强制转换
int length =(int)strlen(st5);
printf("length = %d\n",length);
//数组作为函数参数与基本数据类型作为函数参数的区别
//基本数据类型作为函数参数时
int x = 10 ;
printf("调用函数前x的值是:%d\n",x);
changeScalar(x);
printf("调用函数后x的值是:%d\n",x);
//数组作为函数参数
int myArray[] = {1,2,3,4,5};
printf("调用函数之前的myArray数组中各个元素的值为:\n");
int count1 = sizeof(myArray) /sizeof(int);
for (int i =0; i< count1; i++)
{
printf("myArray[%d] = %d\n",i,myArray[i]);
}
//函数的调用
changArray(myArray);
for (int i =0; i < count1; i++)
{
printf("myArray[%d] = %d\n",i,myArray[i]);
}
/*
注意:C语言中将数组作为参数进行数据传递时,无论数据量大小,不将数组进行复制,而是将该数组本身传入函数内部。而函数内部所操作的数据就是函数外部所定义的那个数组。
*/
//数组里面的元素能否是数组?
int theArray1[] = {1,2,3};
int theArray2[] = {4,5,6};
int resultArray1[][3] = {{1,2,3},{4,5,6}};
/*
对于 int float double
int 数组名[][n] = {{},{},...};
*/
int arr1[][3] = {1,4,5,1,5,7};
//等价于
//int arr1[2][3] = {{1,4,5},{1,5,7}};
int arr2[][3] = {1};
//访问二维数组的所有元素
for (int i =0; i<2; i++)
{
for (int j =0; j<3; j++)
{
int r = arr1[i][j];
printf("%d ",r);
}
}
printf("\n");
char R[][2] = {{'s','s'},{'x','x'}};
for (int q =0; q <2; q++) {
for (int w =0; w <2; w++) {
char t = R[q][w];
printf("%c ",t);
}
}
printf("\n");
int LucyNum = arc4random() %19 +1;
printf("luckNum = %d",LucyNum);
return 0;
}
void changeScalar(int x)
{
//实现函数
x =1000;
}
void changArray(int arr[5])
{
for (int i =0; i <5 ; i++)
{
arr[i] +=10;
}
}
- C语言动态数组
- C语言的数组
- c语言 数组 指针
- c语言数组详解
- C语言字符数组
- C语言--指针,数组
- C语言变长数组
- C语言数组
- C语言数组
- 【C语言】数组--待续
- C语言数组
- C语言 数组拆分
- c语言 动态数组
- C语言数组
- C语言:数组
- c语言指针数组
- c 语言数组
- C语言变长数组
- 使用http://www.mob.com/#/完成短信验证功能
- oracle学习视频
- 在eclipse中使用maven搭建web项目
- js 类与constructor属性
- error occurred during initialization of vm java/lang/noclassdeffounderror java/lang/object
- C语言 数组
- 解决CircleImageView不能用Afinal的FinalBitmap加载网络图片问题
- RequireComponent 需要组件
- 人脸检测研究2015最新进展(持续更新)
- 闪回日志 自动删除 实验记录
- 网站浏览器来路判断进行站点切换
- 黑马程序员_java判断与循环语句
- Ubuntu15.04 C语言操作Redis
- 浅析计算机网络(2) -- DNS工作原理