指针实验陈正宁123349.docx

上传人:b****0 文档编号:17394451 上传时间:2023-07-24 格式:DOCX 页数:23 大小:561.50KB
下载 相关 举报
指针实验陈正宁123349.docx_第1页
第1页 / 共23页
指针实验陈正宁123349.docx_第2页
第2页 / 共23页
指针实验陈正宁123349.docx_第3页
第3页 / 共23页
指针实验陈正宁123349.docx_第4页
第4页 / 共23页
指针实验陈正宁123349.docx_第5页
第5页 / 共23页
指针实验陈正宁123349.docx_第6页
第6页 / 共23页
指针实验陈正宁123349.docx_第7页
第7页 / 共23页
指针实验陈正宁123349.docx_第8页
第8页 / 共23页
指针实验陈正宁123349.docx_第9页
第9页 / 共23页
指针实验陈正宁123349.docx_第10页
第10页 / 共23页
指针实验陈正宁123349.docx_第11页
第11页 / 共23页
指针实验陈正宁123349.docx_第12页
第12页 / 共23页
指针实验陈正宁123349.docx_第13页
第13页 / 共23页
指针实验陈正宁123349.docx_第14页
第14页 / 共23页
指针实验陈正宁123349.docx_第15页
第15页 / 共23页
指针实验陈正宁123349.docx_第16页
第16页 / 共23页
指针实验陈正宁123349.docx_第17页
第17页 / 共23页
指针实验陈正宁123349.docx_第18页
第18页 / 共23页
指针实验陈正宁123349.docx_第19页
第19页 / 共23页
指针实验陈正宁123349.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

指针实验陈正宁123349.docx

《指针实验陈正宁123349.docx》由会员分享,可在线阅读,更多相关《指针实验陈正宁123349.docx(23页珍藏版)》请在冰点文库上搜索。

指针实验陈正宁123349.docx

指针实验陈正宁123349

淮海工学院计算机科学系

实验报告书

课程名:

《C语言程序设计》

题目:

实验9指针

班级:

软嵌151

学号:

2015123349

姓名:

陈正宁

 

1、实验内容或题目

(1)设计一个程序,将两个变量的值进行交换,要求通过函数和指针实现。

具体要求:

编写一个函数swap(int*p,int*q),交换两个参数指针所指的数据,再编写main主函数,通过调用swap()函数将两个变量的值进行交换。

(2)编写一个程序,判断用户输入的两个字符串是否相同,其中字符串可能含有空格等,以回车键表示输入结束。

(不允许使用strcmp函数)

(3)设计一个程序,用选择法或冒泡法将若干字符串按字母顺序进行排序。

要求用函数和指针完成。

具体要求:

编写一个函数strsort(char*p[],intn),对一组给定的字符串进行排序(非递减)。

其中p的每一个元素为一个字符串指针,长度n。

最后编写main主函数对下列单词进行排序后输出:

include,define,main,if,else,for,while,switch,break,continue。

(4)教材p291页习题的第11题。

(5)教材p292页习题的第12、第15第18题。

2、实验目的与要求

进一步掌握指针的概念,会定义和使用指针变量。

能正确地使用数组的指针和指向数组的指针变量。

能正确地使用字符串的指针和指向字符串的指针变量。

 

3、实验步骤与源程序

实验步骤

(1)、

 

(2)、

 

(3)、

 

(4)、

(5-1)、

(5-2)、

 

(5-3)、

 

 

源代码

(1)、

#include

voidswap(int*p,int*q)

{intt;

t=*p;*p=*q;*q=t;//交换p1和p2所指向的内容

}

voidmain()

