c语言指针填空题目,C语言指针题目实战

#import

#define PI 3.1415926

#define mianji(r) (PI*r*r)

#define avg(a,b) ((a+b)/2)

//定义学生结构体

typedef struct {

int num ;

char name[20];

char gender;

float score;

}Stu;

//定义一个点坐标的结构体CPoint,包含两个float成员x,y

typedef struct{

float x;

float y;

}CPoint;

void find(Stu stus[], long count);

void find(Stu stus[], long count)

{

for (int i = 0; i < count; i++) {

//判断性别是否为'm'

if

(stus[i].gender == 'm') {

stus[i].score+=10;

//判断分数是否超过100分,如果超过了直接记为100分

if

(stus[i].gender == 'm' && stus[i].score > 100){

stus[i].score = 100;

}

}

}

}

void changeStruct(Stu *p,Stu *p1, Stu *p2);

void changeStruct(Stu *p,Stu *p1, Stu *p2)

{

strcpy(p->name, p1->name);

strcpy(p1->name, p2->name);

strcpy(p2->name, p->name);

p->gender = p1->gender;

p1->gender = p2->gender;

p2->gender = p->gender;

p->num = p1->num;

p1->num = p2->num;

p2->num = p->num;

p->score = p1->score;

p1->score = p2->score;

p2->score =

p->score;

}

void print(Stu stu[],long count,int iscore,int hscore);

void print(Stu stu[],long count,int iscore,int hscore)

{

for (int i = 0; i < count; i++) {

if

(stu[i].score >= iscore

&& stu[i].score <=

hscore ) {

printf("%d %s %c %.2f", stu[i].num,stu[i].name,stu[i].gender,stu[i].score);

}

}

}

void sort(Stu *p,long count);

void sort(Stu *p,long count)

{

for (int i = 0; i < count-1; i++) {

for

(int j = 0; j < count - 1 - i; j++) {

if ((p+j)->num > (p+j+1)->num) {

Stu a = *(p+j);

*(p+j) = *(p+j+1);

*(p+j+1) = a;

}

}

}

for (int i = 0; i < count ; i++) {

printf("%d %s

%c %.2f\n", (p+i)->num,(p+i)->name,(p+i)->gender,(p+i)->score);

}

}

void sortname(Stu *p,long count);

void sortname(Stu *p,long count)

{

for (int i = 0; i < count-1; i++) {

for

(int j = 0; j < count - 1 - i; j++) {

if (strcmp((p+j)->name, (p+j+1)->name )> 0) {

Stu a = *(p+j);

*(p+j) = *(p+j+1);

*(p+j+1) = a;

}

}

}

for (int i = 0; i < count ; i++) {

printf("%d %s

%c %.2f\n", (p+i)->num,(p+i)->name,(p+i)->gender,(p+i)->score);

}

}

int main(int argc, const char * argv[])

{

//

// Student stu1 =

{1,"jiayuanfa",'m'};

// Student *p =

&stu1;

// printf("num = %d name = %s

gender = %c", (*p).num,(*p).name,(*p).gender);

// printf("num = %d name = %s

gender = %c", p->num,p->name,p->gender);

// //定义两个CPoint结构体变量m,n

//

// CPoint m = {45.4,56.9};

// CPoint n = {23.5,67.8};

 //使用两个结构体指针分别指向m,n

// CPoint *p = &m;

// CPoint *p1 = &n;

// printf("x = %.2f y =

%.2f\n",p->x,p->y);

// printf("x = %.2f y =

%.2f\n", p1->x,p1->y );

// //1.计算两点之间的距离,1.勾弧定理 2.开放函数

sqrt

// float juli =

sqrt((p1->y-p->y)*(p1->y-p->y)+(p1->x-p->x)*(p1->x-p->x));

// printf("两点之间的距离为%.2f",

juli);

//

// //定义一个学生结构体变量stu

// Student stu = {1,"lan

ou",'m',95.6};

// //使用结构体指针指向结构体变量

// Student *p =

&stu;

// //先把所有的空格改变成下划线

// for (int i = 0; i <

strlen(p->name); i++) {

// if(p->name[i] == '

'){//注意用[]来表示name中得每一个元素

// p->name[i] = '_';

//

// } //将name中首字母改成大写 也就是ASCII-32

// if (i == 0) {

// p->name[i]-=32;

// }

// }

//

// printf("num = %d name = %s

gender = %c score = %.2f",

p->num,p->name,p->gender,p->score);

//

//2.使用指针查找学员数组中性别为男的学员,成绩增加10分,超过100分的记为100分

//创建学生结构体数组

// Stu stus [] ={

// {1,"saisai1",'m',120.0},

// {2,"saisai2",'f',88.9},

// {3,"saisai3",'m',67.8},

// {4,"saisai4",'m',89.0},

// {5,"saisai5",'m',34.7}

// };

// Stu *p = stus;

// unsigned long

count = sizeof(stus) /

sizeof(Stu) ;

// find (p,count);

//

// //打印数组中所有元素

// for (int i

= 0; i < count ; i++) {

// printf("num = %d name = %s

gender = %c score = %.2f\n",

stus[i].num,stus[i].name,stus[i].gender,stus[i].score);

// }

//1.写一个函数,交换两个结构体变量

// Stu one =

{1,"zhangsan",'m',78.9};

// Stu two =

{2,"lisi",'m',89.0};

// Stu three

= {0};

// changeStruct(&three, &one, &two);

// printf("%d

%s %c %.2f\n", one.num,one.name,one.gender,one.score);

// printf("%d

%s %c %.2f\n", two.num,two.name,two.gender,two.score);

// 2.有一学生数组,写以函数打印出指定分数段的学生信息

// Stu stu[3]

= {

// {1,"zhangsan",'m',56.8},

// {2,"lisi",'m',78.0},

// {3,"wangwu",'m',89.4}

// };

// int iscore

= 0, hscore = 0;

// printf("请输入指定的分数段:");

// scanf("%d%d",&iscore,&hscore);

// unsigned

long count = sizeof(stu) / sizeof(Stu);

// Stu *p =

stu;

// print(p,

count,iscore,hscore);

//3.有一个学生数组,写包含五个学生的一个函数,对学生排序(按学号从小到大),使用结构体指针操作数组元素

Stu stu[5] = {

{1,"chenwenjie",'m',67.89},

{2,"wangdoudou",'w',98.6},

{3,"xuguang",'m',78.5},

{4,"wangpeiei",'m',67.0},

{5,"lize",'m',89.7}

};

unsigned long count = sizeof(stu) / sizeof(Stu);

Stu *p = stu;

sortname(p, count);

sort(p, count);

//6.定义一个求圆的面积的宏

// int c =

0;

// printf("请输入圆的半径:");

// scanf("%d",&c);

// double a

=mianji(c);

// printf("%f\n",a);

//7.定义一个求两个数平均数的宏

int a = 0,b = 0;

printf("请输入两个数:");

scanf("%d%d",&a,&b);

double c = avg(a, b);

printf("%.2f\n",c);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值