张红霞c语言杨辉三角输出,C语言期末总结

结构体

例10.4 指向结构体数组的指针的应用

#include struct student { int num;char name[20];char sex;int age;}; struct student stu[3]={{10101,″Li Lin″,′M′,18},{10102,″Zhang Fun″,′M′,19},{10104,″WangMing″,′F′,20}}; void main() { struct student *p;

printf(″No.

Name

sex

age\n″);

for(p=stu;p<stu+3;p++)

printf(″%5d %-20s %2c %4d\n″,p->num,p->name,p->sex,p->age);

} 运行结果:

No.Name

sex

age

10101

LiLin

18

1010

2 Zhang Fun M

19

10104

WangMing F

20

例10.5 有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋予值,在另一函数print中将它们输出。今用结构体变量作函数参数。 #include #include #define FORMAT ″%d\n%s\n%f\n%f\n%f\n″ struct student { int num;

char name[20];

float score[3]; };

#include #include #define FORMAT ″%d\n%s\n%f\n%f\n%f\n″ struct student { int num;

char name[20];

float score[3]; };

void main() { void print(struct student);

struct student stu;

stu.num=12345;

strcpy(stu.name,″LiLin″);

1

stu.score[0]=67.5;

stu.score[1]=89;

stu.score[2]=78.6;

print(stu); } void print(struct student stu) { printf(FORMAT,stu.num,stu.name, stu.score[0],stu.score[1],stu.score[2]);

printf(″\n″);} 运行结果: 12345 Li Li 67.500000 89.000000 78.599998 例10.6 将上题改用指向结构体变量的指针作参数。 #include struct student { int num;

char name[20];

float score[3]; }stu={12345, ″LiLi″,67.5,89,78.6}; void main() { void print(struct student *);

print(&stu); }

void print(struct student *p) { printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2]);

printf(″\n″); } 运行结果: 12345 Li Li 67.500000 89.000000 78.599998  有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程总成绩、平均分数)。  10.1:# include 

struct student 

{ char num[6]; 

char name[8]; 

int score[3]; 

float avr; 

}stu[10];

2

 main() 

{ int i,j,max=0,maxi=0,sum=0; 

float average=0; 

for(i=0;i<10;i++) 

{ scanf(“%s%s”,stu[i].num,stu[i].name); 

for(j=0;j<3;j++) 

scanf(“%d”,&stu[i].score[j]); 

}

 for(i=0;i<10;i++) 

{ sum=0; 

for(j=0;j<3;j++) 

sum+=stu[i].score[j]; 

stu[i].avr=sum/3.0; 

average+=stu[i].avr; 

if(sum>max) { max=sum; maxi=i; } 

} 

average/=10; 

printf(“average=%6.2f\n”,average);

printf(“The highest is:%s,%s,%d,%f”,

stu[maxi].num,stu[maxi].name,max,stu[maxi].avr);  }

指针

例9.4 输入a、b、c3个整数,按大小顺序输出。 #include void main()

