C语言09 -- 高级指针
来源:互联网 发布:如何评价火绒 知乎 编辑:程序博客网 时间:2024/05/16 05:05
//
// main.m
// C9–高级指针
//
// Created by dllo on 15/7/10.
// Copyright (c) 2015年 Gaozi. All rights reserved.
//
import
import “MY - FUD.h”
// 宏是一个替换过程. PI 来 替代3.14,所以3.14后面不能加;
define PI 3.14
// 带参数的宏.
// 计算两个数的积
define MUL(A,B) (A) * (B)
define NUL(A,B) A * B
define BUL(A,B) (A*B)
define MAXVALUE(A, B) (A) > (B) ? (A) : (B)
// 条件编译一– 若是PI被定义过,就走20,否则走50.
ifdef PI
define TEXT 20
else
define TEXT 50
endif
// 条件编译二:
ifndef PI
define TEST 20
else
define TEST 50
endif
// 第三种
//条件有两种,一种是0,一种是1
if 1
int a = 10;
define TEST 20
else
int a = 50;
define TEST 50
endif
int main(int argc, const char * argv[]) {
printf("%c",'i'+2);int a1 = 10,b1 = 30;printf("mul=%d\n",MUL(a1+1, b1));printf("nul=%d\n",NUL(a1+1, b1));printf("bul=%d\n",BUL(a1+1, b1));// 定义一个结构体类型的变量Student stu = {"小红",22,'w',96.5};printf("%s\n",stu.stuName);Student temp = stu;// 常量数组,不允许通过名字直接取等赋值,但是结构体可以.int arr[2] = {0,2};int temp1 = arr;// 指针变量int *p = NULL;int a = 10;char str[20] = "";
// scanf(“%d”,&a);
// scanf(“%s”,str);
printf(“%p\n”,&a);
p = &a;
printf(“%d\n”,*p);
int arr1[6] = {5,6,7,8,9,4};int *p1 = arr1;bubbleShort(p1, 6);// 自定义数据类型.Student stu1 = {"小芳",23,'w',97};Student *p3 = &stu1;printf("%p\n",p3);printf("%p\n",&stu1);// p保存地址是结构体的地址,*p取到的结果相当于地址所对应的结构体的变量,之后的用法和结构体相同.printf("%g\n", (*p3).stuScore);p3->stuName;printf("%p\n",&stu1.stuName);printf("%p\n",&stu1.stuAge);// 求两个点之间的距离.point m = {10.21,20.39};point n = {50.46,60.97};
// point *po1 = &m;
// point *po2 = &n;
// point **p4 = {&po1,&po2};
pointDistance(&m,&n);// 将名字改成大写Student stu = {"aan ou",23,'m',96};//Student *p = &stu;stuName(&stu);
// // 结构体数组练习1
Student stu1 = {“haha”,21,’w’,98};
Student stu2= {“xixi”,22,’m’,97};
Student stu3 = {“lala”,25,’w’,93};
Student stu4 = {“houhou”,27,’w’,92};
Student student[4] = {stu1,stu2,stu3,stu4};printf("%p\n",student);printf("%p\n",&student[0]);Student *p = student;printf("%s\n",(p + 1)->stuName);printf("%c\n",p[1].stuName[0]);// student[i]和p[i]一样,取出来的是结构体,所以用.来找成员变量.//(p + 1)是根据指针来操作,用-> 来访问.// 用指针的方式来遍历所有学生姓名for (int i = 0; i < 4; i++) { printf("%s ",p[i].stuName);}printf("\n");for (int i = 0; i < 4 - 1; i++) { for (int j = 0; j < 4 - i -1; j++) { if (strcmp(p[j].stuName ,p[j+1].stuName) > 0 ) { Student temp = p[j]; p[j] = p[j+1]; p[j+1] = temp; } }}for (int i = 0; i < 4; i++) { printf("%s ",p[i].stuName);}printf("\n");// 平均年龄和平均成绩.int ageCount = 0;float scoreCount = 0;for (int i = 0; i < 4; i++) { ageCount += p[i].stuAge; scoreCount += p[i].stuScore; }printf("%g %g\n",ageCount/4.0,scoreCount/4.0);// 结构体数组练习2----女生加20分.超一百计100Student stu1 = {"haha",21,'w',68};Student stu2= {"xixi",22,'m',97};Student stu3 = {"lala",25,'w',93};Student stu4 = {"houhou",27,'w',52};Student four[4] = {stu1,stu2,stu3,stu4};Student *p = four;plasScore( p, 4);Person per1 = {"xiaoli",111,123,100};Person per2 = {"xiaowang",222,234,240};Person per3 = {"xiaozhang",333,456,350};Person per4 = {"xiaoyang",444,789,500};Person per[4] = {per1,per2,per3,per4};Person *pper = per;// 判断卡号和密码是是否正确.while(1){printf("\n");printf("请输入卡号:\n");int num = 0;int passnum = 0;scanf("%d",&num);printf("请输入密码:\n");scanf("%d",&passnum);int result = checkCardAndPassword(num, passnum, pper, 4);if (result == 4) { printf("您输入的卡号或密码不正确,请重新输入!"); continue;}else{ printf("登陆成功!\n"); printf("请输入您想要操作的钱财:~\n"); int money = 0; scanf("%d",&money); paymoney(pper,result ,money); }
}
// 宏定义
// 定义一个宏,命名要么全部大写,要不就是驼峰命名法 k+驼峰 的方式.
printf(“%g\n”,PI + 3);
int a =10 , b = 20;
printf(“%d\n”,MAXVALUE(a,b));
printf(“%d\n”,MUL(a, b));
printf(“%d\n”,MUL(3+4, 5));
// 要在宏的后面给A,B加上括号,防止运算符优先级的问题.
printf("test = %d\n",a);return 0;
}
//
// MY - FUD.h
// C9–高级指针
//
// Created by dllo on 15/7/10.sequens// Copyright (c) 2015年 Gaozi. All rights reserved.
//
import
import “MY - FUD.h”
void bubbleShort(int *p, int count){
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (p[j]>p[j+1]) {
int temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}for (int i = 0; i < count ; i++) {
printf(“%d “,p[i]);
}
printf(“\n”);
}
void pointDistance(point *po1,point *po2 ){
float result = sqrt((po1->x - po2->x) (po1->x - po2->x) + (po1->y - po2->y)(po1->y - po2->y));
printf(“%.2f\n”,result);
}
void stuName(Student *p){
if (p->stuName[0] <= ‘z’ && ‘a’ <= p->stuName[0]) {
p->stuName[0] -= 32;
}
for (int i = 0; i < strlen(p->stuName); i++) {
if (p->stuName[i] == ’ ‘) {
p->stuName[i] = ‘_’;
}
}
printf(“%s\n”,p->stuName);
}
void plasScore(Student *p, int count){
for (int i = 0; i < count; i++) {
if (p[i].stuSex == ‘w’) {
p[i].stuScore += 10;
}
if (p[i].stuScore >= 100) {
p[i].stuScore = 100;
}
}
for (int i = 0; i < count; i++) {
printf(“%g “,p[i].stuScore);
}
printf(“\n”);
}
int checkCardAndPassword(int enterCard, int password, Person *p, int count){
for (int i = 0; i < count; i++) {
if (p[i].cardnum == enterCard && p[i].pasword == password) {
return i;
}
}
return 4;
}
void paymoney(Person *p, int result, int money){
if (p[result].moneyCount < money) { printf("没钱取毛!重输!\n");}else{ p[result].moneyCount -= money; if(p[result].moneyCount -= 0){ strcat(p[result].name, "00"); } printf("%s\n",p[result].name); printf("ZB成功~您的卡内还有余额%d!麻溜挣钱去!\n",p[result].moneyCount);}
}
- C语言09 -- 高级指针
- c语言-高级指针
- C语言--高级指针
- C语言高级指针
- C语言之高级指针
- C语言_高级指针
- c语言:高级指针话题
- C语言中的高级指针
- C语言之指针高级
- C语言07指针高级
- C语言指针高级七
- c语言指针高级话题
- C语言高级指针(1)
- C语言指针高级部分:void指针和数据指针
- 【C语言】高级指针和字符串特性
- C语言高级编程 之 指针
- C语言回顾 九 高级指针
- C语言学习之指针高级
- linux自学笔记:00_开山篇
- adb 调试
- 3D数学 矩阵和线性变换之缩放
- java之设计模式---单例模式
- URLs
- C语言09 -- 高级指针
- WERTYU
- Snail—OC学习之可变字符串NSMutableString
- 如何在centos下装dropbox(其他的软件也类似)
- RMAN中使用TSPITR进行表空间备份
- JAVA学习第五天
- Preparing Olympiad
- 长尾关键词优化 如何有效的去做长尾关键词
- js字符串加密的几种方法