已知一个字符串表示一个实数(不超过100位),请输出其整数部分。输出不含前导0,但如果整数部分0,则输出0。
提示:可使用strchr()函数查找给定字符。
#include <stdio.h> // 引入标准输入输出库,用于使用printf和scanf等函数
#include <string.h> // 引入字符串处理库,用于使用strchr函数
#define N 110 // 定义一个预处理器宏,将N的值设为110,用于定义字符数组str的大小
int main() { // 主函数开始
char str[N], * p = str, * q; // 定义一个字符数组str,大小为N,用于存储用户输入的字符串;指针p和q用于处理字符串
scanf("%s", str); // 使用scanf函数从标准输入读取一个字符串,并存储在str数组中
// 循环跳过str中的前导0
while (*p == '0')
p++; // 当指针p指向的字符是'0'时,将指针p向后移动一位
// 如果整数部分全部为0,则保留一个0
if (*p == '\0' || *p == '.')
p--; // 如果指针p指向的字符是'\0'(字符串结束符)或'.'(小数点),则将指针p向前移动一位
// 如果指针p指向的字符串中包含小数点或小数部分,则删除它们
q = strchr(p, '.'); // 使用strchr函数查找指针p指向的字符串中第一个'.'的位置,并将位置的指针赋值给q
if (q != NULL) // 如果找到了小数点
*q = '\0'; // 将小数点替换为字符串结束符'\0',以断开整数部分和小数部分
puts(p); // 使用puts函数输出指针p指向的字符串(即整数部分)
return 0; // 主函数返回0,表示程序正常结束
} // 主函数结束
若一个布尔矩阵所有行和所有列的和都是偶数,则称为偶数矩阵。请编写一个程序,判断一个布尔矩阵是否是偶数矩阵。
? ? ? ?要求:(1)输入:首先输入一个正整数n(n<100),代表该矩阵的大小,接下来是n行n列的矩阵。输出:如果这个矩阵是偶数矩阵,则输出“yes”,否则输出“no”。
? ? ?(2)需定义矩阵输入函数InputArray()。
? ? ?(3)需定义偶数矩阵函数IsParity()。
// 引入标准输入输出库,用于使用printf和scanf等函数。
#include <stdio.h>
// 定义一个预处理器宏,将N的值设为100,用于定义字符数组str的大小。
#define N 100
// 声明一个函数InputArray,用于输入一个NxN的整数矩阵。
void InputArray(int a[N][N], int n);
// 声明一个函数IsParity,用于判断一个NxN的整数矩阵是否是偶数矩阵。
int IsParity(int a[N][N], int n);
// 主函数开始。
int main(void) {
// 定义一个NxN的整数矩阵a。
int a[N][N];
// 定义两个整数变量i和j,用于循环。
int i, j, n;
// 提示用户输入方阵的阶。
printf("输入方阵的阶:");
// 从标准输入读取一个整数,并存储在变量n中。
scanf("%d", &n);
// 提示用户输入方阵。
printf("输入方阵:\n");
// 调用函数InputArray来输入一个NxN的整数矩阵a。
InputArray(a, n);
// 调用函数IsParity来判断矩阵a是否是偶数矩阵。
if (IsParity(a, n))
// 如果矩阵a是偶数矩阵,输出"yes"。
printf("yes\n");
else
// 如果矩阵a不是偶数矩阵,输出"no"。
printf("no\n");
// 主函数返回0,表示程序正常结束。
return 0;
}
// 定义函数InputArray,用于输入一个NxN的整数矩阵。
void InputArray(int a[N][N], int n) {
// 对矩阵的每一行进行循环。
for (int i = 0; i < n; i++) {
// 对矩阵的每一列进行循环。
for (int j = 0; j < n; j++) {
// 从标准输入读取一个整数,并存储在矩阵a的当前位置。
scanf("%d", &a[i][j]);
}
}
}
// 定义函数IsParity,用于判断一个NxN的整数矩阵是否是偶数矩阵。
int IsParity(int a[N][N], int n)
{
// 定义两个整数变量i和j,用于循环。
int i, j;
// 定义一个整数变量sum,用于存储行或列的和。
int sum;
// 对矩阵的每一行进行循环。
for (i = 0; i < n; i++) // 判断各行的和是否偶数。
{
sum = 0; // 将sum重置为0。
// 对矩阵的每一列进行循环,计算当前行的和。
for (j = 0; j < n; j++)
sum += a[i][j]; // 将当前元素加到sum上。
// 如果当前行的和不是偶数,返回0。这意味着该矩阵不是偶数矩阵。
if (sum % 2 != 0) // 若有一行的和不为偶数,即可的到否定结论。
return 0; // 返回0。
} // end of row loop.
// 如果所有行的和都是偶数,进入下一部分判断。
for (j = 0; j < n; j++) // 对矩阵的每一列进行循环。
{ // 判断各列的和是否偶数。
sum = 0; // 将sum重置为0。
// 对矩阵的每一行进行循环,计算当前列的和。
for (i = 0; i < n; i++)
sum += a[i][j]; // 将当前元素加到sum上。
// 如果当前列的和不是偶数,返回0。这意味着该矩阵不是偶数矩阵。
if (sum % 2 != 0) // 若有一列的和不为偶数,即可的到否定结论。
return 0; // 返回0。
} // end
}