c语言实现:任意输入一个二维的4*4的矩阵,判读这个是不是对称的二维矩阵(即a[i][j]=a[j][i])
时间: 2024-01-05 12:03:01 浏览: 88
#include<stdio.h>
int main(){
int a[4][4],flag=1,i,j;
printf("请输入一个4*4的矩阵:\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<4;i++){
for(j=0;j<i;j++){
if(a[i][j]!=a[j][i]){
flag=0;
break;
}
}
if(flag==0) break;
}
if(flag==0) printf("这不是对称的二维矩阵");
else printf("这是对称的二维矩阵");
return 0;
}
相关问题
输入一棵二叉树,判读是否为二叉搜索树,c语言实现
好的,以下是C语言实现:
```c
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define MAX_N 10000 // 二叉树结点最大个数
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int idx = 0; // 当前二叉树结点的下标
int arr[MAX_N]; // 用于保存中序遍历的结果
// 二叉树的中序遍历
void inorder(struct TreeNode* root) {
if(root == NULL) return;
inorder(root->left); // 左子树
arr[idx++] = root->val; // 根结点
inorder(root->right); // 右子树
}
// 判断数组是否是升序排列
bool isAscending(int* arr, int size) {
for(int i = 1; i < size; i++) {
if(arr[i] <= arr[i-1]) {
return false;
}
}
return true;
}
// 判断二叉树是否为二叉搜索树
bool isValidBST(struct TreeNode* root) {
idx = 0; // 每次运行函数前重置全局变量
inorder(root); // 中序遍历二叉树
return isAscending(arr, idx); // 判断结果数组是否升序排列
}
int main() {
// 测试用例
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = 5;
root->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->left->val = 1;
root->left->left = NULL;
root->left->right = NULL;
root->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->val = 4;
root->right->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->left->val = 3;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->right->right->val = 6;
root->right->right->left = NULL;
root->right->right->right = NULL;
bool result = isValidBST(root);
printf("%s\n", result ? "true" : "false");
return 0;
}
```
上述代码通过中序遍历二叉树得到一个有序数组,然后判断该数组是否为升序排列,如果是,则该二叉树为二叉搜索树,否则不是。
用c语言判读一个数是否为素数
在C语言中,判断一个数是否为素数(质数),通常我们会采用试除法,即从2到这个数减一的范围内,检查是否有能整除它的数。如果没有任何一个数能够整除它,那么这个数就是素数。下面是一个简单的C函数来实现这一过程:
```c
#include <stdbool.h>
bool isPrime(int num) {
// 素数定义:大于1的自然数,除了1和它本身以外不再有其他因子
if (num <= 1) {
return false; // 小于等于1的数不是素数
}
for (int i = 2; i * i <= num; i++) { // 只需检查到√n即可
if (num % i == 0) { // 如果能找到整除因子,说明不是素数
return false;
}
}
return true; // 没有找到因子,所以它是素数
}
// 示例
int main() {
int number;
printf("请输入一个正整数:");
scanf("%d", &number);
if (isPrime(number)) {
printf("%d 是素数。\n", number);
} else {
printf("%d 不是素数。\n", number);
}
return 0;
}
```
阅读全文