#include<stdio.h>
void chline(char ch, int i, int j);
int main(void) {
int i,j;
char ch;
printf("请输入要打印的字符及行列数:");
scanf_s("%c,%d,%d", &ch, &i, &j);
chline(ch, i, j);
}
void chline(char ch, int i, int j) {
for ( i; i > 0; i--) {
for (j; j > 0; j--) {
printf("%c", ch);
}
}
}
题主的代码有点问题啊!
#include<stdio.h>
void chline(char ch, int i, int j);
int main(void) {
int i,j;
char ch;
// printf("请输入要打印的字符及行列数:");
scanf("%c,%d,%d", &ch, &i, &j);
chline(ch, i, j);
}
void chline(char ch, int i, int j) {
for (; i > 0; i--) {
for (int k = 0; k < j; k++) {
printf("%c", ch);
}
printf("\n");
}
}
输入最好不要带逗号
你需要尽量避免使用<vector>,他有可能会使你的代码运行超时:
#include<iostream>
#include<string>
#include<vector>
#include<sstream>
using namespace std;
int main(){
int T;
cin >>T;
vector<string> name;
vector<string> number;
int counter = 0;
while(T--){
string name_, number_;
cin >> name_ ;
int a = name_.find(",",0);
for(int i=a+1; i < (int)name_.size(); ++ i){
number_ += name_[i];
}
name_.erase(name_.begin()+a,name_.end());
name.push_back(name_);
number.push_back(number_);
++ counter;
}
/*for(int i=0; i < (int)name.size(); ++ i){
cout << name[i] << endl;
}
for(int i=0; i < (int)number.size(); ++ i){
cout << number[i] << endl;
}*/
int q=0;
cin >> q;
while(q--){
string name_;
cin >> name_;
int i = 0;
int flag = 1;
while( i < counter){ // size of the vector
//cout << "name[i]*****" << name[i] << "name_******" << name_ << (name[i] == name_) ;
if(name[i] == name_){
cout << name_ << ":" << number[i] <<endl;
flag = 0;
break;
}
++ i;
}
if(flag){
cout << name_ << ":" << "No\n" ;
}
}
}
下面放出可行的两份答案吧:
c++ standard answer:
#include <iostream>
#include <map>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int len;
cin >> len;
map<string, string> m;
for (int i = 0; i < len; i++){
string name_, number_;
string item;
cin>>item;
stringstream ss(item);
getline(ss,name_,',');
getline(ss,number_,',');
//m.insert(pair<string,string>(name,phone));
m[name_] = number_;//这两种插入方式都可以,insert一般用于多值插入情况
}
cin >> len;
for (int i = 0; i < len; i++){
string name;
cin >> name;
if (m.find(name)==m.end())
cout << name << ":No" << endl;
else
cout << name << ":" << m[name] << endl;
}
return 0;
}
or:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
int len;
cin >> len;
map<string, string> m;
for (int i = 0; i < len; i++){
cin.get();//前面cin后,最后的'\n'还在,需要手动去掉。
string name;
getline(cin, name, ',');//以','为分隔符,将姓名提取出来
string phone;
cin >> phone;
//m.insert(pair<string,string>(name,phone));
m[name] = phone;//这两种插入方式都可以,insert一般用于多值插入情况
}
cin >> len;
for (int i = 0; i < len; i++){
string name;
cin >> name;
if (m.find(name)==m.end())
cout << name << ":No" << endl;
else
cout << name << ":" << m[name] << endl;
}
return 0;
}
//-----------------------------------------------------------
/*转载自CSDN博客https://blog.csdn.net/Stark_JC/article/details/82080799?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-1-82080799.pc_agg_new_rank&utm_term=getline%E5%88%86%E9%9A%94%E7%AC%A6&spm=1000.2123.3001.4430*/
其他博客传送门:C++ 使用 stringstream与getline()分割字符串_Franden的博客-CSDN博客_getline分割字符串
很抱歉,根据提供的参考资料和问题描述,无法得出具体的解决方案。提供更多的信息如代码片段、错误提示等将有助于解决问题。
这么改,供参考:
#include<stdio.h>
void chline(char ch, int i, int j);
int main(void) {
int i,j;
char ch;
printf("请输入要打印的字符及行列数:");
scanf_s("%c %d %d", &ch, 1, &i, &j); //scanf_s("%c,%d,%d", &ch, &i, &j); 修改
chline(ch, i, j);
return 0;
}
void chline(char ch, int i, int j) {
int m; // 修改
for (i; i > 0; i--) {
for (m = j; m > 0; m--) { // for (j; j > 0; j--) 修改
printf("%c", ch);
}
printf("\n");//这里缺了换行符 修改
}
}
函数用的不对,看看C语言scanf_s()函数的用法
scanf_s("%c,%d,%d", &ch, 1, &i, &j);