20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises25

P788

在这里插入图片描述

下载的待修改源文件

#include <stdio.h>

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=3, lineLen<=80, 考生可在本行后添加代码、最多3行、行长<=80字符) */



/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

int main(void)
{
	int Data[20], n, max;
	double average;

	printf("Please input the number n = ");
	scanf("%d", &n);
	printf("Please input the array elements : ");
	scanfArr(Data, n);

	max = maxArr(Data, n);
	average = aver(Data, n);
	printf("\nmax = %d\naverage = %.2f\n", max, average);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

修改后的源文件

#include <stdio.h>

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=3, lineLen<=80, 考生可在本行后添加代码、最多3行、行长<=80字符) */
void scanfArr(int *Data, int n);
int maxArr(int *Data, int n);
double aver(int *Data, int n);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

int main(void)
{
	int Data[20], n, max;
	double average;

	printf("Please input the number n = ");
	scanf("%d", &n);
	printf("Please input the array elements : ");
	scanfArr(Data, n);

	max = maxArr(Data, n);
	average = aver(Data, n);
	printf("\nmax = %d\naverage = %.2f\n", max, average);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void scanfArr(int *Data, int n)
{
    int i;
    int *p = Data;
    for (i = 0; i < n; i++)
    {
        scanf("%d", p++);
    }
}
int maxArr(int *Data, int n)
{
    int i;
    int *p = Data;
    int max = *p;
    for ( i = 0; i < n; i++, p++)
    {
        if (max < *p)
        {
            max = *p;
        }
    }
    return max;
}
double aver(int *Data, int n)
{
    double sum = 0;
    int *p = Data;
    int i;
    for ( i = 0; i < n; i++)
    {
        sum += *p++;
    }
    return sum / n;
}

/* 
    要求用指针完成函数中数组参数的传递、以及各个数组元素的访问,即自定义函数头和函数体中不得出现数组下标形式的表示法。
        1. 这里是一维数组,只有相应的指针变量就可以解决问题
        2. 数组索引,才用下标,不用下标,可以使用指针移动来定位元素
        3. 要特别小心指针移动的次数,一次移动的单元是多大
 */

P263

在这里插入图片描述

下载的待修改源文件

#include <stdio.h>

/* userCode(<60字符): 自定义函数之原型声明 */
______________________________

int main(void)
{
	int arr1[6], arr2[10], arr3[15], gt60A, gt60B, gt60C, sumA, sumB, sumC;
	
	______________________________  /* userCode(<60字符): 调用函数读 6个数到arr1中,并计算和及>60的个数 */
	______________________________  /* userCode(<60字符): 调用函数读10个数到arr2中,并计算和及>60的个数 */
	______________________________  /* userCode(<60字符): 调用函数读15个数到arr3中,并计算和及>60的个数 */

	printf("\narr1[0]=%3d, arr1[ 5]=%3d, sum(arr1)=%d, cnt(arr1)=%d", arr1[0], arr1[5], sumA, gt60A);
	printf("\narr2[0]=%3d, arr2[ 9]=%3d, sum(arr2)=%d, cnt(arr2)=%d", arr2[0], arr2[9], sumB, gt60B);
	printf("\narr3[0]=%3d, arr3[14]=%3d, sum(arr3)=%d, cnt(arr3)=%d\n", arr3[0], arr3[14], sumC, gt60C);
	
	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

修改后的源文件

#include <stdio.h>

/* userCode(<60字符): 自定义函数之原型声明 */
void cal(int arr[], int cnt, int *gt60, int *sum);

int main(void)
{
	int arr1[6], arr2[10], arr3[15], gt60A, gt60B, gt60C, sumA, sumB, sumC;

    cal(arr1, 6, &gt60A, &sumA);  /* userCode(<60字符): 调用函数读 6个数到arr1中,并计算和及>60的个数 */
    cal(arr2, 10, &gt60B, &sumB); /* userCode(<60字符): 调用函数读10个数到arr2中,并计算和及>60的个数 */
    cal(arr3, 15, &gt60C, &sumC); /* userCode(<60字符): 调用函数读15个数到arr3中,并计算和及>60的个数 */

    printf("\narr1[0]=%3d, arr1[ 5]=%3d, sum(arr1)=%d, cnt(arr1)=%d", arr1[0], arr1[5], sumA, gt60A);
	printf("\narr2[0]=%3d, arr2[ 9]=%3d, sum(arr2)=%d, cnt(arr2)=%d", arr2[0], arr2[9], sumB, gt60B);
	printf("\narr3[0]=%3d, arr3[14]=%3d, sum(arr3)=%d, cnt(arr3)=%d\n", arr3[0], arr3[14], sumC, gt60C);
	
	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void cal(int arr[], int cnt, int *gt60, int *sum)
{
    int i;
    int mySum = 0;
    int myGt60 = 0;
    // 输入
    printf("请输入%d个数: ", cnt);
    for ( i = 0; i < cnt; i++)
    {
        scanf("%d", &arr[i]);
    }

    // 处理
    for ( i = 0; i < cnt; i++)
    {
        mySum += arr[i];
        if (arr[i] > 60)
        {
            myGt60++;
        }
    }
    *sum = mySum;
    *gt60 = myGt60;
}

P804

在这里插入图片描述

下载的待修改源文件

#include<stdio.h>

#define NOT_FIND -1
#define TOTAL_STU 8

/* 函数aver的功能为:求学号为stuNo的学生的6门课课程之平均成绩,并通过函数值返回
		若未找到学生stuNo,则返回NOT_FIND */	
float aver(int (*pStu)[7], int stuNo);

int main(void)
{
	int student[TOTAL_STU][7]; /* the first column save student's number */
	float averScore;
	int i, j, stuNumber;

	printf("Input the %d student's number and score: \n", TOTAL_STU);
	/* 本部分代码功能建议:从键盘读入的8个学生的6门课成绩存放在二维数组student中 */	
	/* User Code Begin(Limit: lines<=6, lineLen<=50, 考生可在本行后添加代码、最多6行、行长<=50字符) */

	
	
	
	
	
	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

	printf("\nInput a student's number to compute: ");
	scanf("%d", &stuNumber);

	/* 本部分代码功能建议:调用函数aver()求平均值 */	
	/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */

	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
	if (NOT_FIND == averScore)
	{
		printf("\nstudent of No.%d not Find!\n", stuNumber);
	}
	else
	{
		printf("\nThe No.%d student's average is %.2f\n", stuNumber, averScore);
	}

	return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数aver,行数不限) */

修改后的源文件

#include<stdio.h>

#define NOT_FIND -1
#define TOTAL_STU 8

/* 函数aver的功能为:求学号为stuNo的学生的6门课课程之平均成绩,并通过函数值返回
		若未找到学生stuNo,则返回NOT_FIND */	
float aver(int (*pStu)[7], int stuNo);

int main(void)
{
	int student[TOTAL_STU][7]; /* the first column save student's number */
	float averScore;
	int i, j, stuNumber;

	printf("Input the %d student's number and score: \n", TOTAL_STU);
	/* 本部分代码功能建议:从键盘读入的8个学生的6门课成绩存放在二维数组student中 */	
	/* User Code Begin(Limit: lines<=6, lineLen<=50, 考生可在本行后添加代码、最多6行、行长<=50字符) */
    for ( i = 0; i < TOTAL_STU; i++)
    {
        printf("%d: ", i + 1);
        for ( j = 0; j < 7; j++)
        {
            scanf("%d", &student[i][j]);
        }
        //printf("\n");
    }	
	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

	printf("\nInput a student's number to compute: ");
	scanf("%d", &stuNumber);

	/* 本部分代码功能建议:调用函数aver()求平均值 */	
	/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
    averScore = aver(student, stuNumber);
    /* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
	if (NOT_FIND == averScore)
	{
		printf("\nstudent of No.%d not Find!\n", stuNumber);
	}
	else
	{
		printf("\nThe No.%d student's average is %.2f\n", stuNumber, averScore);
	}

	return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数aver,行数不限) */
float aver(int (*pStu)[7], int stuNo)
{
    int flag = 0;
    float avg;
    float sum = 0;
    int i, j;
    for ( i = 0; i < TOTAL_STU; i++)
    {
        if (pStu[i][0] == stuNo)
        {
            for ( j = 1; j < 7; j++)
            {
                sum += pStu[i][j];
            }
            flag = 1;
        }        
    }
    if (flag)
    {
        avg = sum / 6;
    }
    else
    {
        avg = NOT_FIND;
    }
    
    return avg;
}

P784

在这里插入图片描述

下载的待修改源文件

#include<stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
______________________________

int main(void)
{
	int n, i;
	float score[3][4];

	printf("input student's score:\n");
	for (i=0; i<=2; i++)
	{
		printf("    student %d: ", i);
		scanf("%f %f %f %f", &score[i][0], &score[i][1], &score[i][2], &score[i][3]);
	}

	printf("\ninput student No: ");
	scanf("%d", &n);
	search(score, n);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

修改后的源文件

#include<stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
void search(float (*score)[4], int n);

int main(void)
{
	int n, i;
	float score[3][4];

	printf("input student's score:\n");
	for (i=0; i<=2; i++)
	{
		printf("    student %d: ", i);
		scanf("%f %f %f %f", &score[i][0], &score[i][1], &score[i][2], &score[i][3]);
	}

	printf("\ninput student No: ");
	scanf("%d", &n);
	search(score, n);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void search(float (*score)[4], int n)
{
    int i;
    printf("\nthe score of No %d are:", n);
    for (i=0; i<4; i++)
	{
        printf("%6.1f", *(*(score + n) + i));
    }
}

P789

在这里插入图片描述

下载的待修改源文件

#include <stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
______________________________

int main(void)
{
	char str[100];

	printf("Please input the string : ");
	gets(str);

	deleteother(str);
	printf("\noutput: %s\n", str);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

修改后的源文件

#include <stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
void deleteother(char str[]);

int main(void)
{
	char str[100];

	printf("Please input the string : ");
	gets(str);

	deleteother(str);
	printf("\noutput: %s\n", str);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void deleteother(char *str)
{ 
    char *p1,*p2;   // p2用于遍历,p1用于移动后的位置记录
    p1=p2=str;      // 指向开头
    while ( *p2 )   // 未指到末尾
    { 
        if ( (*p2>='A'&&*p2<='Z')||(*p2>='a'&&*p2<='z') )   // 如果是要保留的字符
        { 
            *p1=*p2; // 移动并覆盖无用字符
            p1++; 
        }
        p2++;       // 指针后移
    }
    *p1='\0';       // 最后的字符串结束符
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