自考“高級(jí)語(yǔ)言程序設(shè)計(jì)”習(xí)題答案詳解(30)

字號(hào):

2.編一個(gè)程序,輸入15個(gè)整數(shù)存入一維數(shù)組,再按逆序重新存放后再輸出。
    「解」輸入數(shù)組的元素,并重新顛倒存放后輸出。將存儲(chǔ)于數(shù)組中的元素顛倒存儲(chǔ),只要首尾相對(duì)應(yīng)的元素兩兩交換即可。若用指針實(shí)現(xiàn),可讓一個(gè)指針p指向前端的元素,另一個(gè)指針q指向與前端元素對(duì)應(yīng)的后端的元素。循環(huán)前,讓p指向數(shù)組的首元素,讓q指向數(shù)組的末元素。循環(huán)時(shí),讓p和q所指兩個(gè)元素交換,并讓p增1,q減l.循環(huán)條件是p所指元素在前,q所指元素在后,即p<q.程序如下:
    # include
    main()
    { int a[15],*p,*q, temp;
    printf(“Enter 15 numbers.\n”);
    for(p=a;p<a+15;p++)
    scanf(“%d”, p);
    for(p=a,q=a+14;p<q;P++,q——) {
    temp=*p; *p=*q;*q=temp;
    }
    for(p=a;p
    printf(“%d\t”,*p);
    printf(“\n”);
    }
    3.輸入一個(gè)字符串,按相反的次序輸出其中的全部字符。
    「解」要相反的次序輸出字符串的全部字符,可用一個(gè)字符指針變量,從指向字符串的本字符開(kāi)始,逆序遍歷字符串,輸出指針?biāo)缸址纯?。但為了讓字符指針指向字符串的末字符,若不用字符串處理?kù)函數(shù),得用一個(gè)循環(huán),讓它從字符串的首字符開(kāi)始,順序移至字符串的結(jié)束標(biāo)記符,然后倒退一個(gè)字符,就能讓它指向字符串的末字符。程序如下:
    # include
    # define N 200
    main()
    { char s[N],*p;
    printf(“Enter a string.\n”);
    scanf(“%s”, s);
    for(p=s;*p; p++);
    for(p——; p>=s; p——)
    printf(“%c”,*p);
    printf(“\n”);
    }
    4.輸入一個(gè)一維實(shí)型數(shù)組,輸出其中的值、最小值和平均值。
    「解」設(shè)實(shí)型數(shù)組的元素個(gè)數(shù)n不超過(guò)20.程序輸入n,并用循環(huán)輸入數(shù)組的元素,再用循環(huán)遍歷數(shù)組,求出數(shù)組的值和最小值、數(shù)組元素的和。然后求出數(shù)組元素的平均值,最后輸出結(jié)果。程序如下:
    # include
    # define N 20
    main()
    { double a[N],max,min,ave,*p, t;
    int n;
    printf(“Enter n(0<n<20)。\n”);
    do{
    scanf(“%d”,&n);
    if(n>0 && n<20) break;
    printf(“n值不合要求,請(qǐng)重新輸入!\n”);
    } while(l);
    printf(“輸入%d個(gè)實(shí)數(shù)\n”, n);
    for(n=a;n
    scanf(“%lf”,&t);*p=t;
    }
    max=min=ave=*a;
    for(p=p+l;p
    if(max<*p) max=*p;
    if(min>*p) min=*p;
    ave+=*p;
    }
    ave/=n;
    printf(“值:%f\t最小值:%f\t平均值:%f\n”,max,min,ave);
    }