用C++输入五行数据,每行由一个不含空格的字符串和整数组成,表示学生的名字和成绩,输出成绩居中的名字和成绩
时间: 2023-03-25 20:03:12 浏览: 174
好的,这是一个关于 C 语言的问题。请看下面的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char name[5][20];
int score[5];
int i, max_len = ;
for (i = ; i < 5; i++) {
scanf("%s %d", name[i], &score[i]);
if (strlen(name[i]) > max_len) {
max_len = strlen(name[i]);
}
}
printf("姓名\t成绩\n");
for (i = ; i < 5; i++) {
printf("%s", name[i]);
for (int j = ; j < max_len - strlen(name[i]); j++) {
printf(" ");
}
printf("\t%d\n", score[i]);
}
return ;
}
```
这个程序可以让你输入五行数据,每行由一个不含空格的字符串和整数组成,表示学生的名字和成绩。然后,它会输出成绩居中的名字和成绩。希望这个程序能够帮到你。
相关问题
在一行上输入若干整数,每个整数以一个空格分开,求这些整数的平均值。 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个字符串(仅包含数字字符和空格)。 输出格式: 对于每组测试,输出以空格分隔的所有整数的平均值,结果保留一位小数。
好的,这是一个简单的输入输出题目。我们可以使用 C++ 语言来解决这个问题。
以下是代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int t;
cin >> t; // 输入测试数据的组数
getchar(); // 处理换行符
while (t--)
{
int sum = 0, cnt = 0;
string str;
getline(cin, str); // 读取一行字符串
str += ' '; // 在字符串末尾添加一个空格,方便处理
for (int i = 0; i < str.size(); i++)
{
if (str[i] == ' ')
{
cnt++; // 统计整数的个数
}
}
int start = 0;
for (int i = 0; i < str.size(); i++)
{
if (str[i] == ' ')
{
int num = stoi(str.substr(start, i - start)); // 将字符串转化为整数
sum += num; // 统计整数的和
start = i + 1;
}
}
double avg = (double)sum / cnt; // 计算平均值
printf("%.1f\n", avg); // 输出平均值,保留一位小数
}
return 0;
}
```
代码思路如下:
首先输入测试数据的组数,然后进入循环。
在每一组测试数据中,我们先初始化两个变量 `sum` 和 `cnt`,分别用来记录整数的和和个数。
然后使用 `getline()` 函数读取一行字符串,并在字符串末尾添加一个空格,方便处理。
接下来,我们遍历字符串,统计其中整数的个数,同时使用 `substr()` 函数将字符串转化为整数,并累加到 `sum` 中。
最后,我们计算平均值,并输出结果,保留一位小数。
注意,由于输入的字符串中可能包含多个空格,我们需要使用 `getchar()` 函数处理换行符,避免对后续输入造成干扰。
希望这个解答能够帮助到你!
写一个输入若干行每行若干个英文单词然后去除重复后逐个输出的c++代码
以下是C++代码示例:
```c++
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main() {
int n;
cin >> n;
unordered_set<string> unique_words;
string line;
getline(cin, line); // consume the newline character after reading n
for (int i = 0; i < n; i++) {
getline(cin, line);
string word;
for (int j = 0; j < line.length(); j++) {
if (line[j] == ' ') {
unique_words.insert(word);
word = "";
} else {
word += line[j];
}
}
unique_words.insert(word);
}
for (const auto& word : unique_words) {
cout << word << endl;
}
return 0;
}
```
代码执行时,会等待用户从键盘输入一个整数 `n`,表示接下来有 `n` 行包含若干个英文单词的文本。程序会将每行文本按照空格分隔成若干个单词,并去除重复后,逐个输出每个单词。输出结果的顺序是随机的,因为 `unordered_set` 是无序集合。
解释:我们首先使用 `cin` 读取一个整数 `n`,表示接下来有 `n` 行文本需要处理。然后,我们创建了一个名为 `unique_words` 的无序集合,用于存储文本中的唯一单词。接下来,我们使用 `for` 循环逐行读取文本。使用 `getline()` 函数从标准输入流(键盘)读取一行字符串,并将其存储到 `line` 中。然后,我们使用嵌套的 `for` 循环逐个读取 `line` 中的字符,如果是空格,则将当前单词插入到集合中,并将 `word` 重置为空字符串;否则,我们将当前字符添加到 `word` 中。最后,我们还需要插入最后一个单词,因为最后一个单词后面没有空格。最后,我们使用 `for` 循环逐个输出集合中的每个单词。