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

来源:互联网 发布:淘宝水杯 编辑:程序博客网 时间:2024/05/21 10:29

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

#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上找到我们满意的资料!学更深,越有趣。。。与君共勉!


0 0
原创粉丝点击