c语言设有一个M×N的二维整型数组s,编写程序,通过键盘输入各个数组元素的值,然后计算出每行元素的平均值并输出。
时间: 2024-03-25 18:41:03 浏览: 84
好的,这个问题很简单。下面是实现该功能的C语言代码:
```c
#include <stdio.h>
#define M 3
#define N 4
int main() {
int s[M][N], i, j;
float avg;
// 输入数组元素的值
printf("请输入数组元素的值:\n");
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &s[i][j]);
}
}
// 计算每行元素的平均值并输出
for (i = 0; i < M; i++) {
avg = 0;
for (j = 0; j < N; j++) {
avg += s[i][j];
}
avg /= N;
printf("第%d行的平均值为:%.2f\n", i + 1, avg);
}
return 0;
}
```
以上代码定义了一个3行4列的二维整型数组`s`,并通过`scanf()`函数从键盘输入每个数组元素的值。然后,通过两个嵌套的循环遍历每一行,计算并输出每行元素的平均值。
需要注意的是,计算平均值时需要将`avg`初始化为0,并且输出格式可以使用`printf()`函数的格式控制符`%.2f`保留两位小数。
相关问题
用C语言写有向图的邻接矩阵存储与遍历,要求从键盘输入多对节点,类似于(A,B)的形式。
在C语言中,我们可以使用二维数组来创建邻接矩阵来表示有向图。首先,我们需要定义一个合适的数据结构,比如`graph`结构体,包含两个整型数组`vertices`和`edges`:
```c
typedef struct {
int vertices; // 顶点数
int edges[vertices][vertices]; // 邻接矩阵,注意矩阵大小为vertices x vertices
} Graph;
```
然后我们编写函数从键盘接收节点对并更新邻接矩阵:
```c
void add_edge(Graph* graph, int src, int dest) {
if (src >= 0 && src < graph->vertices && dest >= 0 && dest < graph->vertices) {
graph->edges[src][dest] = 1; // 如果dest是src的一个邻居,则值设为1(无方向)
} else {
printf("Invalid node indices.\n");
}
}
```
接着,我们创建一个循环来获取用户输入并添加边:
```c
int main() {
int num_nodes, src, dest;
printf("Enter number of nodes: ");
scanf("%d", &num_nodes);
Graph g = {num_nodes, {}}; // 初始化空的邻接矩阵
while (num_nodes--) {
printf("Enter edge in the format (source, destination): ");
scanf("%d %d", &src, &dest);
add_edge(&g, src - 1, dest - 1); // 减1是因为数组索引从0开始
}
// 遍历并打印邻接矩阵
for (int i = 0; i < g.vertices; ++i) {
for (int j = 0; j < g.vertices; ++j) {
if (g.edges[i][j]) {
printf("(%d, %d) -> ", i + 1, j + 1); // 打印节点和连接关系
}
}
printf("\n");
}
return 0;
}
```
阅读全文
相关推荐












