MENU

C语言应用单元测试 3

2017 年 11 月 23 日 • 日常作业

这是我的作业和我的答案,供将来自己检索,和大家参考之用。

编程定义一个M×M的二维数组,并在主函数中自动赋值。然后编写函数proc(int arr[][M]),该函数的功能是使数组右上半三角元素中的值全部置成0。例如a数组中的值为:
1 2 3
4 5 6
7 8 9 ,
则返回主程序后a数组中的值应为:
0 0 0
4 0 0
7 8 0

#include <stdio.h>
#define M 3
void printa(int arr[M][M]){
    int i,j;
    for(i=0;i<M;i++){
        for(j=0;j<M;j++){
            printf("%d\t",arr[i][j]);
        }
        printf("\n");
    }
}
void proc(int arr[][M]){
    int i,j;
    for(i=0;i<M;i++){
        for(j=M-1;j>=i;j--){
            arr[i][j]=0;
        }
    }
}
int main(){
    int arr[M][M]={1,2,3,4,5,6,7,8,9};
    printf("原数组:\n");
    printa(arr);
    proc(arr);
    printf("新数组:\n");
    printa(arr);
    return 0;
}

请编写函数void proc(char a[],charb[],int n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串thanyou,然后输入4,则调用该函数后的结果为thanou。

#include <stdio.h>
#include <string.h>
//大哥你想说输5结果是thanou吧,4怎么可能删到第5个字符了
void proc(char a[],char b[],int n){
    int i;
    for(i=0;i<n-1;i++)
        b[i]=a[i];
    for(i=n;a[i];i++)
        b[i-1]=a[i];
    b[i-1]=0;
}
int main(){
    char ors[51],nes[51];
    int n;
    printf("输入字符串:");
    gets(ors);
    printf("输入 n=");
    scanf("%d",&n);
    proc(ors,nes,n);
    printf("新字符串:");
    puts(nes);
    return 0;
}

某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩在主函数中给出,编写子函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。
例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。

#include <stdio.h>

struct stu_type{
    char no[11];
    float score[8];
    float ave;
};
int main(){
    stu_type thisStu={"X2016",{85.5,76,69.5,85,91,72,64.5,87.5}};
    int i;
    float sum=0;
    for(i=0;i<8;i++)
        sum+=thisStu.score[i];
    thisStu.ave=sum/8;
    printf("ave: %.3f。\n",thisStu.ave);
    return 0;
}

请编写函数void proc(int X,int pp[],int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若X中的值为50,则有3个数符合要求,它们是 1,5,25。

#include <stdio.h>
//而且应该是在正数范围内讨论,要不然负数可以小到无穷去呢,当然一定要排除0(0是偶数)
void fun(int x,int pp[],int *n){
    int i,a;
    for(a=1,i=0;a<=x;a+=2){
        if(x%a==0){
            pp[i]=a;
            i++;
        }
    }
    *n=i;
}
int main(){
    int arr[10],n,i; //以此为例
    fun(50,arr,&n); //以此为例
    for(i=0;i<n;i++)
        printf("%d\t",arr[i]);
    printf("\n",n);
    return 0;
}

(此文为定时发布)

原发于 2016-12-22 23:41