C语言期末总结_c语言期末总结

2020-02-29 其他工作总结 下载本文

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

agen″);

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

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

} 运行结果:

No.Name

sex

age

10101

LiLin

1010Zhang Fun M

10104

WangMing F

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

char name[20];

float score[3];};

#include #include #define FORMAT ″%dn%sn%fn%fn%fn″ 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″);

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];

 main()

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

float average=0;

for(i=0;i

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

for(j=0;j

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

}

 for(i=0;i

{ sum=0;

for(j=0;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.2fn”,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)

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=%dn″,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;

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.2ft″,*(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

{p=search(score+i);

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

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

for(j=0;j

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

printf(″n″);}

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

float *pt;

pt=*(pointer+1);

for(i=0;i

if(*(*pointer+i)

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(″%sn″,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]);

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

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

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

array_end=array+10;

max=min=array;

for(p=array+1;p

if(*p>*max)max=p;

else if(*p

*p=array[0];array[0]=*min;*min=*p;

*p=array[9];array[9]=*max;*max=*p;

} void output(int array[10])

{ int *p;

for(p=array;p

printf(“%4d”,*p); }

数组和函数的组合例8.12 有一个一维数组,内放10个学生成绩,写一个函数,求出平均分、最高分和最低分。#include float Max=0,Min=0;

/*全局变量*/ void main()

{float average(float array[ ],int n);

float ave,score[10];

int i;

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

scanf(″%f″,&score[i]);

ave= average(score,10);

printf(″max=%6.2f\nmin=%6.2f\n

average=%6.2f\n″,Max,Min,ave);

}

float average(float array[ ],int n)

/*定义函数,形参为数组*/ { int i;

float aver,sum=array[0];

Max=Min=array[0];

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

{if(array[i]>Max)Max=array[i];

else if(array[i]

sum=sum+array[i];

aver=sum/n;

return(aver);

例8.18 有一个含若干字符的字符串,今输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。file1.c(文件1)#include void main()

{ extern void enter_string(char str[]);

extern void detele_string(char str[],char ch);

extern void print_string(char str[]);

char c;

char str[80];enter_string(str);

scanf(”%c“,&c);

detele_string(str,c);

print_string(str);

} file2.c(文件2)#include void enter_string(char str[80]){

gets(str);}

file3.c(文件3)

void delete_string(char str[],char ch){ int i,j;

for(i=j=0;str[i]!='';i++)

if(str[i]!=ch)

str[j++]=str[i];

str[i]='';} file4.c(文件4)#include void print_string(char str[]){

printf(”%sn“,str);}

运行情况如下:

abcdefgc↙

(输入str)

c↙ 

(输入要删去的字符)abdefg

(输出已删去指定字符的字符串)

8.1:判断m是否是素数。(用函数实现)#include main()

{ int f(int m);

int m,n;

scanf(“%d”,&m);

n=f(m);

if(n)printf(“%d is a prime numbern”,m);

else printf(“%d is not a prime numbern”,m);

}

int f(int m)

{ int i,k,p;

k=sqrt(m);

for(i=2;i

if(m%i==0)break;

if(i>=k+1)p=1;

else p=0;

return p;

}

8.2:用起泡法对10个数排序。(用函数实现)

#include main()

{ void sort(int array[],int n);

int a[10],i;

for(i=0;i

scanf(“%d”,&a[i]);

sort(a,10);

for(i=0;i

printf(“%4d”,a[i]);} void sort(int array[],int n)

{ int i,j,t;

for(i=0;i

for(j=0;j

if(a[j]>a[j+1])

{ t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

8.3:用选择法对10个数排序。(用函数实现)#include main()

{ void sort(int array[],int n);

int a[10],i;

for(i=0;i

scanf(“%d”,&a[i]);

sort(a,10);

for(i=0;i

printf(“%4d”,a[i]);} void sort(int array[],int n)

{ int i,j,k,t;

for(i=0;i

{ k=i;

for(j=i+1;j

if(array[j]

t=array[k];array[k]=array[i];array[i]=t;

}

}

《C语言期末总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言期末总结
点击下载文档
相关专题 c语言期末总结 期末 语言 c语言期末总结 期末 语言
[其他工作总结]相关推荐
    [其他工作总结]热门文章
      下载全文