【c学习-8】
/*继承结构体*/
#include
// 定义子结构体
struct date{
int year;
int month;
int day;
};
//定义父结构体
struct student{
char name[20];
int age;
char sex;
struct date birthday; //父结构体包含子结构体
}; //初始化父结构体变量
int main(){
struct student student={"liupeng",18,"man",{2001,01,30}};
//主函数内分别调用子父结构体
printf("name:%s
",student.name);
printf("year:%dmonth:%dday:%d
",student.birthday.year,student.birthday.month,student.birthday.day);
}
/*结构体练习*/
#include
int main(){
//定义一个结构体并初始成员
struct books{
int money;
char bookname[10];
int dates;
char names;
};
struct books xiaomin={20,"浮生六记",2018,"xm"};
//对结构体成员变量值进行输出
printf("money:%d
bookname:%s
dates%d
names:%c
",xiaomin.money,
xiaomin.bookname,xiaomin.dates,xiaomin.names
);
}
/*结构体练习2*/
#include
//定义一个结构体
struct student {
char name[10];
int age;
char sex;
};
int main(){
//定义计数器,用于遍历结构体内成员
int i;
//初始化结构体成员
struct student stu[3]={
{"liu",18,"man"},
{"zhang",20,"wom"},
{"wu",40,"man"}
};
for(i=0;i<3;i++){
printf("name:%s
age:%d
sex:%c
",stu[i].name,
stu[i].age,stu[i].sex
);
}
}
/*结构体练习3*/
#include
#define N 5 //预定义常量N
//定义结构体
struct x{
int num;
int cro;
}a[10]; //初始化结构体变量
int main(){
//定义两个计数器
int i,j;
//循环遍历输入
for(i=0;i=1;i--)
for(j=i-1;j>=0;j--)
if(a[i].num
int main(){
//定义一个结构体
struct student{
char name[10];
int number;
float score[30];
int avg;
}stu; //定义结构体变量
//为结构体成员赋值
printf("请输入结构体成员的值:
");
scanf("%s%d",&stu.name,&stu.number);
scanf("%f%f%f",&stu.score[1],&stu.score[2],&stu.score[3]);
//计算平均值
stu.avg=(stu.score[1]+stu.score[2]+stu.score[3])/3;
printf("name:%s
avg:%d
",stu.name,stu.avg);
}
/*结构体练习*/
#include
//定义结构体
struct student{
int number;
char name[10];
int score;
};
//定义求结构体最大成员函数
int main(){
//void studentmax(){
//计数器
int i,m=0;
//初始化结构体成员
struct student stu[3]={
{101,"liu",100},
{102,"zhang",101},
{103,"wang",68},
};
//初始化最大分数
float maxscore;
maxscore=stu[0].score;
//循环遍历结构体成员
for(i=0;i<3;i++){
//判断
if(stu[i].score>maxscore){
//maxscore=m;
stu[i].score=maxscore;
m=i;
}
}
//对最大分数的名字和编号进行输出
printf("name:%s
number:%d
",stu[m].name,stu[m].number);
printf("score%f
",maxscore);
}
/*结构体练习*/
#include
#include
//定义一个结构体
void main(){
struct change{
char name[20];
int count;
};
//初始化结构体变量和成员
struct change people[20]={
{"liu",0},
{"zhang",0},
{"wu",0}};
//定义两个计数器
int i,j;
//初始化投票变量数组
char blieve[10];
//循环遍历投票数
for(i=0;i<10;i++){
printf("请输入你要投票给谁NO.i:
",i+1);
scanf("%s",&blieve);
//循环遍历比较投票与原票比较
for(j=0;j<3;j++){
if(strcmp(people[j].name,blieve)){
people[j].count++;
}
}
}
//循环统计得票数
for(i=0;i<3;i++){
printf("name:%s
count:%d
",people[i].name,people[i].count);
}
//printf("name:%s",people.name);
//printf("count:%d
",people.count);
}
/*结构体练习*/
//定义一个结构体
#include
#include //引入字符处理库文件
#define MAX 101 //预定义变量最大值
struct telstruct{
char name[10];
char tel[11];
};
//定义号码存储函数
int telFunction(struct telstruct *a){ //初始化结构体变量指针作为形参
//计数器
int i,n;
//struct telstruct *a;
//循环遍历判断
/*for(i=1;i<10;i++)*/
while(1){
scanf("%s",&a[i].name);
if(!strcmp(a[i].name,"#"))
break;
else
scanf("%s",&a[i].tel);
i++;
n++;
}
return n;
}
//定义号码搜索函数
void telSearch(struct telstruct *b , char *x,int n) //形参
{
//定义计数器
int i;
while(1){
if(!strcmp(b[i].name,x)){
printf("name:%s
,tel:%s
",b[i].name,b[i].tel);
break;
}
/*else{*/
i++;
n--;
//} //执行判断
if(n==0){
printf("no Found
");
break;
}
}
}
int main(){
//分别定义结构体,整形变量
/*char*/struct telstruct s[MAX];
int num;
char name[10];
//调用号码存储函数
num=telFunction(s);
printf("请输入你的姓名:
");
scanf("%s",&name);
//调用号码查询函数
telSearch(s,name,num);
}
/*结构体练习*/
//定义一个结构体
union {
char str[2];
int num;
}word; //定义结构体变量
int main(){
word.num=0x123;//初始化十六进制变量
printf("num:%x
",word.num);
printf("str:%x
",word.str[1]);
//修改十六进制字符变量
word.str[1]='b';
printf("str:%x
",word.num);
}
/*结构体和共用体练习*/
//定义结构体
struct{
int num;
char name[10];
char tp;
//定义共用体
union{
int x;
char y;
}jobs;
}person[2]; //分别定义结构体和共用体变量
int main(){
//计数器
int i;
//循环输入
for(i=0;i<2;i++){
//判断
if(person[i].tp=='t'){
scanf("%d",person[i].jobs.x/*person[i].y*/); //输入
}else if(person[i].tp=='s'){
scanf("%c",person[i].jobs.y);
}else{
printf("Error");
}
}
//循环输出
for(i=0;i<2;i++){
if(person[i].tp=='t'){
printf("num:%d
name:%s
tp:%c
%d",
person[i].num,person[i].name,person[i].tp,
person[i].jobs.x);
}else if(person[i].tp=='s'){
printf("num:%d
name:%s
tp:%c
%d",
person[i].num,person[i].name,person[i].tp,
person[i].jobs.y);
}
}
}
/*枚举练习*/
//定义枚举
#include
enum Week{Mon,Tues,Thir,Thur,Firl,Sat,Sun};
int main(){
// 定义整形变量
int x;
printf("请输入你的数字0-6:
");
scanf("%d",&x);
//循环遍历
switch(x){
case 1:
printf("mon");
break;
case 2:
printf("tues");
break;
case 3:
printf("thir");
break;
case 4:
printf("thur");
break;
case 5:
printf("firl");
break;
case 6:
printf("sat");
break;
default:
printf("sun");
}
}
/*--------这是一个预编译文件index.h--------*/
//定义预处理指令
#define P printf
#define S scanf
#define D %d
#define O &
/*----------这是主程序--------*/
//引入系统库文件和自定义库文件
#include
#include"index.h"
int main(){
//定义整形变量
int x=1,y=2,sum;
P("请输入x的值:
");
//S("D",Ox);
P("请输入y的值:
");
//S("D",Oy);
sum=x+y;
P("D",sum);
}
/*宏*/
#include
#define Test "hello world" //续行
"welcome my world" //定义一个宏
#undef Test //终止取消宏定义
int main(){
char x[20]="Test hello world"; //定义字符变量数组
printf("%s
%s
",x,Test);
}
/*
int main(){
union {
int a;
int b;
}x;
//输出共用体变量的内存
printf("%d",sizeof(x));
}
*/
/*宏参数*/
/*#include*/ //库文件包含指令
#include "stdio.h" //用户自定义文件包含指令
#define MIN(a,b)((a)*(b)+(b)) //定义宏运算
int main(){
int x,y; //定义整型变量
printf("请输入x和y的值:
");
scanf("%d%d",&x,&y);
printf("MIN:%d
",MIN(x,y)); //调用宏运算输出
}
/*预处理条件指令作用*/
//引入库文件
#include
#define NUM "hello world" //声明预处理常量
#line 100 "project7.c" //行号预定义命令
#pragma Message "terminal"
int main(){
printf("当前的行号是:%d
%s
",__LINE__,__DATE__);
#ifndef NUM
printf("你的预定义指令没有定义:
");
#else
printf(NUM"
");
#endif
//定义计数器
/*
int i=0;
//根据预处理条件指令判断计算NUM的值
#if NUM>10
i++;
//#else //#endif
#elif NUM==10
i+=50;
#else //#endif;
//#if NUM<10
i--;
//#endif
#endif
//对处理的NUM输出
printf("i:%d
",i);
*/
}
/*宏练习*/
#include
#define UPPERCASE 1 //预宏
int main(){
char *x="hello world"; //定义整型字符指针和字符变量
char y;
int i=0; //定义计数器
//循环
while((y=x[i])!=' '){
i++;
#if UPPERCASE
if(y>'a'&&y<'z')
y-=32; //转换小写
#else
if(y>'A'&&y<'Z'){
y+=32; //转换大写
}
#endif
printf("%c
",y);
}
}
/*宏练习*/
#include
#define swap(a,b){int c;c=a;a=b;b=c;} //预定义交换宏
int main(){
//定义两个计数器和两个整型数组
int i ,j,a[10],b[10];
//循环对整型数组输入
printf("请输入数组a内的值:
");
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
printf("请输入数组b内的值:
");
for(j=0;j<10;j++){
scanf("%d",&b[j]);
}
//循环对整形数组输出
printf("now输出数组a的值:
");
for(i=1;i<10;i++){
printf("a:%d
",a[i]);
}
printf("now输出数组b的值:
");
for(j=1;j<10;j++){
printf("b:%d
",b[j]);
}
//引用预定义交换宏,交换a和b的值
for(i=1;i<10;i++){
swap(a[i],b[i]);
}
//再次循环对交换后的a和b输出
printf("later输出数组a的值:
");
for(i=1;i<10;i++){
printf("a:%d
",a[i]);
}
printf("later输出数组b的值:
");
for(j=1;j<10;j++){
printf("b:%d
",b[j]);
}
}
/*宏练习*/
#include
#define FALSE 0
#define TRUE 1
#define EVEN(x)(((x)%2==0)?TRUE:FALSE)//宏表达式
int main(){
//计数器
int i;
//整型变量初始化
int sum=0;
for(i=0;i<10;i++){
if(EVEN(i))
sum+=i;
}
printf("sum:%d
",sum);
}
/*宏练习*/
#include
#define MIN(a,b,c)((a)>(b)?((b)>(c)?(c):(b)):((c)>(a)?(c):(a))) //宏表达式
int main(){
//定义整型变量
int x,y,z;
printf("请输入x y z的值:
");
scanf("%d%d%d",&x,&y,&z);
//引用宏表达式
printf("MIN:%d",MIN(x,y,z));
}
/*--------------预定义文件format.h------*/
#define INTERFACE(d) printf("%4d
",d) //预定义宏表达式
/*-------------------主程序文件project12.c------------------*/
#include
#include "format.h" //引入预定义文件
int main(){
int d; //定义整性变量
printf("请输入d的值:
");
scanf("%d",&d);
INTERFACE(d); //应用宏表达式
}
/*预定义指令练习*/
#include
#define PWD 1
int main(){
char *p="hello world";//定义字符型指针
//引用预定义指令
#if PWD
printf("******
");
#else
printf("%s
",p);
#endif
}
要保持着对知识的渴求,给自己充电,不要这荒废了短暂的时光;