day2

来源:互联网 发布:3d平面设计软件 编辑:程序博客网 时间:2024/05/13 04:41
//**********************************************字符串分割**********************************************//连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;////长度不是8整数倍的字符串请在后面补数字0,空字符串不处理////输入描述  连续输入字符串(输入2次,每个字符串长度小于100)//输出描述  输出到长度为8的新字符串数组//********************************************************************************************************
//分三部分:1,字符串很长超过8,先把超过部分cout出来
//2.字符串刚好长度是8了  直接输出就成了  
//3.当遇到字符串不够了,求出来缺少的部分,利用for循环补0即可
#include <iostream>  #include <string>  using namespace std;int main() {int i = 2;int j = 0;int sub = 0;int n = 0;string str;while (i--) {getline(cin, str);int len = str.length();for (n = 0; n<len; n = n + 8) {if (n + 8<len) {string str2(&str[n], &str[n + 8]);cout << str2 << endl;}else if (n + 8 == len) {string str2(&str[n], &str[len]);cout << str2 << endl;}else {sub = n + 8 - len;string str2(&str[n], &str[len]);cout << str2;for (j = 0; j<sub; j++) {cout << '0';}cout << endl;//bug不过的点  牛客上少了这一行很容易说内存泄漏什么玩意儿的  虽然也不知道为啥子}}}return 0;}


进制转换

注意

1.ascii码表中  数字比十进制多48,字母比十进制多55,要减去

2.进制转换公式:

    sum+=(某位上的数字)*进制^位置(次方)累加!

3.程序要求连续输入  用while(cin>>x)就成了

4.pow()函数:

   原型 double pow(double x,double y),代表x的y次方

#include<stdio.h>#include<string.h>#include<math.h>int main1(){char str[100];int i = 0, count, sum;while (gets_s(str)){count = strlen(str);sum = 0;for (i = count - 1; i >= 0; i--)/{if (str[i] >= '0'&&str[i] <= '9'){sum += (str[i] - 48)*pow(16, count - i - 1);}else if (str[i] >= 'A'&&str[i] <= 'F'){sum += (str[i] - 55)*pow(16, count - i - 1);}}printf("%d\n", sum);}return 0;}//程序参考了网上好多聚聚的



1.break 语句用于结束整个循环体

2. continue 用于结束单次的循环

3.用迭代、普通算法都可以完成~~~

4.就是求质因数,每次输出被除数就行了~~~~   除不尽的话被除数++然后继续去除,余数等于0的时候输出一次,然后除数改变~~~

/******************************************质数因子**************************************************///功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )//最后一个数后面也要有空格////详细描述://函数接口说明://public String getResult(long ulDataInput)//输入参数://long ulDataInput:输入的正整数//返回值://string/*****************************************************************************************************/#include <iostream>#include <string>using namespace std;//break结束整个循环体//continue 结束单次循环void hanshu(long n, int a){if (n == 1){return;}if (n%a == 0){n = n / a;cout << a << ' ';hanshu(n, a);}else{a++;hanshu(n, a);}}int main22() {long n;cin >> n;int a = 2;hanshu(n, a);system("pause");return 0;}int main21(){long n;while (cin >> n){while (n != 1){for (int i = 2; i <= n; i++){if (n%i == 0){n /= i;//n=n/i;cout << i << ' ';break;}}}}system("pause");return 0;}


1.对于浮点数f取整数部分 (int)f

2.这个简单转圈圈~~~~

/***************************************取近似值*********************************************///写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;//小于5,则向下取整。////输入描述:输入一个正浮点数值//输出描述:输出该数值的近似整数值///********************************************************************************************/#include <iostream>#include <string>using namespace std;int main31(){float f;while (cin >> f){int x;float y;x = (int)f;y = f - x;if (y >= 0.5){x++;cout << x << endl;}else{cout << x << endl;}}return 0;}

1.map是个好东西~~~自动键值对对应,而且~!!!自动排序的~~~

2.头文件<map>

3.创建结构体,利用顺序存储也可以完成~~~(回来代码补上吧····下雨了好困啊)

/**************************************合并表记录*******************************************///数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,////输出按照key值升序进行输出。//输入描述://先输入键值对的个数//然后输入成对的index和value值,以空格隔开//输出描述://输出合并后的键值对(多行)///*******************************************************************************************/#include<iostream>#include<map>using namespace std;int main(){int num;map<int,int>m;int key;int value;while (cin >> num){while (num--){cin >> key >> value;if (!m[key]){m[key] = value;}else{m[key] += value;}}}for (map<int, int>::iterator it = m.begin(); it != m.end(); ++it){cout << it->first << ' ' << it->second << endl;}return 0;}




渣渣好伤心啊  不会的太多了  很简单的问题  需要看半天  找半天   不过 

还有三个月 加了个油啊大兄弟

都会好的~~~~

么么啪 耶耶耶~~~~

原创粉丝点击