一、实验过程中遇到的问题及解决方法:
1)在做第4题时两个数交换值老是乱,多次练习之后结合书本上的内容才掌握。
2)看到第5题时候,第一个想法就是定义两个数组赋值之后一样的不输出,在做的过程中还发现了n,m不相等比较如果m比n大m多的几位不显示。例如m=5,n=3 m的5个数为1 3 5 7 9,n的3个数为1 3 5,发现7,9并不显示就用了
for(i=n;i<m;i++) printf("%d ",b[i]);
显示多的几位,并设定了3种情况(m>n,m<n,m=n)。然后发现了改变顺序输出不正确的问题,引用了第四题的排序,先对两组数列进行排序,在进行比较,发现无法正确输出。
#include<stdio.h>
int main()
{
int i,n,a[10],minj,min,k,b[10],m;
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d number:",n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
for(k=0;k<n-1;k++){
minj=k;
for(i=k+1;i<n;i++)
if(a[i]<a[minj]) minj=i;
min=a[minj];
a[minj]=a[k];
a[k]=min;
}
printf("Enter m:");
scanf("%d",&m);
printf("Enter %d number:",m);
for(i=0;i<m;i++) scanf("%d",&b[i]);
for(k=0;k<n-1;k++){
minj=k;
for(i=k+1;i<m;i++)
if(b[i]<b[minj]) minj=i;
min=b[minj];
b[minj]=b[k];
b[k]=min;
}
if(n<m){
for(i=0;i<n;i++){
if(a[i]==b[i]) continue;
printf("%d %d ",a[i],b[i]);
}
for(i=n;i<m;i++) printf("%d ",b[i]);
}
if(n>m){
for(i=0;i<m;i++){
if(a[i]==b[i]) continue;
printf("%d %d ",b[i],a[i]);
}
for(i=m;i<n;i++) printf("%d ",a[i]);
}
return 0;
}
感觉应该再设置数组c将不同的值存入数组c,还没进行实践。
二、实验心得体会:
这次实验发现了,随着学习内容的增加,在实验过程中可能会遇到很多问题,应尽早进行实验,以便能在发现问题之后有充分的时间自己尝试出正确的答案。
附加题:
1)
#include<stdio.h>
int main()
{
int a,b,c,d;
double sum,p;
printf("Input 4 number:");
scanf("%d%d%d%d",&a,&b,&c,&d);
sum=a+b+c+d;
p=sum/4;
printf("和=%.lf 平均值=%.1f",sum,p);
return 0;
}
2)
#include<stdio.h>
int main()
{
int x;
double d;
printf("Input x:");
scanf("%d",&x);
if(x<=50) d=x*0.53;
else d=(x-50)*0.58+50*0.53;
printf("电费为:%.1lf",d);
return 0;
}
3)
#include<stdio.h>
int main()
{
int m,n;
double i,sum=0,num;
printf("Input m,n:");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++){
num=i*i+1/i;
sum=sum+num;
}
printf("和为:%.6lf",sum);
return 0;
}
4)
#include<stdio.h>
int main()
{
int n,fh=1,i;
double fm=1,fz=1,sum=0,num;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
num=fh*(fz/fm);
fh=-fh;
fm=fm+2;
fz=fz+1;
sum=sum+num;
}
printf("和为:%.2lf",sum);
return 0;
}
5)
#include<stdio.h>
#include<math.h>
int main()
{
int i,n;
double sum=0,num;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
num=sqrt(i);
sum=sum+num;
}
printf("和为:%.2lf",sum);
return 0;
}
6)
#include<stdio.h>
int fact(int i);
int main()
{
int n,i;
double e,num;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
num=fact(i);
e=e+num;
}
printf("和为:%.0lf",e);
return 0;
}
int fact(int i)
{
int sum=1,n,j;
for(j=1;j<=i;j++)
sum=sum*j;
return sum;
}