南昌大学科学技术
信息学科部计算机系
实 验 报 告
课程名称:
开课学期:
专 业:
学 号:
姓 名:
指导教师:
日 期:
C程序设计实验报告
专 业: 姓 名: 学 号:
实验日期: 实验类型: (
演示、验证、综合、
设计)
一、实验项目名称
指针和数组
二、实验目的及原理
以VC++6.0或TC 2.0为平台,通过对一组数据的排序,掌握各种排序(主要指 “选择排序” ,“冒泡排序” )算法以及指针、数组、循环的综合运用。
三、实验要求
1.在开始本实验之前,请回顾教科书的相关内容。
2.需要准备一台装有Windows操作系统并具有命令提示符操作界面的计算机,且
系统内安装有能正常运行的 Visual C++6.0 或 Turbo C 2.0 编程环境。
四、实验步骤:
(1)启动Visual C++6.0 或TC 2.0;
(2)输入代码;
(3)编译、连接并运行程序;
(4)调试直至得出正确的结果,并保存该结果。
五、实验数据及处理结果
题目:?输入N个字符串,按照从大到小的顺序输出这N个字符串
(和实验指导P89【实验内容】的第3小题比较)。
正确代码:
正确结果:
? 下面的
程序是实现从10个数中找出最大值和最小值, 请填空。
int max, min;
find_max_min(int *p1, int n)
{ int *q;
max=min=*p1;
for(q= 【1】 ; 【2】 ;q++)
if( 【3】 ) max=*q;
else if( 【4】 ) min=*q; }
main( )
{ int num[10],*p2;
for(p2=num;p2
scanf(“%d”, 【5】 );
【6】 ; 【7】 ;
printf(“\nmax=%d,min=%d”,max,min); }
?完成教材P151编程题的第5小题。
说明:1.适用于04自动化1班、2班、03环境工程、03土木工程、05电子信息1 班05电子信息2班、05排水工程、05土木工程、06计算机1班、06计算机2班、06自动化、06土木工程1班、2班、06建筑、06生技、09排水工程、09材料成型2班、10土木工程2班、3班、10机制、11环境工程。
2. 第?小题作为教育部实验报告五内容。
?输入N个字符串,按照从大到小的顺序输出这N个字符串。
#include"stdio.h"
#include "string.h"
#define N 5
main( )
{ int i,j;
char str[20][20];
void swap(char *p1,char *p2);
printf("请输入待排序的%d个字符串:\n",N);
for(i=0;i gets(str[i]);
for(i=0;i for(j=i+1;j if(strcmp(str[i],str[j])<0)
swap(str[i],str[j]);
printf("\n由大到小输出这%d个字符串:\n",N);
for(i=0;i puts(str[i]);}
void swap(char *p1,char *p2
)
{char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}
? 下面的程序是实现从10个数中找出最大值和最小值, 请填空。
【1】 p1+1 【2】 qmax 【4】 *q 【5】 p2++ 【6】 p2=num 【7】 find_max_min(p2,10)
?完成教材P151编程题的第5小题。
#include"stdio.h"
void main( )
{ char s[80];
char c,*q,*p=s;
printf("输入一串字符:\n");
gets(s);
printf("输入一个字符:\n");
c=getchar();
while(*p)
{ if(*p==c)
{ q=p;
while(*q)
{ *q=*(q+1);q++;}}
p++;}
printf("删除%c后的字符串如下:\n",c);
puts(s);
}
附加题:用起泡法对任意N个整数排序。(N从键盘输入)
D:\tc2>type a11.c
#include"stdio.h"
main( )
{ int *p, i, a[100],N;
void sort( int *x, int n);
p=a;
printf("please input number N:\n");
scanf("%d",&;N);
printf("Enter %d numbers:\n",N);
for(i=0; i scanf("%d", p++);
p=a;
sort(p, N);
printf("There sorted after:\n");
for(p=a, i=0; i { printf("%5d",*p); p++; }
putchar('\n');
}
void sort( int *x, int n)
{ int i, j, t;
for(i=0; i for(j=0; j if(x[j]>x[j+1])
{ t=x[j]; x[j]=x[j+1]; x[j+1]=t; }
}
运行结果如下图所示: