用C++输入五行数据,每行由一个不含空格的字符串和整数组成,表示学生的名字和成绩,输出成绩居中的名字和成绩
时间: 2023-03-25 20:03:12 浏览: 307
好的,这是一个关于 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 ;
}
```
这个程序可以让你输入五行数据,每行由一个不含空格的字符串和整数组成,表示学生的名字和成绩。然后,它会输出成绩居中的名字和成绩。希望这个程序能够帮到你。
相关问题
给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。 你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。 输入格式 输入的第一行包含一个字符串 S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为 0时表示大小写不敏感,当数字为 1时表示大小写敏感。 第三行包含一个整数 n,表示给出的文字的行数。 接下来 n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。 输出格式 输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串 S的行。用c++实现
好的,以下是一个C++的程序实现,可以解决你的问题:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string s;
cin >> s;
int case_sensitive;
cin >> case_sensitive;
int n;
cin >> n;
vector<string> lines;
for (int i = 0; i < n; i++) {
string line;
cin >> line;
if (!case_sensitive) {
transform(s.begin(), s.end(), s.begin(), [](unsigned char c){ return tolower(c); });
transform(line.begin(), line.end(), line.begin(), [](unsigned char c){ return tolower(c); });
}
if (line.find(s) != string::npos) {
lines.push_back(line);
}
}
for (const auto& line : lines) {
cout << line << endl;
}
return 0;
}
```
这个程序首先读入字符串 `s`,大小写敏感的选项 `case_sensitive`,以及文字的行数 `n`。然后,它遍历每一行文字,如果字符串 `s` 在这一行中出现,就把这一行加入到结果列表中。最后,程序按照结果列表中的顺序输出包含字符串 `s` 的行。如果大小写敏感的选项被打开,程序会区分大小写;否则,程序会把所有字母都转化为小写字母,从而忽略大小写。
希望这个程序能够解决你的问题。
编写一个c++程序实现以下功能,由键盘输入一个由数字和非数字组成的字符串(不含空格),每个整数之间用间隔隔开。将其中连续的数字作为一个整数,依次存放到一个数组中,统计有多少个整数,输出整数的个数和这些整数,通过指针的方式实现。
为了实现这个功能,你可以按照以下步骤编写一个 C++ 程序:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
// 定义一个函数用于解析字符串并找到连续的数字
std::vector<int> parseString(const std::string& str) {
std::vector<int> numbers;
int number = 0;
bool is_number = false;
for (char c : str) {
if (isdigit(c)) { // 如果字符是数字
number *= 10; // 将当前数字与下一个数字相乘
number += c - '0'; // 添加当前字符的值
is_number = true;
} else if (is_number) { // 如果遇到非数字字符且之前是数字
numbers.push_back(number);
number = 0;
is_number = false;
}
}
if (is_number) { // 如果字符串结尾是数字
numbers.push_back(number);
}
return numbers;
}
int main() {
std::string input;
std::cout << "请输入一个由数字和非数字组成的字符串(不含空格):";
std::getline(std::cin, input);
std::vector<int> parsed_numbers = parseString(input);
int count = parsed_numbers.size();
std::cout << "整数个数:" << count << std::endl;
std::vector<int*> int_ptrs(count); // 创建指向整数的指针数组
for (size_t i = 0; i < count; ++i) {
int_ptrs[i] = &parsed_numbers[i]; // 初始化指针
}
// 输出整数及其对应的指针
for (size_t i = 0; i < count; ++i) {
std::cout << "第" << i+1 << "个整数: " << *int_ptrs[i] << std::endl;
}
return 0;
}
```
阅读全文