c++先输入1个字符m,先输入一个整数n,输入n个字符(没有空格,n<=40),输出m在n个字符中出现的个数。
时间: 2024-05-01 12:21:54 浏览: 49
好的,以下是 C 语言的代码实现:
```
#include <stdio.h>
int main() {
char m, c;
int n, count = 0;
printf("请输入一个字符m:");
scanf("%c", &m);
printf("请输入一个整数n:");
scanf("%d", &n);
printf("请输入%d个字符,没有空格:\n", n);
for (int i = 0; i < n; i++) {
scanf(" %c", &c); // 注意空格,避免读入上一次输入时的回车符
if (c == m) {
count++;
}
}
printf("%c在输入的%d个字符中出现了%d次。\n", m, n, count);
return 0;
}
```
程序先让用户输入字符 `m` 和整数 `n`,然后再让用户输入 `n` 个字符,最后统计字符 `m` 在这 `n` 个字符中的出现次数并输出。注意,为了避免读入上一次输入时的回车符,程序在读入字符时加了一个空格。
相关问题
用C++写出输入一个正整数n和一个字符c,利用函数输出n行由字符c组成的V字图案。 输入描述 一个正整数n和一个字符c 输出描述 n行由字符c组成的V字图案。每行最后一个字符c后面不要输出空格,直接换行
在C++中,你可以使用嵌套循环和控制台输出来实现这个功能。这里是一个简单的示例程序:
```cpp
#include <iostream>
// 定义函数打印V字形
void printVShape(int n, char c) {
for (int i = 0; i <= n; ++i) {
// 输出左侧的部分
for (int j = 0; j < n - i; ++j)
std::cout << " ";
// 输出中间的竖线
for (int k = 0; k <= 2 * i; ++k)
std::cout << c;
// 换行
if (i < n)
std::cout << std::endl;
}
}
int main() {
int n;
char c;
// 输入n和c
std::cout << "请输入正整数n: ";
std::cin >> n;
std::cout << "请输入字符c: ";
std::cin >> c;
// 调用函数并输出结果
printVShape(n, c);
return 0;
}
```
当你运行这个程序时,它会提示用户输入正整数`n`和字符`c`,然后按照指定的要求生成相应的V字形图案。
用C++输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 <= s <= 10, 0 <= n <= 99999999),这里n是要显示的数,s是要显示的数的尺寸。如果某行输入包括两个0,表示输入结束。这行不需要处理,输出显示的方式是:用s个'-'表示一个水平线段,用s个'|'表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充
以下是C++代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
// 定义数字0-9的显示方式
const char digits[10][10][5] = {
{
" - ",
"| |",
" ",
"| |",
" - "
},
{
" ",
" |",
" ",
" |",
" "
},
{
" - ",
" |",
" - ",
"| ",
" - "
},
{
" - ",
" |",
" - ",
" |",
" - "
},
{
" ",
"| |",
" - ",
" |",
" "
},
{
" - ",
"| ",
" - ",
" |",
" - "
},
{
" - ",
"| ",
" - ",
"| |",
" - "
},
{
" - ",
" |",
" ",
" |",
" "
},
{
" - ",
"| |",
" - ",
"| |",
" - "
},
{
" - ",
"| |",
" - ",
" |",
" - "
}
};
int main() {
int s, n;
while (cin >> s >> n && s != 0 && n != 0) {
// 转换数字为字符形式
char num[10];
sprintf(num, "%d", n);
int len = strlen(num);
// 输出每个数字的每一行
for (int i = 0; i < 5; i++) {
for (int j = 0; j < len; j++) {
int d = num[j] - '0';
cout << ' ';
for (int k = 0; k < s; k++) {
if (i == 0) {
cout << digits[d][i][1];
for (int l = 0; l < s; l++) {
cout << digits[d][i][2];
}
cout << digits[d][i][3];
} else if (i == 2) {
cout << digits[d][i][0];
for (int l = 0; l < s; l++) {
cout << ' ';
}
cout << digits[d][i][4];
} else {
cout << digits[d][i][0];
for (int l = 0; l < s; l++) {
cout << ' ';
}
cout << digits[d][i][2];
}
cout << ' ';
}
cout << ' ';
if (j < len - 1) {
cout << ' ';
}
}
cout << endl;
}
// 输出空白行
for (int i = 0; i < s; i++) {
for (int j = 0; j < len * (s + 3) - 1; j++) {
cout << ' ';
}
cout << endl;
}
}
return 0;
}
```
这个程序首先读入每个数字的尺寸s和要显示的数n,然后将n转换成字符形式,并计算出n的长度。接下来,对于每一行数字的显示,我们遍历数字的每一行,并输出每个数字的每一行。输出时,我们需要用空格填充数字和数字之间的空白列,以及数字和边框之间的空白列。最后,输出每个数字后的空白行。注意,本题中每个数字占用的列数为s+2,而不是上面的5。
阅读全文