《高級語言程序設(shè)計》北大上機(jī)試題(2)

字號:

為大家收集整理了《《高級語言程序設(shè)計》北大上機(jī)試題(2)》供大家參考,希望對大家有所幫助?。?!
    C語言上機(jī)試題:2
    1. 題目:編一C程序,它能讀入一正整數(shù)n,(n;10),并輸出如下圖形:
    程序設(shè)計:
    main()
    {static int a[20][20];
    int n,i,j,k;
    printf("Please inter n=");
    scanf("%d",%26amp;n);
    printf("\n");
    for (i=0;i;n;i++)
    {k=1;
    for (j=0;j;2*n-1;j++)
    {if (j;n-i-2) a[i][j]=i+1;
    if (k;=2*i+1+n-i-2) k++;
    else break;
    }
    }
    for (i=0;i;n;i++)
    for (j=0;j;2*n-1;j++)
    {if (a[i][j]==0) a[i][j]=' ';
    else a[i][j]+=48;
    }
    for (i=0;i;n;i++)
    {printf("\n");
    for (j=0;j;2*n-1;j++)
    printf("%c",a[i][j]);
    }
    for (i=n-2;i;=0;i--)
    {printf("\n");
    for (j=0;j;2*n-1;j++)
    printf("%c",a[i][j]);
    }
    printf("\n");
    }
    2.題目:編一C程序,它能讀入矩陣A的行數(shù)L,列數(shù)M,矩陣B的列數(shù)N,矩陣B的行數(shù)是M。L,M,N值都小于20), 以及按行讀入矩陣A的L*M個元素(整數(shù))及矩陣B的M*N個元素(整數(shù)),計算并輸出A與B的矩陣乘積(按行,列輸出)。(輸入時,相鄰的兩個整數(shù)用空格隔開)。(可執(zhí)行文件名為e2_2.exe)
    程序設(shè)計:
    main()
    {int a[20][20],b[20][20],c[20][20],l,m,n,i,j,k;
    printf("Please inter a[l][m] and b[m][n] of l,m,n:");
    scanf("%d,%d,%d",%26amp;l,%26amp;m,%26amp;n);
    printf("\n");
    printf("Please inter a[l][m]:\n");
    for (i=0;i;l;i++)
    for (j=0;j;m;j++)
    scanf("%d",%26amp;a[i][j]);
    printf("Please inter b[m][n]:\n");
    for (i=0;i;m;i++)
    for (j=0;j;n;j++)
    scanf("%d",%26amp;b[i][j]);
    for (i=0;i;l;i++)
    for (j=0;j;n;j++)
    {c[i][j]=0;
    for (k=0;k;m;k++)
    c[i][j]+=a[i][k]*b[k][j];
    }
    printf("c[l][n]=a[l][m]*b[m][n]:");
    for (i=0;i;l;i++)
    {printf("\n");
    for (j=0;j;n;j++)
    printf("%-5d",c[i][j]);
    }
    printf("\n");
    }
    3.題目:編一C程序,它能讀入n(n;200)個整數(shù)(以-9999為結(jié)束標(biāo)記,-9999不算在內(nèi),相鄰的兩個整數(shù)用空格隔開),找出第1到第n-1個數(shù)中第一個與第n個數(shù)相等的那個數(shù),并輸出該數(shù)讀入時的序號(序號從1開始記)。(可執(zhí)行文件名為e2_3.exe)
    程序設(shè)計:
    main()
    {int a[200],n,i;
    scanf("%d",%26amp;a[0]);
    if (a[0]!=-9999)
    {for (i=1,n=0;a[i-1]!=-9999;i++,n++)
    scanf("%d",%26amp;a[i]);
    }
    printf("%d,%d\n",n,a[n-1]);
    for (i=0;i;n;i++)
    if (a[i]==a[n-1])
    {printf("%d\n",i+1);
    break;
    }
    }