设计性实验
1.输入10个整数到数组a中,将他们按逆序保存并输出
#include <stdio.h>
int main()
{
int i,a[10];
printf("Input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);//for
printf("Before:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=%-3d",i,a[i]);
if((i+1)%5==0)
printf("\n");
}//for
printf("After:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=%-3d",i,a[9-i]);
if((i+1)%5==0)
printf("\n");
}//for
return 0;
}
2.编写程序,根据函数y=x^2-8x+sinx计算x=1,2,3,4…10时的函数值y,并计算和输出这些y值中的极小值(保留两位小数)及对应的x取值
#include <stdio.h>
#include <math.h> //别忘了加
int main()
{
int i,x[10],MinX;
double MinY,y[10];
for(i=1;i<11;i++) //小技巧 i=1而不是i=0,便于得到MinX
{
x[i]=i;
y[i]=x[i]*x[i]-8*x[i]+sin(x[i]);
}//for
MinY=y[1];
for(i=1;i<11;i++)
{
if(MinY>y[i])
{
MinY=y[i];
MinX=x[i];
}//if
}//for
printf("MinY = %.2lf at X = %d",MinY,MinX);
return 0;
}
提高性实验
1.输入10个整数,删除其中的负数后输出剩下的数据
解题思路:先定义一个一维数组用以保存输入的10个整数且令数据总个数为10,依次扫描数组的每个元素,并在扫描的同时检测当前元素是否为负数,若是则删除该元素且数据总个数减1,否则继续扫描并检测下一个元素。删除一个元素的过程为:将当前元素后面的所有元素都向前移动一个位置,此时当前元素会被其后面的第一个元素所覆盖,而其后面其他元素的相对位置均未发生变化。
#include <stdio.h>
int main()
{
int i,j,a[10];
printf("Input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);//for
for(i=j=0;i<10;i++)
{
if(a[i]>=0)
a[j++]=a[i];
}
printf("The last numbers are:\n");
for(i=0;i<j;i++)
printf("%-3d",a[i]);
return 0;
}
2.用一维数组解决以下问题:输入两个各含有 10个数据(整型)的数据序列,求取它们共有的数据,并对共有数据进行升序排序后输出。如序列 A 的元素为2,5,4,1,6,11,10,9,3,7,序列 B的元素为9,10,5,15,1,11,13,7,8,3,则输出结果为 1,3,5,7,9,10,11。
解题思路:将序列 A中的元素逐个取出,与序列B中的每个元素进行比较,若遇到相等的元素,即添加到序列C,等所有相等的元素均已取出后,再对序列C进行升序排序。
#include <stdio.h>
int main()
{
int i,j,a[10],b[10],c[10],n=0,temp;
printf("Please input first 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);//for 输入序列a的10个数据
printf("Please input second 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&b[i]);//for 输入序列b的10个数据
for(i=0;i<10;i++) //逐个取出a元素
{
for(j=0;j<10;j++) //与序列b中每个元素比较
{
if(a[i]==b[j]) //如相等
{
c[n]=a[i]; //添加到序列c
n=n+1;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++) //弱小 两个for循环也不知道在讲什么
{
if(c[j]>c[j+1])
{
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp; //升序排序
}
}
}
printf("Tne shared numbers are:\n");
for(i=0;i<n;i++)
printf("%-3d",c[i]);
return 0;
}