目录

前言

1、转置矩阵

1.1 题目

描述

输入描述:

输出描述:

1.2解题

        分析:

        程序:

2、KiKi判断上三角矩阵

2.1 题目

描述

输入描述:

输出描述:

2.2 解题 

        分析:

        程序:

3、有序序列判断

3.1 题目

描述

输入描述:

输出描述:

3.2解题

        分析:

        程序:

结语


前言

        纸上得来终觉浅,觉知此事要躬行。C语言的学习不仅要了解理论知识,更要不断练习,在练习中成长。下面我将给出几到例题,并分析讲解,帮助我们在实践中了解C语言。

1、转置矩阵

1.1 题目

描述

KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。

输入描述:

第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。

输出描述:

输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。

C语言题目练习-LMLPHP

1.2解题

        分析:

        此题就是一个对二维数组的操作,只需要在输入时按照行和列的顺序输入,输出时按照列到行反过来输出即可。

        程序:

int main()
{
	int a[10][10] = { 0 };
	int n = 0;
	int m = 0;
	scanf("%d%d", &n, &m);
	for (int i = 0;i < n;i++)
	{
		for (int j = 0;j < m;j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	for (int i = 0;i < m;i++)
	{
		for (int j = 0;j < n;j++)
		{
			printf("%d ", a[j][i]);
		}
		printf("\n");
	}
	return 0;
}

2、KiKi判断上三角矩阵

2.1 题目

描述

KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。

输入描述:

第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤n≤10)

从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。

输出描述:

一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。

C语言题目练习-LMLPHP

2.2 解题 

        分析:

        此题先输入数据,然后对左下角的数据进行判断,只要出现非0则不为上三角矩阵,输出NO。如果判断完成后未发现问题,则为上三角矩阵,输出YES

        程序:

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[10][10] = { 0 };
	int i = 0;
	int j = 0;
	int p = 1;    //标记,如果是上三角矩阵,则为1,否则为0.
	for (i = 0;i < n;i++)   //输入
	{
		for (j = 0;j < n;j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}
	for (i = 0;i < n;i++)   //判断
	{
		for (j = 0;j < n;j++)
		{
			if (((i - j) > 0) && (arr[i][j] != 0))
			{
				p = 0;
                goto end;
			}
		}
	}
end:
	if (p == 1)
	{
		printf("YES\n");
	}
	else
	{
		printf("NO\n");
	}

	return 0;
}

3、有序序列判断

3.1 题目

描述

输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。

数据范围:3≤n≤50  序列中的值都满足 1≤val≤100 

输入描述:

第一行输入一个整数N(3≤N≤50)。

第二行输入N个整数,用空格分隔N个整数。

输出描述:

输出为一行,如果序列有序输出sorted,否则输出unsorted。

C语言题目练习-LMLPHP

3.2解题

        分析:

        此题需要从两种情况进行分析:升序和降序。

        用一个变量(我用的p)来标记升序和降序以及不升不降,然后看整个数列的升降情况是否统一,也就是在遍历整个数组时p是否改变。这里要注意的是,当前后两个数据相同时,并没有破坏数列的有序性,所以需要特别判断。

        程序:

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[50] = { 0 };
	int i = 0;
	int p = 0;
	int f = -1;
	int k = 1;
	for (i = 0;i < n;i++)
	{
		scanf("%d", &arr[i]);
	}
	for (i = 1;i < n;i++)
	{
		if (arr[i] > arr[i - 1])
		{
			p = 0;		//降序标记
		}
		else if (arr[i] < arr[i - 1])
		{
			p = 1;		//升序标记
		}
		else
		{
			p = -1;		//未改变标记
		}
		if ((f != p) && (f != -1))
		{
			k = 0;
		}
		f = p;
	}
	if (k == 1)
	{
		printf("sorted");
	}
	else
	{
		printf("unsorted");
	}
	return 0;
}

结语

        不要小瞧每一次练习,每天保持练习,持之以恒,我们的C语言技术才会越发熟练。希望大家都能越来越好,不辜负自己的努力。

03-06 22:10