自考“高級語言程序設(shè)計”習題答案詳解(31)

字號:

5.輸入一個3×6的二維整型數(shù)組,輸出其中的值、最小值及其所在的行列下標。
    「解」找出其值和最小值,及它們的行列位置。采用按行按列順序遍歷數(shù)組的方法找出數(shù)組的值、最小值,以及它們在數(shù)組中的位置指針。輸出時,將位置指針轉(zhuǎn)換成行下標和列下標。程序如下:
    # include
    # define N 3
    # define M 6
    main()
    { int a[N][M],*maxp,*minp,*q,t;
    printf(“輸入%d個整數(shù)\n”, N*M);
    for(q=a[0];q<*a+N*M;q++) {
    scanf(“%d”,&t);*q=t;
    }
    maxp=minp=*a;
    for(q=a[0];q<*a+ N*M; q++) {
    if(*maxp<*q) maxp=q;
    if(*minp>*q) minp=q;
    }
    printf(“值:%d它的行下標是%d它的列下標是%d\n”,
    *maxp,(maxp-*a)/M,(maxp-*a)%M);
    printf(“最小值:%d它的行下標是%d它的列下標是%d\n”,
    *minp,(minp-*a)/M,(minp-*a)%M;
    }
    6.輸入三個字符串,找出其中的字符串。
    「解」將輸入的三個字符率分別存于三個一維字符數(shù)組中,另用一個字符指針數(shù)組,分別指向這三個字符串,然后用循環(huán)控制這三個字符串的比較,找出的字符串。兩字符串比較時,程序不用標準庫函數(shù),而用兩字符串的對應字符比較來實現(xiàn)。完整程序如下:
    # include
    # define N 120
    # define M 3
    mian()
    { char s1[N], s2[N],s3[N],*strs[M]={s1,s2,s3},*p,*q,*ms;
    int i;
    printf(“輸入%d個字符串\n”, M) ;
    for(i= 0; i    scanf(“%s”,strs);
    ms=strs[0];
    for(i=1;i    for( p=ms,q=strs;*p! =‘\0’ && *p==*q;p++,q++);
    if(*p<*q) ms=strs;
    }
    printf(“字符串:%s\n”,ms);
    }