2.1.1 题目一
Hello world输入字符串,首字母大写其他字母小写,输出true,其他输出false
这道题需要注意:cin>>用法,逻辑其实很简单。
int a b;
cin>>a;//输入数字,回车结束
cin>>b;
cout<<a+b<<endl;
char s[20];
cin>>s;//输入回车、空格、TAB都结束
cout<<s<<endl;
char s[1000];
cin.get(s,1000);//仅回车结束,能接受空格、TAB,s在1000个长度范围内
cout<<s<<endl;
特别注意:字符串结束标志’\0’,这个很有用途,当便利字符串时结束判断位。
输入:jfjlajf123实际s为:jfjlajf123\0
#include<string>
stringstr;
getline(cin,str); //默认回车结束,能接受空格、TAB
int len=str.length();
特别注意:string 和 char数组的遍历方式。
2.1.2 题目二
输入字符串ljij___--输出lji_-输出相同字符的首个字符,其他不输出。
此题思路是:对每个字符设置标志位,倒序遍历输入字符串,拿该字符与前面比较,若有相同则该位表示赋为false,结束该字符比较,反之赋为true,进入下一字符比较。
char *pchar= new char[128];//字符型指针
memset(pchar,’\0’,128);//初始化
cout<<pchar<<endl;//输出该字符数组
delete[]pchar;
2.1.3 题目三
输入一个数字(>=10,即至少是个两位数),如果是个n位数,则去掉其第一位w,输出后n-1位。如:输入25,输出5
getline(cin,str);
cin>>str;
//str.erase(0,1);
2.1.4 题目四
币值有1,5,10,50,100五种,输入一个金额数字,输出使用这五种货币拼出此金额所用的最小张数。
a[]={100,50,10,5,1};
%取余/取整。
int money;
string str;
cin>>str;
money=atoi(str.c_str());
strcpy()函数的用法:
原型声明:externchar *strcpy(char* dest, const char *src);
头文件:#include<string.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
2.1.5 题目5
判断if语句括号是否合法。
首先遍历统计左括号、右括号个数,如果两者不相等或者有一个为0,则输出WRONG,并返回;如果两者相等,遍历字符串遇到左括号,入栈k++,遇到右括号,出栈k—(出栈时需要判断k是否为0。
2.1.6 题目6
10个学生考完期末考试评卷,划及格线满足a.及格线是10的倍数b.保证至少有60%的学生及格c.如果所有的学生都高于60分,则及格线为60。
for(int i=0;i<10;i++)
{
cin>>score[i];
}
输入需要注意的,亲!
首先判断是否都高于60,是就输出60,并return 0。
然后从100,90,80,70,60开始试,看看最小哪个能满足至少60%的学生及格。
2.1.7 题目7
灯n个满足1<=n<=65535。学生n个,第一个学生把号码凡是1的倍数的的电灯开关拉一下,第二个学生把号码凡是2的倍数的的电灯开关拉一下。。。。。第n个学生把号码凡是n的倍数的的电灯开关拉一下。如此下去,还有几盏灯亮着。(等开始是灭的)
bool *flag = new bool[lamp+1];
memset(flag,false,sizeof(bool)*(lamp+1));
delete[] flag;
申请动态数组。。。。不要忘记delete[]数组空间。。。。。
flag[i*j]= !flag[i*j];
对bool 型变量取反
2.1.8 题目8
地铁换乘。比较难,高级题目。
图的两种表示方法:邻接矩阵存储方式
struct Graph{
charvertex[MaxVer][4];//存储顶点
intedges[MaxVer][MaxVer];//两点距离
intvisited[MaxVer];
};
巧妙的利用二维矩阵对edges[MaxVer][MaxVer]赋值,然后利用Floyed(http://www.cnblogs.com/twjcnblog/archive/2011/09/07/2170306.html)算法求两点间距离。
邻接表存储方式:
/邻接表相关
//边表结构
typedef struct edgeNode
{
inteVerIndex; //边表的顶点号
structedgeNode *nextEdge; //指向下一边表的指针
}edgeNode; //struct edgeNode的别名为edgeNode,方便调用
//顶点表结构
typedef struct vertexNode
{
intverIndex; //顶点表的顶点号
edgeNode *firstEdge; //指向第一边表的指针
}vertexNode;
//顶点表构成的图的邻接表
typedef struct
{
vertexNode adjList[VerNum]; //顶点表结构数组,总数为顶点的数目
}graphList;//将此结构体别名定义为GraphList
利用BFS宽度搜索算法求解。
2.2.9 题目9
输入一串数,以‘,’分割,输出所有数中去掉最大值、最小值以后剩下的个数。
主要是string输入的变换。
String转int: num[j++] = atoi(tempstr.c_str());