今天花了很多时间写了一个没有实际用的程序,其中包括了除指针外几乎所有的数据类型。给新手看看,给新手哪怕一点点的启发,我就满足了。入门的时候,如果能看懂这些我想相信还是有帮助的。这其中包含了各种变量的各种定义,不同初始化方法,使用,以及需要注意的地方等等。
#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上找到我们满意的资料!学更深,越有趣。。。与君共勉!