C语言如何输入多行int数据,并计算每一行的和,按照行打印出来和
时间: 2024-03-13 15:46:02 浏览: 28
可以使用循环语句(如while、for等)读入多行int数据,并且计算每一行的和,最后按照行打印出来。可参考下面的C语言代码实现:
```c
#include <stdio.h>
int main()
{
int n, m, sum;
while (scanf("%d", &n) != EOF) { // 每次读入一行
sum = 0; // 初始化本行和为0
for (int i = 0; i < n; i++) { // 按照每行的数据个数循环读入
scanf("%d", &m);
sum += m; // 累加本行和
}
printf("%d\n", sum); // 输出本行和
}
return 0;
}
```
在上面的代码中,我们使用了while循环读入多行数据,每次读入一行。在每一行数据读入之后,我们使用for循环按照该行数据的个数,循环读入每个整数,并且累加到sum变量中。最后,使用printf函数输出本行的和,最后加上一个换行符。
需要注意的是,每次读入一行数据时,我们使用了scanf("%d", &n) != EOF来判断是否到达文件末尾。在每一行数据读入之后,我们需要将sum变量初始化为0,否则会出现错误的结果。同时,每次输出本行和时,也需要加上一个换行符。
相关问题
c语言输入一个多行字符数组当最后一行长度为零时,结束输入,并打印结果
可以使用fgets()函数逐行读取输入,当读取到最后一行长度为0时,停止读取并输出结果。具体实现如下:
```c
#include <stdio.h>
#define MAX_LINES 1000 // 最大行数
#define MAX_LENGTH 1000 // 每行最大长度
int main()
{
char input[MAX_LINES][MAX_LENGTH]; // 存储输入的字符数组
int line_count = 0; // 行数计数器
// 逐行读取输入
while (fgets(input[line_count], MAX_LENGTH, stdin) != NULL) {
// 如果读取到最后一行,长度为0则停止读取
if (input[line_count][0] == '\n' || input[line_count][0] == '\0') {
break;
}
line_count++; // 行数计数器自增
}
// 输出结果
for (int i = 0; i < line_count; i++) {
printf("%s", input[i]);
}
return 0;
}
```
注意,fgets()函数会读取换行符'\n'并将其存储到字符数组中,因此在输出结果时,不需要再手动添加换行符。
C语言输出多行右对齐的*,每行个数不同
可以使用循环嵌套来实现多行右对齐的*输出,每行个数不同。具体代码如下:
```c
#include <stdio.h>
int main(){
int rows[5] = {5, 3, 7, 2, 4}; // 每行的个数
int i, j;
for(i = 0; i < 5; i++){ // 循环输出每一行
for(j = 0; j < 10 - rows[i]; j++){
printf(" "); // 输出空格对齐
}
for(j = 0; j < rows[i]; j++){
printf("*"); // 输出*
}
printf("\n"); // 换行
}
return 0;
}
```
该程序首先定义了一个数组 `rows` 来存储每一行需要输出的 * 的个数,然后使用两个循环来输出每一行。第一个循环用于输出空格,空格的个数等于 `10 - rows[i]`,其中 10 是总共需要输出的列数,也可以根据需要进行调整。第二个循环用于输出 *,循环次数等于当前行需要输出的 * 的个数。最后在每行输出完成后换行即可。