美文网首页
北京林业大学 C程序设计 实验3的内容和要求

北京林业大学 C程序设计 实验3的内容和要求

作者: 点一下我的id | 来源:发表于2019-04-21 03:05 被阅读0次

实验3的内容和要求
1.同学们在上机的时候,请选择开机菜单中的“Develop”项进入系统。
2.在实验过程中,你编写的程序不要存放在桌面或者C盘,要存在D盘上。
作业要求
 实验3上传格式要求:
 作业做完之后,会有7个文件:test3-1.c,test3-2.c,test3-3.c,test3-4.c,test3-5.c,test3-6.c和实验内容及其调试成功的程序贴进去生成的:实验3.doc,将这7个文件压缩为:学号-姓名.rar;
 实验3上传时间要求:
实验3提交截至时间:2019.4.21,22:00之前。
 实验3上传地址要求:
实验3提交地址:ftp://202.204.121.124/caijuan/C语言/homework中各班文 件夹中的实验3文件夹中。
实验3的内容
第1题
编写一段程序,程序名称命名为test3-1.c,完成如下任务:
歌手大奖赛上有10个评委(放在一个数组中)打分,请你设计一个通用程序,该程序可以实现显示每位歌手的成绩、最高分、最低分;还能显示高于平均值的评委号码及其打分的分值;能显示出给最高分的评委的号码,及给最低分的评委的号码。
例如,图1(假设有6位评委打分)的一次运行结果实例(显示的内容仅供参考):

第2题
编写一段程序,程序名称命名为test3-2.c,完成如下任务:
编程实现从键盘输入8个整数存放在一个数组中,由程序自动完成将数组的数据排序后,先从大到小显示,再从小到大显示。(并且要求排序方法分别使用选择法和冒泡法)

一次运行结果实例(显示的内容仅供参考):

第3题

编写一段程序,程序名称命名为test3-3.c,完成如下任务:
应用数组并利用筛选法求出100之内的素数。

第4题
编写一段程序,程序名称命名为test3-4.c,完成如下任务:
有一个已经按从小到大排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
第5题
5. 编写一段程序,程序名称命名为test3-5.c,完成如下任务:
定义一个3行3列的二维数组,类型为整型,其中的内容为
9 8 7
1 2 3
4 5 6
(1)请在定义数组的时候给数组初始化,并且输出二维数组,其中数组元素的格式为“%2d”。
(2)输出二维数组对角线元素之和;
(3)输出二维数组中最小的那个元素的值,输出的格式为:
数组中值最小的元素为:数组名[行号][列号]=元素值
(4)要求在程序中适当的位置给出提示性的输出语句。
第6题
编写一段程序,程序名称命名为test3-6.c,实现如下任务:
编写一个程序,输入一个字符串,求出该字符串的长度,要求不能利用库函数


第一题
编写一段程序,程序名称命名为test3-1.c,完成如下任务:
歌手大奖赛上有10个评委(放在一个数组中)打分,请你设计一个通用程序,该程序可以实现显示每位歌手的成绩、最高分、最低分;还能显示高于平均值的评委号码及其打分的分值;能显示出给最高分的评委的号码,及给最低分的评委的号码。
例如,图1(假设有6位评委打分)的一次运行结果实例(显示的内容仅供参考):

#include<stdio.h>

#define N 6

int main() {

    while (1) {


        double score[N], sum = 0, min = 9999, max = -1;

        for (int i = 0; i < N; i++) {
            printf("Please input a score:");
            scanf("%lf", &score[i]);

//            min = score[i] > min ? min : score[i];

            if (score[i] > min) {
                min = min;
            } else {
                min = score[i];
            }

//            max = score[i] < max ? max : score[i];

            if (score[i] > max) {
                max = max;
            } else {
                max = score[i];
            }
            sum += score[i];
        }
        double avg = sum / N;
        printf("The average: %lf\n", avg);
        printf("The max: %lf\n", max);
        printf("The min: %lf\n", min);
        for (int i = 0; i < N; i++) {
            if (score[i] > avg) {
                printf("%d,%f\n", i + 1, score[i]);
            }
        }

        for (int i = 0; i < N; ++i) {
            if (score[i] == max) {
                printf("max: %d,%f\n", i + 1, score[i]);
            }
        }
        for (int i = 0; i < N; ++i) {
            if (score[i] == min) {
                printf("min: %d,%f\n", i + 1, score[i]);
            }
        }
        printf("Next singer? < y or Y>: ");
        char change;
        scanf("%c", &change);
        scanf("%c", &change);
        if (change == 'y' || change == 'Y') {
            continue;
        } else {
            break;
        }
    }


    return 0;

}

第二题
编写一段程序,程序名称命名为test3-2.c,完成如下任务:
编程实现从键盘输入8个整数存放在一个数组中,由程序自动完成将数组的数据排序后,先从大到小显示,再从小到大显示。(并且要求排序方法分别使用选择法和冒泡法)


