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

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

P833

在这里插入图片描述

源文件

#include <stdio.h>

#define MAX 20

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

int main(void)
{
	int arrA[MAX][MAX], arrB[MAX][MAX], i, j, m, n;

	printf("请输入 m n: ");
	scanf("%d %d", &m, &n);

	printf("请输入 %d 行 %d 列矩阵:\n", m, n);
	for (i=0; i<m; i++)
	{
		for (j=0; j<n; j++)
		{
			scanf("%d", &arrA[i][j]);
		}
	}

	rotate(arrA, arrB, m, n);  /* 调用函数进行转置 */

	printf("\n转置后的矩阵为:\n");
	for (i=0; i<n; i++)
	{
		for (j=0; j<m; j++)
		{
			printf("%5d ", arrB[i][j]);
		}
		putchar('\n');
	}

	return 0;
}

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

修改后的文件

#include <stdio.h>

#define MAX 20

/* userCode(<100字符): 自定义函数之原型声明 */
void rotate(int arrA[][MAX], int arrB[][MAX], int m, int n);

int main(void)
{
	int arrA[MAX][MAX], arrB[MAX][MAX], i, j, m, n;

	printf("请输入 m n: ");
	scanf("%d %d", &m, &n);

	printf("请输入 %d 行 %d 列矩阵:\n", m, n);
	for (i=0; i<m; i++)
	{
		for (j=0; j<n; j++)
		{
			scanf("%d", &arrA[i][j]);
		}
	}

	rotate(arrA, arrB, m, n);  /* 调用函数进行转置 */

	printf("\n转置后的矩阵为:\n");
	for (i=0; i<n; i++)
	{
		for (j=0; j<m; j++)
		{
			printf("%5d ", arrB[i][j]);
		}
		putchar('\n');
	}

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void rotate(int arrA[][MAX], int arrB[][MAX], int m, int n)
{
    int i, j;
    for (i=0; i<m; i++)
	{
		for (j=0; j<n; j++)
		{
            arrB[j][i] = arrA[i][j];
        }
	}
    
}

P242

在这里插入图片描述

源文件

#include <stdio.h>

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

int main(void)
{
	int num[16], count;

	printf("请输入若干个数: ");
	______________________________  /* userCode(<30字符): 调用函数读入数据到num中并统计个数 */

	printf("\n共%d个数,倒序为: ", count);
	______________________________  /* userCode(<30字符): 调用函数倒序输出num的所有元素 */

	return 0;
}

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

修改后的文件

#include <stdio.h>

int inputData(int num[16]);                /* userCode(<50字符): 自定义函数1之原型声明 */
void printData(int num[16], int count);    /* userCode(<50字符): 自定义函数2之原型声明 */

int main(void)
{
	int num[16], count;

	printf("请输入若干个数: ");
    count = inputData(num); /* userCode(<30字符): 调用函数读入数据到num中并统计个数 */

    printf("\n共%d个数,倒序为: ", count);
	printData(num, count);  /* userCode(<30字符): 调用函数倒序输出num的所有元素 */

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int inputData(int num[16])
{
    int i;
    for (i = 0; i < 16; i++)
    {
        scanf("%d", &num[i]);
        if (num[i] == -1)
        {
            break;
        }
    }
    return i;
}
void printData(int num[16], int count)
{
    int i;
    for (i = count - 1; i >= 0; i--)
    {
        printf("%d ", num[i]);
    }
    
}

P780

在这里插入图片描述

源文件

#include<stdio.h>

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

int main(void)
{
	int Len;
	char String[101] = "?????????????????????????????????????????????????????????????";

	printf("input a string: ");
	______________________________  /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */

	printf("\nThe string lenth is: %d\n", Len);
	printf("The string is: %s\n", String);

	return 0;
}

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

修改后的文件

#include<stdio.h>

/* userCode(<50字符): 自定义函数之原型声明 */
int inputString(char str[101]);

int main(void)
{
	int Len;
	char String[101] = "?????????????????????????????????????????????????????????????";

	printf("input a string: ");
    Len = inputString(String); /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */

    printf("\nThe string lenth is: %d\n", Len);
	printf("The string is: %s\n", String);

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int inputString(char str[101])
{
    int i;
    int ret;

    /* 
        这里要注意题目的要求:
            (2)若用户输入时输入了很多字符,则仅读入前100个字符。
            这一点要求的意思就是只能读前100个字符,即下标只能用到99,不能用到100
     */
    for ( i = 0; i < 100; i++)      // 读前100个字符,而0-99的下标就已经是100个字符了,最后一个必须是'\0'
    {
        ret = scanf("%c", &str[i]);
        if (str[i]=='\n' || ret == EOF)
        {
            break;
        }        
    }
    // 处理一行上输入的字符数量超过100时
    if (i>100)     // 满数组的情况,i会增长到101
    {
        str[100] = '\0';
    }
    else
    {
        // 不足100时
        str[i] = '\0';
    }
    
    return i;
}

P817

在这里插入图片描述

源文件

#include<stdio.h>
#include<string.h>

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

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

	printf("Input a string: ");
	gets(str);

	______________________________  /* userCode(<50字符): 调用函数将字符串str逆序存放 */
	printf("\nThe result is: %s\n", str);
	return 0;
}

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

修改后的文件

#include<stdio.h>
#include<string.h>

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

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

	printf("Input a string: ");
	gets(str);

    flipString(str); /* userCode(<50字符): 调用函数将字符串str逆序存放 */
    printf("\nThe result is: %s\n", str);
	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void flipString(char str[128])
{
    int len;
    int i;
    char tmp;
    len = strlen(str);
    for ( i = 0; i < len/2; i++)
    {
        tmp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 - i] = tmp;
    }
}

P822

在这里插入图片描述

源文件

#include <stdio.h>

#define maxNums 100

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

int main(void)
{
	int i, count, scores[maxNums];
	float avgScore;

	printf("Please input scores(-1 to exit): ");
	for (i=0; i<maxNums; i++)
	{
		scanf("%d", &scores[i]);
		if (-1 == scores[i])
		{
			break;
		}
	}
	count = i;

	______________________________  /* userCode(<50字符): 调用函数计算平均成绩 */
	printf("\naverage score is %.2f.\n", avgScore);
	return 0;
}

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

修改后的文件

#include <stdio.h>

#define maxNums 100

/* userCode(<50字符): 自定义函数之原型声明 */
float getAvg(int scores[maxNums], int count);

int main(void)
{
	int i, count, scores[maxNums];
	float avgScore;

	printf("Please input scores(-1 to exit): ");
	for (i=0; i<maxNums; i++)
	{
		scanf("%d", &scores[i]);
		if (-1 == scores[i])
		{
			break;
		}
	}
	count = i;

    avgScore = getAvg(scores, count); /* userCode(<50字符): 调用函数计算平均成绩 */
    printf("\naverage score is %.2f.\n", avgScore);
	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
float getAvg(int scores[maxNums], int count)
{
    float sum = 0;
    int i;
    for (i=0; i<count; i++)
	{
        sum += (float)scores[i];
    }
    return sum / count;
}

P818

在这里插入图片描述

源文件

#include <stdio.h>

#define N 20

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

int main(void)
{
	int m, n;
	int hang, lie, juZhen[N][N];

	printf("Please input m and n: ");
	scanf("%d%d", &m, &n);

	printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
	for (hang = 0; hang < m; hang++)
	{
		for (lie = 0; lie < n; lie++)
		{
			scanf("%d", &juZhen[hang][lie]);
		}
	}
	puts("");

	______________________________  /* userCode(<50字符): 调用函数找出每一行上的最大值的列下标并按示例格式要求显示 */
	return 0;
}

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




修改后的文件

#include <stdio.h>

#define N 20

/* userCode(<50字符): 自定义函数之原型声明 */
void printMax(int m, int n,int juZhen[N][N]);

int main(void)
{
	int m, n;
	int hang, lie, juZhen[N][N];

	printf("Please input m and n: ");
	scanf("%d%d", &m, &n);

	printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
	for (hang = 0; hang < m; hang++)
	{
		for (lie = 0; lie < n; lie++)
		{
			scanf("%d", &juZhen[hang][lie]);
		}
	}
	puts("");

    printMax(m,n,juZhen); /* userCode(<50字符): 调用函数找出每一行上的最大值的列下标并按示例格式要求显示 */
    return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void printMax(int m, int n,int juZhen[N][N])
{
    int i, j;
    int tmpMax;
    int flagJ;

    // 使用打擂算法实现搜索列上的最大值和最大值列下标
    for ( i = 0; i < m; i++)
    {
        tmpMax = juZhen[i][0];
        flagJ = 0;
        for ( j = 0; j < n; j++)
        {
            if (juZhen[i][j]>tmpMax)
            {
                tmpMax = juZhen[i][j];
                flagJ = j;
            }            
        }
        printf("The max value in line %d is %d\n", i, flagJ);
    }
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值