首页 > 技术文章 > 数据结构实验一

P201821440033 2019-11-03 21:51 原文


#include"stdio.h"
#include <stdlib.h>
int main()
{
    float a[10],i[10];   //a为实部,i为虚部
    int t,s,k;               //t为执行的命令,s,k为进行操作的复数
    int b,c;
    float d,e;         //d为运算后的复数实部,e为运算后的复数虚部
    for(b=0;b<10;b++)
    {
        printf("请输入第%d个复数的实部:(回车结束输入)",b+1);
        scanf("%f",&a[b]);
        fflush(stdin);                                                                    //清除输入缓存
        printf("请输入第%d个复数的虚部:(回车结束输入)",b+1);
        scanf("%f",&i[b]);
        fflush(stdin);
    }
    printf("数据输入完毕!\n");
    printf("输入的数据如下:\n");
    for(b=0;b<10;b++)
    {
        printf("第%d个复数:%f+%fi\t",b+1,a[b],i[b]);    
        if((b+1)%3==0)                                        //一行输出三个
            printf("\n");
    }
    while(1)
    {
    /*    while(1)
        {
            printf("\n请选择要执行的命令:\n");
            printf("1.两个复数相加 2.两个复数相减 3.两个复数相乘\n 4.分离复数实部 5.分离复数虚部 6.输出其中一个复数 7.退出(输入对应的序号回车结束)\n");  
            scanf("%d",&t);
            if(t==1||t==2||t==3||t==4||t==5||t==6||t==7)                   //判断t的值是否符合要求
                break;
            else
                printf("输入的数据有误!请重新输入\n");
        }*/

        do
        {
            printf("\n请选择要执行的命令:\n");
            printf("1.两个复数相加 2.两个复数相减 3.两个复数相乘\n 4.分离复数实部 5.分离复数虚部 6.输出其中一个复数 7.退出(输入对应的序号回车结束)\n");    
            scanf("%d",&t);
            fflush(stdin);
            if(!(t==1||t==2||t==3||t==4||t==5||t==6||t==7))                //判断t的值是否符合要求
                printf("输入的数据有误!请重新输入\n");
        }while(!(t==1||t==2||t==3||t==4||t==5||t==6||t==7));




        if(t==1)
        {
            while(1)
            {
                printf("请输入相加的第一个复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    while(1)
                    {
                        printf("请输入相加的第二个复数:(输入1、2……回车结束输入)\n");
                        scanf("%d",&k);
                        if(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10)
                        {
                            d=a[s-1]+a[k-1];
                            e=i[s-1]+i[k-1];
                            printf("计算结果为:%f+%fi\n",d,e);
                            break;
                        }
                        else
                            printf("输入的数据有误!请重新输入\n");
                    }
                    break;
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }
        }
        if(t==2)
        {
            while(1)
            {
                printf("请输入相减的第一个复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    while(1)
                    {
                        printf("请输入相减的第二个复数:(输入1、2……回车结束输入)\n");
                        scanf("%d",&k);
                        if(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10)
                        {
                            d=a[s-1]-a[k-1];
                            e=i[s-1]-i[k-1];
                            printf("计算结果为:%f+%fi\n",d,e);
                            break;
                        }
                        else
                            printf("输入的数据有误!请重新输入\n");
                    }
                    break;
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }
        }
        if(t==3)
        {
            while(1)
            {
                printf("请输入相乘的第一个复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    while(1)
                    {
                        printf("请输入相乘的第二个复数:(输入1、2……回车结束输入)\n");
                        scanf("%d",&k);
                        if(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10)
                        {
                            d=a[s-1]*a[k-1]-i[s-1]*i[k-1];
                            e=a[s-1]*i[k-1]+i[s-1]*a[k-1];
                            printf("计算结果为:%f+%fi\n",d,e);
                            break;
                        }
                        else
                            printf("输入的数据有误!请重新输入\n");
                    }
                    break;
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }
        }
        if(t==4)
        {
            while(1)
            {
                printf("请输入需要分离实部的复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    printf("第%d个复数的实部为:%f\n",s,a[s-1]);
                    break;
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }
        }
        if(t==5)
        {
            while(1)
            {
                printf("请输入需要分离虚部的复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    printf("第%d个复数的虚部为:%fi\n",s,i[s-1]);
                    break;
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }
        }
        if(t==6)
        {
            while(1)
            {
                printf("请输入需要输出的复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    printf("第%d个复数为:%f+%fi\n",s,a[s-1],i[s-1]);
                    break;
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }
        }
        if(t==7)
            return 0;
        printf("按下任意键以继续");
        getchar();
        getchar();
    }
}

 


程序运行结果:

 

 

 

#include"stdio.h"
#include <stdlib.h>
int main()
{
    float a[10],i[10];   //a为实部,i为虚部
    int t,s,k;               //t为执行的命令,s,k为进行操作的复数
    int b,c;
    float d,e;         //d为运算后的复数实部,e为运算后的复数虚部
    for(b=0;b<10;b++)
    {
        printf("请输入第%d个复数的实部:(回车结束输入)",b+1);
        scanf("%f",&a[b]);
        fflush(stdin);                                                                    //清除输入缓存
        printf("请输入第%d个复数的虚部:(回车结束输入)",b+1);
        scanf("%f",&i[b]);
        fflush(stdin);
    }
    printf("数据输入完毕!\n");
    printf("输入的数据如下:\n");
    for(b=0;b<10;b++)
    {
        printf("第%d个复数:%f+%fi\t",b+1,a[b],i[b]);    
        if((b+1)%3==0)                                        //一行输出三个
            printf("\n");
    }
    do
    {
    /*    while(1)
        {
            printf("\n请选择要执行的命令:\n");
            printf("1.两个复数相加 2.两个复数相减 3.两个复数相乘\n 4.分离复数实部 5.分离复数虚部 6.输出其中一个复数 7.退出(输入对应的序号回车结束)\n");  
            scanf("%d",&t);
            if(t==1||t==2||t==3||t==4||t==5||t==6||t==7)                   //判断t的值是否符合要求
                break;
            else
                printf("输入的数据有误!请重新输入\n");
        }*/

        do
        {
            printf("\n请选择要执行的命令:\n");
            printf("1.两个复数相加 2.两个复数相减 3.两个复数相乘\n 4.分离复数实部 5.分离复数虚部 6.输出其中一个复数 7.退出(输入对应的序号回车结束)\n");    
            scanf("%d",&t);
            fflush(stdin);
            if(!(t==1||t==2||t==3||t==4||t==5||t==6||t==7))                //判断t的值是否符合要求
            {
                printf("输入的数据有误!请重新输入\n");
                getchar();
            }
        }while(!(t==1||t==2||t==3||t==4||t==5||t==6||t==7));




        if(t==1)
        {
            do
            {
                printf("请输入相加的第一个复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    do
                    {
                        printf("请输入相加的第二个复数:(输入1、2……回车结束输入)\n");
                        scanf("%d",&k);
                        if(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10)
                        {
                            d=a[s-1]+a[k-1];
                            e=i[s-1]+i[k-1];
                            printf("计算结果为:%f+%fi\n",d,e);
                        }
                        else
                            printf("输入的数据有误!请重新输入\n");
                    }while(!(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10));
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }while(!(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10));
        }
        if(t==2)
        {
            do
            {
                printf("请输入相减的第一个复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    do
                    {
                        printf("请输入相减的第二个复数:(输入1、2……回车结束输入)\n");
                        scanf("%d",&k);
                        if(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10)
                        {
                            d=a[s-1]-a[k-1];
                            e=i[s-1]-i[k-1];
                            printf("计算结果为:%f+%fi\n",d,e);
                        }
                        else
                            printf("输入的数据有误!请重新输入\n");
                    }while(!(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10));
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }while(!(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10));
        }
        if(t==3)
        {
            do
            {
                printf("请输入相乘的第一个复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    do
                    {
                        printf("请输入相乘的第二个复数:(输入1、2……回车结束输入)\n");
                        scanf("%d",&k);
                        if(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10)
                        {
                            d=a[s-1]*a[k-1]-i[s-1]*i[k-1];
                            e=a[s-1]*i[k-1]+i[s-1]*a[k-1];
                            printf("计算结果为:%f+%fi\n",d,e);
                        }
                        else
                            printf("输入的数据有误!请重新输入\n");
                    }while(!(k==1||k==2||k==3||k==4||k==5||k==6||k==7||k==8||k==9||k==10));
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }while(!(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10));
        }
        if(t==4)
        {
            do
            {
                printf("请输入需要分离实部的复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    printf("第%d个复数的实部为:%f\n",s,a[s-1]);
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }while(!(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10));
        }
        if(t==5)
        {
            do
            {
                printf("请输入需要分离虚部的复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    printf("第%d个复数的虚部为:%fi\n",s,i[s-1]);
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }while(!(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10));
        }
        if(t==6)
        {
            do
            {
                printf("请输入需要输出的复数:(输入1、2……回车结束输入)\n");
                scanf("%d",&s);
                if(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10)
                {
                    printf("第%d个复数为:%f+%fi\n",s,a[s-1],i[s-1]);
                }
                else
                    printf("输入的数据有误!请重新输入\n");
            }while(!(s==1||s==2||s==3||s==4||s==5||s==6||s==7||s==8||s==9||s==10));
        }
        if(t==7)
            return 0;
        printf("按下任意键以继续");
        getchar();
        getchar();
    }while(t==1||t==2||t==3||t==4||t==5||t==6);
}

修改后的程序如上,再次修改后将所有的while(1)循环改为了do……while();语句。

推荐阅读