指针进阶.docx
- 文档编号:4695793
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:13
- 大小:61.12KB
指针进阶.docx
《指针进阶.docx》由会员分享,可在线阅读,更多相关《指针进阶.docx(13页珍藏版)》请在冰豆网上搜索。
指针进阶
宁德师范学院计算机系
实验报告
(201—201学年第学期)
课程名称高级语言程序设计
实验十一指针进阶
实验名称
专业计算机科学与技术
B20131021411
年级2013级
学号B姓名
指导教师叶茂枝
实验日期2013-5-25
实验目的与要求:
(1)理解指针数组及指向指针的指针的概念。
(2)掌握指针数组的基本应用和编程方法。
(3)理解指针与函数间的关系。
(4)掌握指针作为函数返回值的编程方法。
(5)掌握单向链表的概念和建立方法。
(6)掌握单向链表的基本操作。
实验设备(环境):
PC机、VC++
实验内容:
(1)编写程序,输入两个字符串,输出连接后的字符串。
要求自定义函数char*strcat(char*s,char*t),将字符串t复制到字符串s的末端,并返回字符串s的首地址。
(2)输入若干个学生的信息(包括学号、姓名和成绩),输入学号为0时输入结束,建立一个单向链表,再输入一个成绩值,将成绩大于等于该值的学生信息输出。
(3)输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立一个链表,并输出。
实验步骤、实验结果及分析:
(1)
#include
#include
intmain(void)
{
char*p;
chars[10];
chart[10];
printf("请输入字符串:
");
scanf("%s",s);
printf("请输入字符串:
");
scanf("%s",t);
p=strcat(s,t);
printf("%s\n",p);
return0;
}
char*strcat(char*s,char*t)
{
strcat(s,t);
returns;}
1.源代码:
(1)#include
#include
intmain(void)
{
char*strcat(char*s,char*t);
char*p;
chars[10];
chart[10];
printf("请输入字符串:
");
scanf("%s",s);
printf("请输入字符串:
");
scanf("%s",t);
p=strcat(s,t);
printf("%s\n",p);
return0;
}
char*strcat(char*s,char*t)
{
strcat(s,t);
returns;}
(2)#include
#include
#include
structstud_node{
intnum;
charname[20];
intscore;
structstud_node*next;}
intmain(void){
structstud_node*head,*p,*tail;
intnum,score,m;
charname[20];
structstud_node*ptr;
intsize=sizeof(structstud_node);
head=tail=NULL;
printf("Inputnum,nameandscore:
\n");
scanf("%d",&num);
while(num!
=0){
scanf("%s%d",name,&score);
p=(structstud_node*)malloc(size);
p->num=num;strcpy(p->name,name);
p->score=score;
if(head==NULL){
head=p;tail=p;}
elsetail->next=p;tail=p;
scanf("%d",&num);}
printf("pleaseenterm:
");
scanf("%d",&m);
if(head==NULL){
printf("\nnorecords");return0;}
for(ptr=head;ptr;ptr=ptr->next){
if(ptr->score>=m)
printf("%8d%20s%6d\n",ptr->num,ptr->name,ptr->score);}
return0;}
(2)
(3)
#include
#include
#definenullNULL
typedefstructNode
{
intdata;
structNode*next;
}string_list;
voidmain()
{
string_list*head=null;
string_list*p;
head=(string_list*)malloc(sizeof(string_list));
head->next=null;
intnum=-1;
printf("请输入整数,输入-1是结束:
\n");
do{
scanf("%d",&num);
if(-1==num)break;
p=(string_list*)malloc(sizeof(string_list));
p->data=num;
p->next=head->next;
head->next=p;
}while
(1);
printf("顺序输出链表的各个节点数据:
\n");
while(p!
=null)
{
printf("%d",p->data);
p=p->next;
}
}
2.调试后源代码:
#include
#include
intmain(void)
{
char*p;
chars[10];
chart[10];
printf("请输入字符串:
");
scanf("%s",s);
printf("请输入字符串:
");
scanf("%s",t);
p=strcat(s,t);
printf("%s\n",p);
return0;
}
char*strcat(char*s,char*t)
{
strcat(s,t);
returns;}
(1)
(2)
#include
#include
#include
structstud_node{
intnum;
charname[20];
intscore;
structstud_node*next;
};
intmain(void)
{
structstud_node*head,*p,*tail;
intnum,score,m;
charname[20];
structstud_node*ptr;
intsize=sizeof(structstud_node);
head=tail=NULL;
printf("Inputnum,nameandscore:
\n");
scanf("%d",&num);
while(num!
=0){
scanf("%s%d",name,&score);
p=(structstud_node*)malloc(size);
p->num=num;strcpy(p->name,name);
p->score=score;
if(head==NULL){
head=p;
tail=p;
}
else
tail->next=p;
tail=p;
(2)
scanf("%d",&num);
}
printf("pleaseenterm:
");
scanf("%d",&m);
if(head==NULL){
printf("\nnorecords");
return0;
}
for(ptr=head;ptr;ptr=ptr->next){
if(ptr->score>=m)
printf("%8d%20s%6d\n",ptr->num,ptr->name,ptr->score);
}
return0;
}
(3)#include
#include
#definenullNULL
typedefstructNode
{
intdata;
structNode*next;
}string_list;
voidmain()
{
string_list*head=null;
string_list*p;
head=(string_list*)malloc(sizeof(string_list));
head->next=null;
intnum=-1;
printf("请输入整数,输入-1是结束:
\n");
do{
scanf("%d",&num);
if(-1==num)break;
p=(string_list*)malloc(sizeof(string_list));
p->data=num;
p->next=head->next;
head->next=p;
}while
(1);
printf("顺序输出链表的各个节点数据:
\n");
while(p!
=null)
{
printf("%d",p->data);
p=p->next;
}
}
3.调试方案:
(1)
第一次输入字符串fj第二次输入字符串nmxm,若出现fjnmxm,则程序编写正确,
反之错误。
(2)
输入1张783李672刘890按回车键出现pleaseenterm且输入75若出现
1张78
2刘89
则程序编写正确,反之错误
(3)
输入一行数字4621538573907-1
若出现7093758351264,则程序编写正确
反之错误
4.运行结果:
(1)
(2)
(3)
5.结论
#include
#include
char*strcat(char*s,char*t)
{
char*s1=s;
while(*s)s++;
while(*t)*s++=*t++;
*s=0;
returns1;
}
voidmain()
{
chars[100],t[100];
printf("输入字符串:
");
gets(s);
printf("输入字符串:
");
gets(t);
printf("%s\n",strcat(s,t));
}
指导教师评语:
#include
#include
#definenullNULL
typedefstructstud_node{
intnum;
structstud_node*next;};
structstud_node*Creat_Stu_Doc(){
structstud_node*head,*p;
intnum;
intsize=sizeof(structstud_node);
head=null;
scanf("%d",&num);
while(num!
=-1){
p=(structstud_node*)malloc(size);
p->num=num;
p->next=head;head=p;
scanf("%d",&num);}
returnhead;}
成绩评定
教师签字
年月日
备注:
注:
1、报告内的项目或设置,可根据实际情况加以补充和调整
2、教师批改学生实验报告应在学生提交实验报告10日内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针 进阶