您的当前位置:首页C语言程序9

C语言程序9

2022-05-19 来源:爱问旅游网


院实验报告

系(教研室): 专业: 年级:

实验课程:C语言程序设计 姓名: 学号: 实验室号:B706 计算机号: 实验时间: 指导教师签字: 成绩: 实验9:指针与结构体、共用体

一、 实验目的和要求

1) 1)通过实验进一步掌握指针的概念,会定义和使用指针变量; 2)能正确使用数组的指针和指向数组的指针变量; 3)能正确使用字符串的指针和指向字符串的指针变量。 4)掌握结构体、共用体类型变量的定义和使用; 5)掌握结构体、共用体类型数组的概念和应用;

二、 实验内容和原理

1.编写一个以指针为形参的函数,实现两数交换

2.用指针方式遍历输出有10个元素的一维数组的所有元素,并逆序输出

3.编写函数sub_copy(oldstring,newstring,m,s),将oldstring从第m个位置开始的s个字符复制到newstring,要求用指针实现。 4.自选。

5.求一个班学生成绩的总分、平均分、最高分、及格人数,要求在一个函数内求出。 6.计算字符串中子串出现的次数。要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。

7.输入四个学生的三科成绩(语文,英语,数学) (1)输入四个学生的学号(01~04),姓名 (2)求每科成绩的最高分 (3)求每个学生成绩的平均分 (4)求每科成绩的平均分

要求学生信息用结构体实现

三、 实验环境

1. 硬件:PC机;

2. 软件:Windows操作系统、Visual C++ 6.0 。

四、 算法描述及实验步骤

1.编写一个以指针为形参的函数,实现两数交换 #include int main() { void swap(int *p1,int *p2); int a,b;

int *p1,*p2; printf(\"please input a,b:\"); scanf(\"%d,%d\ p1=&a; p2=&b; swap(p1,p2); printf(\"a=%d,b=%d\\n\ return 0; }

void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; }

2.用指针方式遍历输出有10个元素的一维数组的所有元素,并逆序输出 #include int main() { int a[10]; int *p,i; for(i=0;i<10;i++) scanf(\"%d\ for(p=a+9;p>=a;p--) printf(\"%d \ printf(\"\\n\"); return 0; }

3.编写函数sub_copy(oldstring,newstring,m,s),将oldstring从第m个位置开始的s个字符复制到newstring,要求用指针实现。 #include #include int main() {

char sub_copy(char oldstring[],char newstring[],int m,int s); char a[10]=\"chaowen\"; char b[20]=\"china\"; sub_copy(a,b,2,5); printf(\"%s\\n\ return 0;

}

char sub_copy(char oldstring[],char newstring[],int m,int s) { char *p,*q; int i=0; if(m<0||m>strlen(oldstring)||s<=0) return 0; p=oldstring+m-1; //p=&oldstring[m-1]; q=&newstring[0]; //q=newstring; while(i4.编写程序,输入月份号,输出该月的英文月名。 #include int main() {

char*month_name[13]={\"illegalmonth\y\int n;

printf(\"input month:\\n\"); scanf(\"%d\

if ((n <=12) && (n >=1))

printf(\"It is %s.\\n\else

printf(\"It is wrong.\\n\"); return 0; }

5.求一个班学生成绩的总分、平均分、最高分、及格人数,要求在一个函数内求出。 #include

void fun(int score[],int n,int *sum,float *average,int *max,int *count) { int i,max1=0,count1=0; float t=0.0; for(i=0;i=60)

count1++; //计算及格人数 } *sum = t; *average = t/n; *max = max1;

*count = count1; //将所求结果写入指针所指变量 }

void main() { int a[10]; int i; for(i=0;i<10;i++) scanf(\"%d\ int sum,max,count; float average; fun(a,10,&sum,&average,&max,&count); printf(\"sum=%d,average=%.2f,max=%d,count=%d\\n\}

6.计算字符串中子串出现的次数。要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。 #include int main() {

int subString(char *s1,char *s2); char a[16]=\"abacabasababab\"; char b[4]=\"ba\"; printf(\"%d\\n\ return 0; }

int subString(char *s1,char *s2) { int count=0; char *p,*q,*t; p=s1; while(*p!='\\0') { t=p; q=s2; while(*t!='\\0'&&*q!='\\0') { if(*t==*q) {t++;q++;} else {break;} if(!*q) {count++;} } p++; } return count;

}

7.输入四个学生的三科成绩(语文,英语,数学) (1)输入四个学生的学号(01~04),姓名 (2)求每科成绩的最高分 (3)求每个学生成绩的平均分 (4)求每科成绩的平均分 要求学生信息用结构体实现 #include #define N 3 void mian() struct student { char num[3]; char name[10]; int score[3]; }stu[4];

void scan_student(struct student stu[4],int n); void print_student(struct student stu[4],int n);

void fun(struct student stu[4],int n,int *max,float *av1,float *av2); int main() { int n=3; int *max=stu; float *av1=stu; float *av2=stu; scan_student(struct student stu[4],3); print_student(struct student stu[4],3); fun(struct student stu[4],int n,max,av1,av2); printf(\"%d,%f,%f\ return 0; }

void scan_student(struct student stu[4],int n) { int i,j; printf(\"Please input number and name for everyone\\n\"); for(i=0;i<4;i++) { scanf(\"%s%s\ } printf(\"Please input score for everyone\\n\"); for(i=0;i<4;i++) for(j=0;j<3;j++)

scanf(\"%d\}

void print_student(struct student stu[4],int n) { int i,j; for(i=0;ivoid fun(struct student stu[4],int n,int *max,float *av1,float *av2) { int i,j; //求最高分 for(j=0;j五、 调试过程

第七题调试不出来

六、 实验结果

1.

please input a,b:28,26 a=26,b=28

Press any key to continue 2.

1 5 9 7 5 3 7 4 9 6 6 9 4 7 3 5 7 9 5 1

Press any key to continue 3. haowe

Press any key to continue 4.

input month: 9

It is September.

Press any key to continue 5.

99 98 88 85 81 70 60 86 97 59

sum=823,average=82.30,max=99,count=9 Press any key to continue 6. 4

Press any key to continue 7.

七、总结

指针是c语言,比较难懂,在书写程序上有一定的难度。

因篇幅问题不能全部显示,请点此查看更多更全内容