{inta,b;

 

int*pointer_1,*pointer_2;

printf("请输入两个数字[abEnter]:

");

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

pointer_1=&a;pointer_2=&b;

swap(pointer_1,pointer_2);//函数调用,指针作为实参

printf("\n则交换以后为:

%d%d\n",a,b);

}

(2)、

#include

#include

intmain()

{

chara[255]={'\0'},b[225]={'\0'};

printf("请输入第一个字符串:

");

gets(a);

printf("请输入第二个字符串:

");

gets(b);

inti;

if(strlen(a)==strlen(b))

{

for(i=0;i<(int)strlen(a);i++)

if(a[i]!

=b[i])

break;

}

if(i==(int)strlen(a))

printf("两个字符串相同\n");

else

printf("两个字符串不相同\n");

}

(3)、

#include

#include

voidstrsort(char*p[])

{

inti,j;

char*temp;

for(i=0;i<9;i++)//注意是i<9

{

for(j=0;j<9;j++)//注意是j<9,因为下面要+1和后面的那个字符串比较

{

if(strcmp(p[j],p[j+1])>0)//字符串比较:

>0表示前面的字符串比后面的大则交换

{

temp=p[j];

p[j]=p[j+1];

p[j+1]=temp;

}

}

}

}

voidprint(char*p[])

{

inti;

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

{

printf("%s",p[i]);

}

}

intmain()

{

char*p[]={"include","define","main","if","else","for","while","switch","break","continue"};

printf("原来的序列是:

\n");

print(p);

strsort(p);

printf("\n排序后的序列是:

\n");

print(p);

printf("\n\n");

return0;

}

(4)、

#include

#include

voidsort(char*s[])

{

char*temp;

inti,j;

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

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

if(strcmp(*(s+j),*(s+j+1))>0)

{

temp=*(s+j);

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

*(s+j+1)=temp;

}

}

voidmain()

{

inti;

charstr[10][6],*p[10];

printf("请输入10个等长的字符串:

\n");

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

p[i]=str[i];

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

scanf("%s",p[i]);

sort(p);

printf("则已经排好序的字符串为:

\n");

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

printf("%s\n",p[i]);

getchar();

}

 

(5-1)、

#include

#include

voidsort(char*s[])

{

char*temp;

inti,j;

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

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

if(strcmp(*(s+j),*(s+j+1))>0)

{

temp=*(s+j);

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

*(s+j+1)=temp;

}

}

voidmain()

{

inti;

charstr[10][6],*p[10];

printf("请输入10个不等长的字符串:

\n");

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

p[i]=str[i];

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

scanf("%s",p[i]);

sort(p);

printf("则已经排好序的字符串为:

\n");

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

printf("%s\n",p[i]);

getchar();

}

(5-2)、

#include

intmain()

{

voidavsco(float*,float*);

voidavcour1(char(*)[10],float*);

voidfali2(charcourse[5][10],intnum[],float*pscore,floataver[4]);

voidgood(charcourse[5][10],intnum[4],float*pscore,floataver[4]);

inti,j,*pnum,num[4];

floatscore[4][5],aver[4],*pscore,*paver;

charcourse[5][10],(*pcourse)[10];

printf("Pleaseinputcourse:

");

pcourse=course;

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

scanf("%s",course[i]);

printf("PleaseinputNO.andscores:

\n");

printf("NO.");

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

printf("%s",course[i]);

printf("\n");

pscore=&score[0][0];

pnum=&num[0];

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

{

scanf("%d",pnum+i);

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

scanf("%f",pscore+5*i+j);

}

paver=&aver[0];

printf("\n\n");

avsco(pscore,paver);//求出每个学生的平均成绩

avcour1(pcourse,pscore);//求出第一门课的平均成绩

printf("\n\n");

fali2(pcourse,pnum,pscore,paver);//找出2门课不及格的学生

printf("\n\n");

good(pcourse,pnum,pscore,paver);//找出成绩好的学生

return0;

}

voidavsco(float*pscore,float*paver)//求每个学生的平均成绩的函数

{

inti,j;

floatsum,average;

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

{

sum=0.0;

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

sum=sum+(*(pscore+5*i+j));//累计每个学生的各科成绩

average=sum/5;//计算平均成绩

*(paver+i)=average;

}

}

voidavcour1(char(*pcourse)[10],float*pscore)//求第一课程的平均成绩的函数

{

inti;

floatsum,average1;

sum=0.0;

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

sum=sum+(*(pscore+5*i));//累计每个学生的得分

average1=sum/4;//计算平均成绩

printf("course1:

%saveragescore:

%7.2f\n",*pcourse,average1);

}

voidfali2(charcourse[5][10],intnum[],float*pscore,floataver[4])

//找两门以上课程不及格的学生的函数

{

inti,j,k,labe1;

printf("==========Studentwhoisfailintwocourses=======\n");

printf("NO.");

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

printf("%11s",course[i]);

printf("average\n");

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

{

labe1=0;

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

if(*(pscore+5*i+j)<60.0)labe1++;

if(labe1>=2)

{

printf("%d",num[i]);

for(k=0;k<5;k++)

printf("%12.2f",*(pscore+5*i+k));

printf("%11.2f\n",aver[i]);

}

}

}

voidgood(charcourse[5][10],intnum[4],float*pscore,floataver[4])

//找成绩优秀学生(各门85以上或平均90分以上)的函数

{

inti,j,k,n;

printf("==========Studentwhoisfailintwocourses=======\n");

printf("NO.");

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

printf("%11s",course[i]);

printf("average:

\n");

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

{

n=0;

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

if(*(pscore+5*i+j)>85.0)n++;

if((n==5)||(aver[i]>=90))

{

printf("%d",num[i]);

for(k=0;k<5;k++)

printf("%12.2f",*(pscore+5*i+k));

printf("%11.2f\n",aver[i]);

}

}

}

(5-3)、

#include

#include

voidmain()

{

intn;

char*name[12]={"January","February","March",

"April","May","June",

"July","August","September",

"October","November","December"};

printf("请输入月份:

");

scanf("%d",&n);

printf("\n");

printf("输入月份的英文名为:

%s\n",*(name+n-1));

}

4、测试数据与实验结果(可以抓图粘贴)

(1)、

 

(2)、

 

(3)、

 

(4)、

(5—1)、

(5—2)、

(5—3)、

5、结果分析与实验体会

(1)由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。

因此,将地址形象地称为“指针”。

(2)所谓数组元素的指针就是数组元素的地址。

(3)牢记*(a+i)和a[i]是等价的。

(4)注意函数的形参和实参可以分别用字符数组名或指针变量。

(5)指针是C语言的精华,必须要深入钻研。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2