【目标500题的第4道】C++ 天梯赛“福到了” 字符串二维数组+打印+getlline()+getchar()

“福到了” 字符串二维数组+打印+getlline()+getchar()

在这里插入图片描述
在这里插入图片描述
注:剩下还有3行没截到
在这里插入图片描述

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string a[100];
int main()
{
	int i, j, k, n;
	char ch;
	int flag = 1;
	cin >> ch;
	cin >> n;
	getchar();//输入字符串之前要写getchar()
	for (i = 0; i < n; i++)
	{
			getline(cin, a[i]);
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			if (a[i][j] != a[n - i - 1][n - j - 1])//回文串的验证方式
				flag = 0;
		}
	}
	if (flag)cout << "bu yong dao le" << endl;
	for (i = n - 1; i >= 0; i--)
	{
		for (j = n - 1; j >= 0; j--)
		{
			if (a[i][j] == '@')
				a[i][j] = ch;
			else
				a[i][j] = a[i][j];
			cout << a[i][j];
		}
		cout << endl;
	}
}
### 回答1: 以下是一个可以满足目要求的 C 语言程序: ``` #include <stdio.h> #include <string.h> void f(char (*arr)[100], char c) { int i, j; for (i = 0, j = 0; i < strlen(arr[0]); i++) { if (arr[0][i] != c) { arr[1][j++] = arr[0][i]; } } arr[1][j] = '\0'; } int main() { char arr[2][100]; char c; printf("请输入字符串:"); scanf("%s", arr[0]); printf("请输入要删除的字符:"); getchar(); c = getchar(); f(arr, c); printf("删除后的字符串为:%s\n", arr[1]); return 0; } ``` 这个程序包含了两个函数: - `main` 函数:定义了一个二维字符数组,输入一个字符串到第 0 行,并调用函数 `f` 将二维数组的首地址和要删除的字符作为参数传入,最后输出第 1 行。 - `f` 函数:删除二维数组的第 0 行中的指定字符,并将结果存入二维数组的第 1 行。 在函数 `f` 中,我们用两个变量 `i` 和 `j` 分别指向二维数组的第 0 行和第 1 行,遍历二维数组的第 0 行的每一个字符,如果这个字符不是要删除的字符,就将它复制到第 1 行的对应位置。最后在第 1 行的末尾加 ### 回答2: 下面是一个满足要求的C++程序: ```cpp #include<iostream> #include<string> using namespace std; void f(char arr[][100], char c){ for(int i=0; arr[0][i]!='\0'; i++){ // 遍历第0行 if(arr[0][i]!=c){ // 如果元素不等于指定字符 arr[1][i] = arr[0][i]; // 将元素存入第1行 } } arr[1][i] = '\0'; // 第1行最后一个位置置为'\0',表示字符串结束 } int main(){ char arr[2][100]; // 定义二维字符数组 cout << "请输入一个字符串:"; cin.getline(arr[0], 100); // 输入字符串到第0行 cout << "请输入一个字符:"; char c; cin >> c; // 输入指定字符 f(arr, c); // 调用f函数 cout << "第1行的字符串为:" << arr[1] << endl; // 输出第1行 return 0; } ``` 以上程序通过两个函数`main`和`f`实现了要求。在`main`函数中,先定义了一个二维字符数组`arr`,然后通过`cin.getline`函数输入字符串到第0行,再通过`cin`输入指定字符。接着调用`f`函数,并将二维数组`arr`的首地址和指定字符作为实参传递给`f`函数。 `f`函数遍历第0行,如果元素不等于指定字符,则将该元素存入第1行。最后在第1行的最后一个位置加上`\0`,表示字符串结束。 最后在`main`函数中,输出第1行的字符串。 ### 回答3: 程序如下: ```c++ #include<iostream> using namespace std; // 函数f:删除二维数组的第0行中的指定字符,并将结果存入二维数组的第1行 void f(char arr[][100], char target){ int i, j; // 将第0行的每个字符与指定字符进行比对 for(i=0; arr[0][i]!='\0'; i++){ if(arr[0][i] != target){ // 如果不相等,则将该字符存入第1行对应位置 arr[1][j] = arr[0][i]; j++; } } // 加上字符串结束符 arr[1][j] = '\0'; } int main(){ char arr[2][100]; char target; // 输入字符串到第0行 cout << "请输入字符串:"; cin.getline(arr[0], 100); // 输入指定字符 cout << "请输入指定字符:"; cin >> target; // 调用函数f f(arr, target); // 输出第1行 cout << "第1行的结果为:" << arr[1] << endl; return 0; } ``` 程序的执行过程如下: 1. 在`main`函数中定义一个二维字符数组`arr`,大小为2行100列。 2. 输入字符串到第0行,将输入的字符串存入`arr[0]`中。 3. 输入指定字符,将输入的字符存入`target`中。 4. 调用函数`f`,将二维数组的首地址和指定字符作为实参传递给`f`函数。 5. 在函数`f`中,使用循环遍历第0行的每个字符。 6. 如果字符不等于指定字符,则将该字符存入第1行对应位置,并用`j`变量记录存储位置。 7. 最后在第1行的`j`位置加上字符串结束符。 8. 返回`main`函数,输出第1行的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天都要学算法(努力版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值