#include<stdio.h>

#define N 8

int main() {

    int array[N];
    for (int i = 0; i < N; ++i) {
        scanf("%d", &array[i]);
    }
    printf("The sorted number:\n");

//    简单选择排序
    int max, flag;
    for (int i = 0; i < N; ++i) {
//        记录最大的数的下标
        flag = i;
//        记录最大的数
        max = array[i];
        for (int j = i + 1; j < N; ++j) {
            if (max < array[j]) {
                max = array[j];
                flag=j;
            }
        }
//        如果最大的数不是当前的数
        if(i!=flag){
            int temp=array[i];
            array[i]=array[flag];
            array[flag]=temp;
        }

    }
    for (int k = 0; k < N; ++k) {
        printf("%d ", array[k]);
    }
    printf("\n");

//  冒泡排序
    for (int l = 0; l < N-1; ++l) {
        for (int i = 0; i <N-1-l; ++i) {
            if(array[i]>array[i+1]){
                int temp=array[i];
                array[i]=array[i+1];
                array[i+1]=temp;
            }
        }
    }
    for (int k = 0; k < N; ++k) {
        printf("%d ", array[k]);
    }
    printf("\n");

    return 0;

}


第三题
编写一段程序,程序名称命名为test3-3.c,完成如下任务:
应用数组并利用筛选法求出100之内的素数。

#include<stdio.h>

#define N 100

int main() {


    int array[N];
    for (int i = 0; i < N; ++i) {
        array[i] = i;
    }
    for (int j = 2; j < N; ++j) {

        int flag = 0;
        for (int i = 2; i < j; ++i) {
            if (array[j] % i) {
                continue;
            } else {
                flag = 1;
                break;
            }
        }
        if (!flag) {
            printf("%d ", array[j]);
        }

    }
    return 0;
}

第4题
        编写一段程序,程序名称命名为test3-4.c,完成如下任务:
有一个已经按从小到大排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

#include<stdio.h>

#define N 7

int main() {

    int array[N+1]={1,3,4,5,6,7,8};
    int a;
    scanf("%d",&a);
    int flag=0,i;

//    先找到插入点下标,i
    for (i = 0; i <N ; ++i) {
        if(array[i]>a){
            break;
        }
    }

//    数组从后往前挪一个单位
    for (int j = N; j >i ; --j) {
        array[j]=array[j-1];
    }

//    目标
//    插入该位置
    array[i]=a;

//    打印结果
    for (int k = 0; k < N; ++k) {
        printf("%d ",array[k]);
    }
//    空行
    printf("\n");

    return 0;
}

第5题
5. 编写一段程序,程序名称命名为test3-5.c,完成如下任务:
定义一个3行3列的二维数组,类型为整型,其中的内容为
9  8  7
1  2  3
4  5  6
(1)请在定义数组的时候给数组初始化,并且输出二维数组,其中数组元素的格式为“%2d”。
(2)输出二维数组对角线元素之和;
(3)输出二维数组中最小的那个元素的值,输出的格式为:
数组中值最小的元素为:数组名[行号][列号]=元素值
(4)要求在程序中适当的位置给出提示性的输出语句。

#include <stdio.h>

#define N 3

int main(){

    int mt[3][3]={
            {9,8,7},
            {1,2,3},
            {4,5,6}
    };
//    1
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j <N ; ++j) {
            printf("%2d ",mt[i][j]);
        }
        printf("\n");
    }

//    2
    int sum=0;
    for (int k = 0; k < N; ++k) {
        for (int i = 0; i < N; ++i) {
            if(k==i){
                sum+=mt[k][i];
            }
        }
    }
    for (int k = 0; k < N; ++k) {
        for (int i = 0; i < N; ++i) {
            if(k+i==N-1){
                sum+=mt[k][i];
            }
        }
    }
    sum-=mt[N/2][N/2];
    printf("对角线元素之和为:%d\n",sum);

//    3

    int min=99999,row=-1,colume=-1;
    for (int l = 0; l < N; ++l) {
        for (int i = 0; i < N; ++i) {
            if(mt[l][i]<min){
                min=mt[l][i];
                row=l;
                colume=i;
            }
        }
    }
    printf("数组中值最小的元素为:数组名[%d][%d]=%d", row + 1, colume + 1, mt[row][colume]);

//    4
    return 0;
}

第6题
        编写一段程序,程序名称命名为test3-6.c,实现如下任务:
编写一个程序,输入一个字符串,求出该字符串的长度,要求不能利用库函数

#include <stdio.h>

#define N 100

int main() {

    char str[N];
    scanf("%s", &str);
    int i = 0;
    int count = 0;
    while (1) {
        count++;
        if (str[i++] == '\0') {
            break;
        }
    }
    printf("%d\n", count - 1);
    return 0;
}

相关文章

网友评论

      本文标题:北京林业大学 C程序设计 实验3的内容和要求

      本文链接:https://www.haomeiwen.com/subject/qqtdgqtx.html