《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;