c语言平均值问题问题

对照片进行模糊处理的方式是,将每个像素的灰度值,用它和与它相邻的像素的灰度值的平均值来替代。输入第一行两个数 m,n(m,n≤100)代表像素有 m行 n列。
后输入m 行,每行 n 个整数,代表像素的灰度值。
输出 m 行,每行 n个整数用空格分隔,代表打码后这个像素的灰度值(结果四舍五入),每行最后一个数字后面也带有一个空格。要求每个数字占 3 位,右对齐。

#include <stdio.h>

int main() {
    int m, n;
    scanf("%d %d", &m, &n);

    int pixels[m][n];
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &pixels[i][j]);
        }
    }

    int blurred[m][n];
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            int sum = pixels[i][j];
            int count = 1;

            if (i > 0) {
                sum += pixels[i - 1][j];
                count++;
            }
            if (i < m - 1) {
                sum += pixels[i + 1][j];
                count++;
            }
            if (j > 0) {
                sum += pixels[i][j - 1];
                count++;
            }
            if (j < n - 1) {
                sum += pixels[i][j + 1];
                count++;
            }

            blurred[i][j] = (sum + count / 2) / count;
        }
    }

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            printf("%3d ", blurred[i][j]);
        }
        printf("\n");
    }

    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1064304
  • 你也可以参考下这篇文章:2020-2-13 深度学习笔记7 - 深度学习中的正则化3(半监督,多任务,提前终止-解决过拟合,参数绑定与参数共享)
  • 除此之外, 这篇博客: C语言编程题中的 17.输入N个元素的整数数组,然后将其前面各元素按照顺序向后移 m个位置,最后m个数变成最前面的m个数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include<stdio.h>
    #define N 5
    int main() {
    	int a[N], b[N], m;
    	printf("请输入m的值:\n");
    	scanf_s("%d",&m);
    	//1 2 3 4 5 
    	for (int i = 0; i < N; i++) {
    		printf("请输入第%d个元素:\n",i+1);
    		scanf_s("%d", &a[i]);
    	}//m=2 
    	for (int i = 0; i < m; i++) {//4 5
    		b[i] = a[N - m + i];//将要移动的最后元素保存在数组b中
    	}
    	for (int i = N - 1; i >= m; i--) {//1 2 3 4 5 -> 1 2 1 2 3
    		a[i] = a[i - m];//拿到其他元素从后往前一次赋值
    	}
    	for (int i = 0; i < m; i++) {//1 2 1 2 3 -> 4 5 1 2 3 
    		a[i] = b[i];//将保存在数组b中的元素依次赋值到a数组中的前面位置
    	}
    	printf("移动后的数组:\n");
    	for (int i = 0; i < N; i++) {
    		printf("%-3d", a[i]);
    	}
    	return 0;
    }
    

    18.运输公司对用户计算运输费用,距离(s)越长,每公里运费越低。
    每公里每吨货物的基本运费3元,距离不同标准不同,标准如下:

    S<250公里 标准运价的100% 没有折扣

    250<=s<500 公里 标准运价的98% 2%折扣

    500<=s<1000 公里 标准运价的95% 5%折扣

    1000<=s<2000 公里 标准运价的92% 8%折扣

    2000<=s<3000 公里 标准运价的90% 10%折扣

    3000<=s 公里 标准运价的85% 15%折扣

    编写程序根据距离和货物重量计算运费

    #include <stdio.h>
    int main(){
    	float w, sum, z;
    	int x, s;
    	printf("请输入重量:");
    	scanf_s("%f", &w);
    	printf("请输入距离:");
    	scanf_s("%d", &s);
    	if (s >= 3000)
    		x = 12;
    	else
    		x = s / 250;
    	switch (x) {
    		case 0:	  z = 0; break; //代表250km以下,折扣z = 0
    		case 1:   z = 2; break; //代表250~500km以下,折扣z=2%
    		case 2:          break;
    		case 3:   z = 5; break; //代表500~1000km,折扣z=5%
    		case 4:		     break;
    		case 5:          break;
    		case 6:          break;
    		case 7:   z = 8; break; //代表1000~2000km,折扣z=8%
    		case 8:          break;
    		case 9:          break;
    		case 10:         break;
    		case 11:  z = 10; break; //代表2000~3000km,折扣z=10%
    		case 12:  z = 15; break; //代表3000km以上,折扣z=15%
    		default:printf("输入数据错误!\n"); break;
    	}
    	sum = 3 * w * s * (1 - z / 100);
    	printf("总运费是:%f\n", sum);
    	return 0;
    }
    
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^