{void exchange(int *q1,int *q2,int *q3); int a,b,c,*p1,*p2,*p3;

scanf(″%d,%d,%d″,&a, &b, &c);

p1=&a;p2=&b;p3=&c;

exchange (p1,p2,p3);

printf(″%d,%d,%d\n″,a,b,c);

void exchange(int *q1,int *q2,int *q3){ void swap(int *pt1,int *pt2);

if(*q1<*q2) swap(q1,q2);

if(*q1<*q3) swap(q1,q3);

if(*q2<*q3) swap(q2,q3);

void swap(int *pt1, int *pt2)

{int temp;

temp=*pt1;

*pt1=*pt2;

*pt2=temp;

score 3

运行情况如下:

9,0,10↙ 10,9,0

例9.10:有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。这个题目是很简单的。只是为了说明用指向数组的指针作函数参数而举的例子。用函数average求总平均成绩,用函数search找出并输出第i个学生的成绩。 #include void main()

{ void average(float *p,int n);

void search(float (*p)[4],int n);

float score[3][4]={{65,67,70,60},

average(*score,12); /*求12个分数的平均分*/

search(score,2);

/*求序号为2的学生的成绩*/ }

void average(float *p,int n) { float*p_end;

float sum=0,aver;

p_end=p+n-1;

for(;p<=p_end;p++)

sum=sum+(*p);

aver=sum/n;

printf(″average=%5.2f\n″,aver); }

void search(float (*p)[4],int n)

/ * p是指向具有4个元素的一维数组的指针 */ {int i;

printf(″the score of No.%d are:\n″,n);

for(i=0;i<4;i++)

printf(″%5.2f″,*(*(p+n)+i)); }

程序运行结果如下: average=82.25

The score of No.2 are:

90.00 99.00 100.00 98.00

例9.11: 在上题基础上,查找有一门以上课程不及格的学生,打印出他们的全部课程的成绩。

#include void main()

{void search(float (*p)[4],int n);

float score[3][4]={{65,57,70,60},

{58,87,90,81},{90,99,100,98}};

{80,87,90,81},{90,99,100,98}};

search(score,3);

void search(float (*p)[4],int n) {int i,j,flag;

for(j=0;j<n;j++)

{flag=0;

for(i=0;i<4;i++)

if(*(*(p+j)+i)<60) flag=1;

if(flag==1)

{ printf("No.%d fails,his scores are: \n",j+1);

for(i=0;i<4;i++)

printf(″%5.1f″,*(*(p+j)+i));

printf(″\n″);

程序运行结果如下:

No.1 fails, his scores are:

65.0

57.0

70.0

60.0 No.2 fails, his scores are:

58.0 87.0 90.0 81.0 例9.17:求a和b中的最大者。 #include void main()

{int max(int,int); int a,b,c;

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

c=max(a,b); printf(″a=%d,b=%d,max=%d\n″,a,b,c);

int max(int x,int y) { int z;

if(x>y)z=x;

else

z=y;

return(z);

例9.18:有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。

#include void main()

{float score[][4]={{60,70,80,90},

{56,89,67,88},{34,78,90,66}};

float *search(float (*pointer)[4],int n);

float*p;

5

int i,m;

printf(″enter the number of student:″);

scanf(″%d″,&m);

printf(″The scores of No.%d are:\n″,m); p=search(score,m);

for(i=0;i<4;i++) printf(″%5.2f\t″,*(p+i));

float *search(float (*pointer)[4],int n) { float *pt;

pt=*(pointer+n);

return(pt);

运行情况如下:

enter the number of student:1↙ The scores of No. 1 are:

56.00

89.00

67.00

88.00 例9.19: 对上例中的学生,找出其中有不及格课程的学生及其学生号。#include void main()

{ float score[][4]={{60,70,80,90},

{56,89,67,88},{34,78,90,66}};

float search(float (*pointer)[4]);

float*p;

int i,j;

for(i=0;i<3;i++)

{p=search(score+i);

if(p==*(score+i))

{ printf(″No.%d scores:″,i);

for(j=0;j<4;j++)

printf(″%5.2f″,*(p+j));

printf(″\n″);}

float *search (float (*pointer)[4]) { int i;

float *pt;

pt=*(pointer+1);

for(i=0;i<4;i++)

if(*(*pointer+i)<60) pt=*pointer;

return(pt);

} 运行情况如下:

No.1 scores:56.00 89.00 67.00 88.00

No.2 scores:34.00 78.00 90.00 66.00 

例9.20:将若干字符串按字母顺序(由小到大)输出。 #include #include void main()

{void sort(char *name[ ],int n);

void print(char *name[ ],int n);

char *name[ ]={"Follow me","BASIC","Great Wall″,"FORTRAN","Computer design"}; int n=5;

sort(name,n);

print(name,n);

void sort(char *name[ ],int n) {char *temp;

int i,j,k;

for(i=0;i<n-1;i++) {k=i;

for(j=i+1;j<n;j++)

if(strcmp(name[k],name[j])>0)k=j;

if(k!=i)

{ temp=name[i];

name[i]=name[k];

name[k]=temp;}

void print(char *name[ ],int n) { int i;

for(i=0;i<n;i++)

printf(″%s\n″,name[i]);

} 运行结果为: BASIC Computer design FORTRAN Follow me Great Wall 作业:(提交上机报告) 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。 # include main()

{ void input(int number[10]);

void max_min_value(int array[10]);

7

void output(int array[10]);

int number[10]; input (number); max_min_value(number); output(number);

} void input(int number[10])

{ int i;

for(i=0;i<=9;i++)

scanf(“%d”,&number[i]); } void max_min_value(int array[10])

{ int *max,*min,*p,*array_end;

array_end=array+10;

max=min=array;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值