C语言学习日记Day04数组及字符串

在这里插入图片描述
在这里插入图片描述

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0201(void)
{
	//变量定义  
	//数据类型 变量 = 值;
	int a;
	//数组定义
	//数组类型 数组名[元素个数] = {值1,值2,值3。。。。。};
	int array[10] = { 1,2,3,4,5,6,7,8,9,10 };

	//数组下标
	//数字名[下标]
	//数组元素下表是从0开始的到数组原元素个数-1
	printf("%d\n", array[1]);
	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", array[i]);
	}
	return 0;
}
int main0202()
{ //数组原素参与计算
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	arr[3] = arr[5];
	arr[2] = arr[3] * 2; 
	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", arr[i]);
	}
	return 0;
}

int main ()
{ //数组在内存中存储方式与大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%p\n", &arr[0]);
printf("%p\n", &arr[1]);
printf("%p\n", &arr[2]);
printf("%p\n", &arr[3]);
printf("%p\n", &arr[4]);
printf("%p\n", &arr[5]);

//数组名 不允许被赋值,因为数组名是一个常量,指向数组首地址
printf("%p\n", &arr);//与&arr[0]结果相同
printf("%p\n", &arr[0]);



//数组在内存中占的大小 = 数组类型*元素个数
printf("数组在内存中占的大小=%d\n", sizeof(arr));//
printf("数组元素的大小=%d\n", sizeof(arr[0]));
printf("数组元素的个数=%d\n", sizeof(arr)/sizeof(arr[0]));


for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
	printf("%d\n", arr[i]);
}
return 0;
}

十只小猪称重

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define SIZE 10
int main(void)//十只小猪称重
{
	int arr[SIZE];
	for (int i = 0; i < SIZE; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	int MAX = arr[0];
	for (int j = 1; j < SIZE; j++)
	{
		if (MAX < arr[j])
		{
			MAX = arr[j];
		}
	}
	printf("最重的小猪为%d\n", MAX);
	return 0;
}
#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define SIZE 10
int main(void)//数组逆置
{
	int arr[SIZE] = { 1,2,3,4,5,6,7,8,9 ,10};
	int a = 0;
	int j = SIZE - 1;
	for (int i = 0; i < SIZE/2; i++)
	{
		
		a = arr[i];
		arr[i] = arr[j];
		arr[j] = a;
		j--;

	}
	for (int i = 0; i < SIZE; i++)
	{
		printf("%d\n", arr[i]);
	}
	return 0;
}

冒泡排序

在这里插入图片描述

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(void)//冒泡排序
{
	int arr[10] = { 10,8,6,9,3,5,4,2,15,11 };//初始化数组
	int n = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < n-1; i++)//外层执行次数为  元素个数-1
	{//外层控制行
		for (int  j = 0; j < n-1-i; j++)//内层执行个数为 元素个数-1-执行次数
		{//内层控制行
			if (arr[j] > arr[j+1])
			{
				//比较元素,满足条件交换  通过< 或者 >控制升序或者降序
				int a = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = a;
			}
		}
	}
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

在这里插入图片描述

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0802(void)
{

	// 定义 二维数组  
	//数据类型 数组名[行][列] = {{值1,值2},{值1,值2},{值1,值2},{值1,值2}........}
	int arr[2][3] = { {1,2,3},{4,5,6} };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	
	printf("二维数组大小= %d\n", sizeof(arr));
	printf("二维数组首地址= %p\n", &arr);

	printf("二维数组一行大小= %d\n", sizeof(arr[0]));
	printf("二维数组第一行首地址= %p\n", &arr[0]);
	printf("二维数组第二行首地址= %p\n", &arr[0]);

	printf("二维数组元素大小= %d\n", sizeof(arr[0][0]));
	printf("二维数组第一个元素元素地址= %p\n", arr[0][0]);

	printf("二维数组行数大小= %d\n", sizeof(arr) / sizeof(arr[0]));
	printf("二维数组列数大小= %d\n", sizeof(arr[0]) / sizeof(arr[0][0]));

	//arr[0] = 100;  //error  arr 以及 arr [0]不可被更改
	
		return 0;
}
int main(void)
{

	// 二维数组的初始化  
	//int arr[2][3] = { {1,2,3},{4,5,6} };
	//int arr[2][3] = { 1,2,3,4,5,6 };
    //int arr[][3] = { 1,2,3,4,5,6 };
	int arr[][3] = { 1,2,3,4,5,6,7 };             //以上命名方式均合法
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}


	return 0;
}
int main0801(void)
{

	// 定义 一个数组  存储五名学生的三门成绩
	//求出每名学生的总成绩 平均成绩
	//求出每个学科的总成绩 平均成绩
	
	return 0;
}
#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0802(void)
{

	// 定义 二维数组  
	//数据类型 数组名[行][列] = {{值1,值2},{值1,值2},{值1,值2},{值1,值2}........}
	int arr[2][3] = { {1,2,3},{4,5,6} };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	
	printf("二维数组大小= %d\n", sizeof(arr));
	printf("二维数组首地址= %p\n", &arr);

	printf("二维数组一行大小= %d\n", sizeof(arr[0]));
	printf("二维数组第一行首地址= %p\n", &arr[0]);
	printf("二维数组第二行首地址= %p\n", &arr[0]);

	printf("二维数组元素大小= %d\n", sizeof(arr[0][0]));
	printf("二维数组第一个元素元素地址= %p\n", arr[0][0]);

	printf("二维数组行数大小= %d\n", sizeof(arr) / sizeof(arr[0]));
	printf("二维数组列数大小= %d\n", sizeof(arr[0]) / sizeof(arr[0][0]));

	//arr[0] = 100;  //error  arr 以及 arr [0]不可被更改
	
		return 0;
}
int main0803(void)
{

	// 二维数组的初始化  
	//int arr[2][3] = { {1,2,3},{4,5,6} };
	//int arr[2][3] = { 1,2,3,4,5,6 };
    //int arr[][3] = { 1,2,3,4,5,6 };
	int arr[][3] = { 1,2,3,4,5,6,7 };             //以上命名方式均合法
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}


	return 0;
}
int main0804(void)
{

	// 定义 一个数组  存储五名学生的三门成绩
	//求出每名学生的总成绩 平均成绩
	//求出每个学科的总成绩 平均成绩
	int arr[5][3];
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf_s("%d", &arr[i][j]);
		}
	}

	//打印学生成绩
	for (int i = 0; i < 5; i++)
	{
		int sum = 0;
		for (int j = 0; j < 3; j++)
		{
			sum += arr[i][j];
			printf("%d ", arr[i][j]);
		}
		printf("\n");
		printf("第%d名学生总成绩=%d\n", i + 1, sum);
		printf("第%d名学生平均成绩=%d\n", i + 1, sum/3);
	}

	for (int i = 0; i < 3; i++)
	{
		int sum = 0;
		for (int j = 0; j < 5; j++)
		{
			sum += arr[j][i];
		}
		printf("第%d门课程总成绩=%d\n", i + 1, sum);
		printf("第%d门课程平均成绩=%d\n", i + 1, sum / 5);
	}


	return 0;
}

在这里插入图片描述

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(void)
{
	//多维数组
	//三维数组  数据类型 数组名[层][行][列]
	int arr[2][3][4] =
	{
		{
			{1,2,3,4},
			{2,3,4,5},
			{3,4,5,6},
		}
	};
	/*int arr[][3][4] =
	{
		{
			{1,2,3,4},
			{2,3,4,5},
			{3,4,5,6},
		}
	};*///合法
	for (size_t i = 0; i < 2; i++)
	{
		for (size_t j = 0; j < 3; j++)
		{
			for (size_t k = 0; k < 4; k++)
			{
				printf("%d\t", arr[i][j][k]);
			}
			printf("\n");
		}
	}
	printf("三维数组大小%d\n", sizeof(arr));//2*3*4  层*行*列*sizeof(数据类型)
	printf("三维数组一层大小%d\n", sizeof(arr[0]));
	printf("三维数组一行大小%d\n", sizeof(arr[0][0]));
	printf("三维数组元素大小%d\n", sizeof(arr[0][0]));


	printf("层%d\n", sizeof(arr) / sizeof(arr[0]));
	printf("行%d\n", sizeof(arr[0]) / sizeof(arr[0][0]));
	printf("列%d\n", sizeof(arr[0][0]) / sizeof(arr[0][0][0]));
	
	return 0;
}

在这里插入图片描述

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(void)
{
	//定义字符数组
	//char arr[5];

	//字符
	// char ch = 'a';

	//字符串  字符串结束标志为\0   数字0等同于\0,但是不等同于'0'
	//char* ch1 = "hello";  等价于 char arr[6] = "hello";

	char arr[6] = "hello";
	printf("%s", &arr);
	return 0;
}
#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main1002(void)
{
	//定义字符数组
	//char arr[5];

	//字符
	// char ch = 'a';

	//字符串  字符串结束标志为\0   数字0等同于\0,但是不等同于'0'
	//char* ch1 = "hello";  等价于 char arr[6] = "hello";

	char arr[6] = "hello";
	printf("%s", &arr);
	return 0;
}
int main1003(void)
{
	

	char ch[10];//定义字符数组存储字符串
	scanf("%9s", ch); //加%9s 就不会出错
	printf("%s\n", ch);
	return 0;
}
int main1003(void)
{

	//拼接字符串
	char ch1[] = "hello";
	char ch2[] = "world";
	char ch3[20];

	int i = 0;
	int j = 0;
	while (ch1[i] != '\0')
	{
		ch3[i] = ch1[i];
		i++;
	}

	while (ch2[j] != '\0')
	{
		ch3[i + j] = ch2[j];
		j++;
	}
	ch3[i + j] = '\0';
	printf("%s", ch3);
	return 0;
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main1101(void)
{

	char ch[100];
	gets(ch);//通过键盘获取字符串   gets接收字符串可以带空格        不安全
	//scanf("%[^\n]", ch);//通过正则表达约束(接收非\n的任何东西) scanf也可以实现获取带空格字符串   不安全
	printf("%s\n", ch);
	return 0;
}

int main1102(void)
{

	char ch[100];
	fgets(ch,100,stdin);//通过键盘获取字符串   fgets接收字符串可以带空格  可以带回车        安全
	//fgets获取字符串少于元素个数会有 \n   当获取个数大于或等于元素个数 没有\n
	printf("%s", ch);
	return 0;
} 

int main1103(void)
{

	char ch[] = "hellow world";
	puts("hellow \0world");//自带换行,遇到\0 停止。
	puts(" ");//换行操作

	return 0;
}
 
int main1104(void)
{

	char ch[] = "hellow world";
	fputs(ch, stdout);//输出一个字符串 与 printf("%s" ch); 等效


	return 0;
}
int main1105(void)
{

	char ch[100] = "hellow world";
	printf("数组大小%d\n", sizeof(ch));
	printf("字符串大小%d\n", strlen(ch));

	return 0;
}

int main(void)   //实现strlen同功能函数
{

	char ch[100] = "hellow world";

	int len = 0;
	while (ch[len] != '\0')
	{
		len++;
	}
	printf("字符串长度%d\n", sizeof(ch));
	printf("字符串大小%d\n", strlen(ch));

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值