C程序——从一个程序看几乎所有的数据类型

今天花了很多时间写了一个没有实际用的程序,其中包括了除指针外几乎所有的数据类型。给新手看看,给新手哪怕一点点的启发,我就满足了。入门的时候,如果能看懂这些我想相信还是有帮助的。这其中包含了各种变量的各种定义,不同初始化方法,使用,以及需要注意的地方等等。

#include<stdio.h>
#include<string.h>

int main()
{
	printf("\n\n——————6种基本类型情况——————\n");
	//c语言的6总基本整型
	short a=1;
	int b=2;
	long c=3;
	float d=4.4f;
	double e=5.53;
	double e2=3.1562348432485654856241841;
	char f='a';

	printf("short	占用字节数为:%d\ta=%d\n",sizeof(short),a);
	printf("int	占用字节数为:%d\tb=%d\n",sizeof(int),b);
	printf("long	占用字节数为:%d\tc=%d\n",sizeof(long),c);
	printf("float	占用字节数为:%d\td=%f\n",sizeof(float),d);
	printf("double	占用字节数为:%d\te=%f\n",sizeof(double),e);
	//注意这里的格式控制,%m.nf-->m表示输出的列数,n表示小数后面的位数
	printf("double	占用字节数为:%d\te2=%20.15f\n",sizeof(e2),e2);
	printf("char	占用字节数为:%d\tf=%c\n",sizeof(char),f);
	
	//一维数组的整初始化
	int array10[5]={1,2,3,4,5};
	//一维数组的部分元素初始化,如果前面为几个为0,则写上,如果后面为0,系统自动补0;
	int array11[5]={0,0,1,3};
	//当元素固定的时候,可以不用写到底有几个
	int array12[]={1,2,3,4,5,6,7,8};
	
	//二维数组初始化,详情请看打印的结果
	int array20[2][3]={{11,22,33},{44,55}};
	int array21[2][3]={11,22,33,44,55,66};
	int array22[][2]={{111,222},{333,444},{555,666}};
	//打印array10[5]的情况
	printf("array10[5]的情况:\n");
	for(int i=0;i<5;i++)
	{
		printf("%d\t",array10[i]);
	}
	//打印array11[5]的情况,比较两个的异同
		printf("\narray11[5]的情况:\n");
	for(int j=0;j<5;j++)
	{
		printf("%d\t",array11[j]);
	}


printf("\n\n——————二维数组情况——————\n");
	{	
	//打印二维数组的情况
	
	//array20的情况
		printf("\narray20[2][3]的情况:\n");
		for(int i=0;i<2;i++)
		{	
			printf("\n");
			int j=0;
			while(j<3)
			{
				printf("%d\t",array20[i][j++]);
			}
		}
	}
	//array21情况
	{
	printf("\narray21[2][3]的情况:\n");
	for(int i=0;i<2;i++)
	{	
		printf("\n");
		int j=0;
		while(j<3)
		{
			printf("%d\t",array20[i][j++]);
		}
	}
	}
	printf("\n\n——————字符数组情况——————\n");
	//字符数组初始化,二维数组基本一样
	char charArr[10]={'I',' ','a','m',' ','h','a','p','p','y'};
	
	
	
	printf("\ncharArr的情况:\n");
	//printf("%s\n",charArr);//--->这是以字符串的方式输出charArr的值,但是%S是遇到\0结束,所以输出有乱码
	//输出charArray的情况
	for(int k=0;k<11;k++)
	{printf("%c",charArr[k]);}
	printf("\n");


	
	//字符串数组情况
	printf("\n\n——————字符串数组情况——————\n");
	//下面这三种初始化的效果是一样的,详情见输出
	char charArr1[]="I am happy too";
	char charArr2[]={"I am happy too"};
	char charArr3[]={'I',' ','a','m',' ','h','a','p','p','y',' ','t','o','o','\0'};
	//%s遇\0结束
	printf("%s",charArr1);
	printf("\n");
	printf("%s",charArr2);
	printf("\n");
	printf("%s",charArr3);
	
	printf("\n\n——————枚举类型情况——————\n");
	enum Weekday{monday=1,tuesday=2,wednesday,thursday,friday,saturday,sunday} workday,weekend;
	//也可以不声明有名字的枚举类型,而直接定义枚举变量
//	enum {monday,tuesday,wednesday,thursday,friday,saturday,sunday} workday,weekend;

	enum Color{red,black,yellow,blue};
	enum Color skirt=red;
	 int day;
	//程序在理解,看懂这个其他也能做出来
	printf("今天是星期几?(为了做测试,请输入6)");
	scanf("%d",&day);
	if(day==saturday&&skirt==0)
	{
		weekend=saturday;
	
//这儿我们可以看出,枚举中的成员是有值的,分别编号,从0开始
	printf("今天是%s,我们穿%s的skirt","weekend","red");
	}



	printf("\n\n——————结构体类型情况——————\n");
	//定义结构体
	struct Person
	{
		int age;
		double height;
		char *name;
	};
	
	struct Person tom={20,1.77,"tom"};
	//这种也是可以的,就是用(.)加成员的方法进行初始化,不过我的编译器好像不支持
	//struct Person Jerry={.name="jerry"};

	printf("我叫%s,今年%d岁,身高%4.2f\n",tom.name,tom.age,tom.height);
//	printf("我叫%s,今年%d岁,身高%4.2f\n",jerry.name,jerry.age,jerry.height);
	


	//结构体数组
{
	printf("\n——下面用一个投票解释结构体数组——\n");
	printf("输入你选的人:AAA,BBB,CCC三人中选择一个");
	struct People
	{
		char name[20];
		int count;
	}leader[3]={"AAA",0,"BBB",0,"CCC",0};

	int i,j;
	char leader_name[20];
	for(i=0;i<6;i++)
	{
		scanf("%s",leader_name);
		for(j=0;j<3;j++)
			if(strcmp(leader_name,leader[j].name)==0)
				leader[j].count++;
	}
	printf("\n结果是:\n");
for(i=0;i<3;i++)
{
	printf("%5s:%d\n",leader[i].name,leader[i].count);
}


}
	return 0;
}

如果还有什么疑问,请留言。

对数据类型来说,我们很多都可以在百度或者google上找到我们满意的资料!学更深,越有趣。。。与君共勉!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值