c语言例题

发布时间:2023年12月26日

1.实数取整

已知一个字符串表示一个实数(不超过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,表示程序正常结束  
} // 主函数结束

2.偶数矩阵

若一个布尔矩阵所有行和所有列的和都是偶数,则称为偶数矩阵。请编写一个程序,判断一个布尔矩阵是否是偶数矩阵。

? ? ? ?要求:(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
}

文章来源:https://blog.csdn.net/nanshenchao/article/details/135225008
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。