《C语言程序设计实验》实验报告
- 格式:doc
- 大小:172.00 KB
- 文档页数:35
《C语言程序设计实验》实验报告
指导老师:
专业:
班级:
学号:
姓名:
日期:2011-05-29
重庆邮电大学计算机科学与技术学院 实验一
实验名称:一维数组程序设计
实验目的:
1、 熟练掌握使用一维数组编程的方法。
2、 熟练掌握排序算法。
实验内容:
1、 调试示例
输入一个整数n(0
源程序:略
调试好的程序:
#include
int main()
{
int i,j,n,x,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i
scanf("%d",&a[i]);
printf("输入要插入的整数:");
scanf("%d",&x);
for(i=0;i
{
if(x>a[i])continue;
j=n-1;
while(j>=i){
a[j+1]=a[j];
j--;
}
a[i]=x;
break;
}
if(i==n)a[n]=x;
for(i=0;i<=n;i++)
printf("%d\t",a[i]);
return 0; }
2、 编程题1
输入一个正整数n(0
程序代码:
#include
int main()
{
int i,n,sum=0,a[10];
float av;
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i
scanf("%d",&a[i]);
for(i=0;i
{
sum+=a[i];
}
av=(float)sum/n;
printf("%0.2f\t",av);
return 0;
}
3、 编程题2
输入一个正整数n(0
程序代码
#include
int main()
{
int i,n,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i
scanf("%d",&a[i]);
for(i=n-1;i>=0;i--)
printf("%d\t",a[i]);
return 0;
}
4、 编程题3
输入一个正整数n(0
程序代码:
#include
int main()
{
int i,j,n,x,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i
scanf("%d",&a[i]);
x=a[0];
for(i=0;i
{
if(a[i]>x){x=a[i];j=i;}
}
printf("最大数:%d\t下标:%d\t",x,j);
return 0;
}
5、 编程题4
输入一个正整数n(0
程序代码:
#include
int main()
{
int i,n,j=0,k=0,x,y,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i
scanf("%d",&a[i]);
y=a[0];
x=a[0];
for(i=0;i
{
if(a[i]>x){x=a[i];j=i;}
if(a[i]
} a[j]=a[0];
a[0]=y;
a[k]=a[i-1];
a[i-1]=x;
for(i=0;i
printf("%d\t",a[i]);
return 0;
}
6、 编程题5
输入一个正整数n(0
程序代码:
#include
int main()
{
int i,n,j=0,x,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i
scanf("%d",&a[i]);
x=a[0];
for(i=0;i
{
for(j=i;j
{
if(a[i]>a[j+1])
{
x=a[i];a[i]=a[j+1];a[j+1]=x;
}
else continue;
}
}
for(i=0;i
printf("%d\t",a[i]);
return 0;
}
实验总结:
本次C语言上机实验,主要是对一维整数数组进行处理,通过本次实验,我熟练掌握了一维数组元素的处理组排序算法(冒泡排序法和选择排序法)。
实验二
实验名称:字符串程序设计
【实验1】判断回文
从键盘输入一串字符,判断该字符串是否是回文,即该字符串从左向右读,与从右向左读都一样,如“ABCBA”、“ABCCBA”。
编程思路:
定义指针start和end,分别指向字符串首、尾。分别从串首、尾开始向中间比较,若指针所指字符不同,则不是回文。
源程序:
#include
#include
int is(char*ptr);
void main()
{
char str[100];
printf("input a string\n");
gets(str);
if(is(str))
{printf("%s is a Palindrome\n",str);}
else
{printf("%s is a not palindrome\n",str);}
}
int is(char*ptr)
{
int i,a,flag=0;
a=(int)strlen(ptr)-1;//数组下标从0开始!
for(i=0;a>=0;i++,a--)
{
if(ptr[a]==ptr[i])
flag=1;
else
{
flag=0;
break;
}
}
return flag;
} 【实验2】删除排序
已知某已排好序的数组,其元素为{1,3,5,7,9},从键盘输入x的值,若数组中存在与x相等的元素,则删除。
编程思路:
搜索整个数组判断x是否存在于数组中;如果在,定位待删除元素的下标 ;从该下标开始,将所有后续元素往前移。注意移动顺序应从最后一个元素开始,还是先从待删除元素的位置开始!
源程序:
#include
#include
int *Delete(int a[],int n,int x)
{
int i,pos,k;
for(i=0;i
{
if(a[i]==x)
{ pos=i;
break;
}
}
for(k=pos;k
a[k]=a[k+1];
return a;
}
int main()
{
int arr[5]={1,3,5,7,9},x,i;
printf("input x= ");
scanf("%d",&x);
printf("before delete");
for(i=0;i<5;i++)
printf("%4d",arr[i]);
printf("\n");
Delete(arr,5,x);
printf("after delete");
for(i=0;i<4;i++)
printf("%4d",arr[i]);
printf("\n");
return 0;