资源描述
河南工业大学实验报告
课程名称:程序设计实践 开课实验室:
专业班级
计科1506
学号
姓名
王智宇
实验项目名称
实验3:指针进阶
实验日期
-3-30
成绩评估
教师签名:
日 期:
一、实验目:
1. 理解指针数组概念,掌握指针数组基本应用和编程办法。
2. 掌握单向链表概念和建立办法。
3. 掌握单向链表基本操作。
二、实验环境:
1. 运营Window XP/Windows 7/Windows 8等操作系统PC机;
2. VC++6.0,CodeBlocks,或Dev C++等编译环境。
三、实验内容:
1.编写程序,输入一种月份,输出相应英文名称,规定用指针数组表达12个月英文名称。
输入输出示例:
5
May
【源程序】
#include<stdio.h>
#include <stdlib.h>
int main()
{ int num;
scanf("%d",&num);
getchar();
char *month[12]={"January","February","March","April","May","June","July","August","September","October","Novermber","December"};
printf("%s\n",month[num-1]);
return 0;
}
【运营成果】
8
August
Process returned 0 (0x0) execution time :2.466 s
Press any key to continue.
2. 定义一种指针数组将下表星期信息组织起来,输入一种字符串,在表中查找,若存在,输出该字符串在表中序号,否则输入-1。
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
输入输出示例:
Tuesday
3
【源程序】
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *month[12]={"January","February","March","April","May","June","July","August","September","October","Novermber","December"};
char mnum[10];
scanf("%s",&mnum);
getchar();
int i=0;
for(i=0;i<12;i++)
{ if(strcmp(mnum,month[i]))
printf("%d\n",i+1);
return 0;
}
return 0;
}
【运营成果】
Junuary
1
Process returned 0 (0x0) execution time :5.130 s
Press any key to continue.
3. 编写程序,输入n(n<10)个字符,输出其中最长字符串有效长度。规定自定义函数int max_len(char *s[] ,int n),用于计算有n个元素指针数组n中最长字符串长度。
输入输出示例:
n=4
blue
yellow
red
green
6
【源程序】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int max_len(char *s[] ,int n);
int main()
{
int i,n,t;
printf("n=");
scanf("%d",&n);
getchar();
char *num[n],str[80];
for(i=0;i<n;i++)
{
gets(str);
num[i]=(char*)malloc(sizeof(char)*(strlen(str)+1));
strcpy(num[i],str);
}
t=max_len(num,n);
printf("%d",t);
return 0;
}
int max_len(char *s[],int n)
{
int i,t,max=0;
for(i=0;i<n;i++)
{
t=strlen(s[i]);
if(max<t)
max=t;
}
return max;
}
【运营成果】
n=5
sdsdsdsd
sdd
dddd
dddddd
dd
8
Process returned 0 (0x0) execution time :8.274 s
Press any key to continue.g
4. 输入若干个学生信息(涉及学号、姓名和成绩),输入学号为0时输入结束,建立一种单向链表,再输入一种成绩值,将成绩不不大于等于该值学生信息输出。
输入输出示例:
1 Zhang 78
2 Wang 80
3 Li 75
4 Zhao 85
0 0 0
80
2 Wang 80
4 Zhao 85
【源程序】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
int num;
char name[20];
int score;
struct node *next;
}LNode,*LinkList;
void CreateList(LinkList head)
{
LinkList p,rear=head;
int num;
char temp[20];
int tmp;
while(scanf("%d %s %d",&num ,&temp,&tmp),num!=0)
{
p=(LinkList)malloc(sizeof(LNode));
p->num=num;
strcpy(p->name,temp);
p->score=tmp;
rear->next=p;
rear=p;
}
rear->next=NULL;
}
void printList(LinkList head,int n)
{
LinkList p=head->next;
while(p)
{ if(p->score>=n)
{printf("%d %s %d\n",p->num,p->name,p->score);}
p=p->next;
}
}
int main()
{ int n;
LNode mark;
LinkList head;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
CreateList(head);
scanf("%d",&n);
printList(head,n);
return 0;
}
【运营成果】
1 zhang 78
2 wang 98
3 ji 87
4 killer 78
5 kim 83
0 0 0
80
2 wang 98
3 ji 87
5 kim 83
Process returned 0 (0x0) execution time :71.387 s
Press any key to continue.
5. 输入若干个正整数(输入-1为结束标志),规定按输入数据逆序建立一种链表,并输出。
输入输出示例:
1 2 3 4 5 6 7 -1
7 6 5 4 3 2 1
【源程序】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
int num;
struct node *next;
}LNode,*LinkList;
void CreateList(LinkList head)
{
LinkList p,rear=head;
int num;
while(scanf("%d",&num),num!=-1)
{
p=(LinkList)malloc(sizeof(LNode));
p->num=num;
rear->next=p;
rear=p;
}
rear->next=NULL;
}
void printList(LinkList head)
{ int temp;
LinkList p=head->next,j;
while(p)
{ j=p->next;
while(j)
{
if(p->num<j->num)
{
temp=p->num;
p->num=j->num;
j->num=temp;
}
j=j->next;
}
p=p->next;
}
p=head->next;
while(p)
{
printf("%d ",p->num);
p=p->next;
}
}
int main()
{ int n;
LNode mark;
LinkList head;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
CreateList(head);
printList(head);
free(head);
return 0;
}
【运营成果】
1 2 3 4 44 55 33 23 42 45 -1
55 45 44 42 33 23 4 3 2 1
Process returned 0 (0x0) execution time :14.031 s
Press any key to continue.
*6、在第4题基本上,再添加两个函数模块,一种实现将链表中数据存储到磁盘文献“student.dat”中。另一种实现将磁盘文献“student.dat”中数据按照学号逆序建立新链表。
【源程序】
【运营成果】
四、实验成果&总结:
(列出实验过程中收获和遇到困难)
展开阅读全文