作业8总结

一、实验过程中遇到的问题及解决方法:
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;
}
原文地址:https://www.cnblogs.com/lang-langang/p/6068129.html