c语言 实验报告11 12
实验十一 字符指针和动态内存分配
实验目的:
掌握掌握strcmp将单词进行大小比较,最后输出。
程序清单:
#include
#include
int main(void)
{
int i,j,k,n;
char a[80],str[10][80];
printf("请输入单词个个数n:");
scanf("%d",&n);
getchar();
printf("请输入%d个单词:\n",n);
for(i=0;i
gets(str[i]);
for(i=0;i
{
k=i;
for(j=i+1;j
{
if(strcmp(str[k],str[j])>0)
k=j;
}
strcpy(a,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],a);
}
printf("按字典顺序排序后的结果为:\n");
for(i=0;i
puts(str[i]);
return 0;
}
测试数据与实验结果:原始数据:n=3,d h a,相应的运算结果:a d h
分析与思考:strcmp(str[k],str[j])>0指前者比后者大。
实验2、算法思想:先定义指针,将第一个作为最大值和最小值,再用指针与其他进行比较,排序。
程序清单:
#include
#include
int main()
{
int n,t,i,*p,*s,*e;
printf("请输入个数n:");
scanf("%d",&n);
if((p=(int *)malloc(n*sizeof(int)))==NULL)
{
printf("不能分配内存。\n");
exit(1);
}
printf("请输入%d个整数",n);
for(i=0;i
scanf("%d",p+i);
for(s=p,e=p+n-1;s
{
t=*s;
*s=*e;
*e=t;
}
printf("将输入的整数逆序排列后为:\n");
for(i=0;i
printf("%d ",*(p+i));
return 0;
}
测试数据与实验结果:
分析与思考:“*s”指的是s所指的值。
实验心得:
实验十二 结构程序设计
实验目的:
掌握掌握struct book将书名和定价输入,再在循环中将b[i].price进行大小的比较,排序,最后输出。
程序清单:
#include
struct book{
char name[20];
float price;
};
int main(void)
{
struct book b[10],max,min;
int i;
printf("请输入10本书的书名和定价:");
for(i=0;i<10;i++)
scanf("%s%f",b[i].name,&b[i].price);
max=min=b[0];
for(i=1;i<10;i++)
{
if(max.price
if(min.price>b[i].price) min=b[i];
}
printf("定价最高的书为:%s,价格:%.2f\n",max.name,max.price);
printf("定价最低的书为:%s,价格:%.2f\n",min.name,min.price);
return 0;
}
测试数据与实验结果:
分析与思考:“max.price”指的是max中的price项的数据。
实验2、算法思想:先使用struct book将书名和定价输入,引入*pmax,*pmin,再在循环中将b[i].price进行大小的比较,分别赋值给pmax和pmin,最后输出。
程序清单:
#include
struct book{
char name[20];
float price;
};
int main()
{
struct book b[10],*pmax,*pmin;
int i;
printf("请输入10本书的书名和定价:");
for(i=0;i<10;i++)
scanf("%s%f",b[i].name,&b[i].price);
pmax=pmin=b;
for(i=1;i