问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式:
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式:
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2
数据规模与约定
1 <= n <= 1000。
1.按照要求输入
2.写一个查找判断函数,其中设置一个标志flag为-1,若有则返回数组下标即位置信息,若无则返回原始flag
3.调用函数输出
#include
using namespace std;
void jg(int n,int a[],int x)
{
int flag=-1;
for(int i=1;i<=n;i++)
{
if(x==a[i])
{
flag=i; cout<>n;
int a[n];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>x;
jg(n,a,x);
return 0;
}
视频名称以及链接:2019年蓝桥杯训练营(C++)2.1字符串
https://www.bilibili.com/video/BV1jE411g76D?p=2
学习心得:
Cstring标准库
\1.strcpy(s1, s2); 复制字符串 s2 到字符串 s1。
\2. strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。连接字符串也可以用 + 号
\3. strlen(s1);
返回字符串 s1 的长度。
\4.strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1
\5. strchr(s1, ch);
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
\6. strstr(s1, s2);
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
观察字符串的形式的规律,有时候会和二维数组的行列有关(for嵌套循环的行列数)
另外资料:C++基础之string类型
string 对象的定义和初始化
string s | 默认构造的s为空串 |
---|---|
string s2(s1); | 将 s2 初始化为 s1 的一个副本 |
string s3(“value”); | 将 s3 初始化为一个字符串字面值副本 |
string s4(n, ‘c’); | 将 s4 初始化为字符 ‘c’ 的 n 个副本 |
使用 getline 读取整行文本
另外还有一个有用的 string IO 操作:getline。这个函数接受两个参数:一个输入流对象和一个 string 对象。getline 函数从输入流的下一行读取,并保存读取的内容到不包括换行符。和输入操作符不一样的是,getline 并不忽略行开头的换行符。只要 getline 遇到换行符,即便它是输入的第一个字符,getline 也将停止读入并返回。如果第一个字符就是换行符,则 string 参数将被置为空 string。
getline 函数将 istream 参数作为返回值,和输入操作符一样也把它用作判断条件。例如,重写前面那段程序,把每行输出一个单词改为每次输出一行文本:
int main() { string line; while (getline(cin, line)) cout << line << endl; return 0; }
fgets(string,length,stdin),此方法默认加一个“\0”换行符
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
1.观察到字母的排序与行列数的差的绝对值有关
2.cout的强制类型转换,将ASII转换成字符型
#include
#include
using namespace std;
int main()
{
int m,n;
cin>>n>>m;
char a[n][m];
for(int i=0;i