-
输入一个数n,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)
#include <iostream> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int func_sum(int n); int main(int argc, char *argv[]) { int n; cin>>n; if(n<=0) { cout<<"ERROR!!"<<endl; return 0; } int sum = 0; for(int i=n; i>0; i--) { sum += func_sum(i); } cout<<"the sum is "<< sum<<endl; return 0; } int func_sum(int n) { int sum = 0; for(int i=0; i<=n; i++) { sum += i; } return sum; }
-
100以内的完数
#include<iostream> using namespace std; int main() { cout<<"Please input a number:"; int n; cin>>n; for(int i=2; i<=n; i++) { int sum = 0; for(int j=1; j<i; j++) { if(i%j==0) sum+=j; } if(sum==i) cout<<"完数:"<<i<<endl; } return 0; }
-
输入一个字符串,输出该字符串中字符的所有组合。
举个例子,如果输入abc,它的组合有a、ab、abc、b、bc、c#include<iostream> #include<string> using namespace std; // 暴力法 int main() { cout<<"Enter a string: "; string str; cin>>str; int len = str.length(); for(int i=0; i<=len; i++) { for(int j=i; j<=len; j++) { for(int k=i; k<j; k++) { cout<<str[k]; } cout<<endl; } } return 0; }
-
输出所有的子字符串
#include<iostream> #include<cstring> #include<cstdio> #include<vector> using namespace std; void Combination(const char* string, int number, vector<char>& result)//const { if(number == 0) { vector<char>::iterator iter = result.begin(); for(; iter < result.end(); ++ iter) printf("%c", *iter); printf("\n"); return; } if(*string == '\0') return; result.push_back(*string); Combination(string + 1, number - 1, result); result.pop_back(); Combination(string + 1, number, result); } void combination(const char* string)//const { if(string == NULL) return; int length = strlen(string); vector<char> result; for(int i = 1; i <= length; ++ i) { Combination(string, i, result); } } int main() { const char *str ="abcd";//const combination(str); getchar(); return 0; }
-
三维数组求对角线上的元素之和
#include<iostream> #include<string> using namespace std; // 暴力算法 int main() { int arr[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; int row = sizeof(arr)/sizeof(arr[0]); int col = sizeof(arr[0]); int sum = 0; for(int i=0; i<row; i++) { for(int j=0; j<col; j++) { if(i==j) { sum += arr[i][j]; } } } cout<<"Sum is "<< sum<<endl; return 0; }
-
对于含若干字母和数字的字符串 求其中所有的数字之和
#include<iostream> #include<string> #include<bits/stdc++.h> using namespace std; int main() { cout<<"Enter string and num: "<<endl; string str; cin>>str; int len = str.length(); int sum = 0; for(int i=0; i<len; i++) { if(str[i]<='9' || str[i]>='0') sum += std::stoi(str[i].c_str()); // stoi 只能将char* 转化为 int,string 要使用 .c_str() 转化 } cout<<"the sum is "<<sum; return 0; }
-
利用快速排序实现所有奇数在前,偶数在后
#include<iostream> using namespace std; void QuickSort(int arr[], int low, int high) { if(high<=low) return; int i = low; int j = high+1; int key = arr[low]; // 将比key小的数移到右边,比key大 的数移到左边 while(true) { while(arr[++i]<key) { if(i==high) break; } while(arr[--j]>key) { if(j==low) break; } if(i>=j) break; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // key 与 arr[j] 交换 int tmp = arr[low]; arr[low] = arr[j]; arr[j] = tmp; QuickSort(arr, low, j-1); QuickSort(arr, j+1, high); } int main() { int arr[] = {1,6,4,7,2,0,11,54,3,7}; int len = sizeof(arr)/sizeof(arr[0])-1; QuickSort(arr, 0, len); for(int i=0; i<len+1; i++) { cout<<arr[i]<<" "; } cout<<endl; for(int i=0; i<len+1; i++) { if(arr[i]%2==1) cout<<arr[i]<<" "; } for(int i=0; i<len+1; i++) { if(arr[i]%2==0) cout<<arr[i]<<" "; } cout<<endl; return 0; }
-
字符串逆序
#include<iostream> #include<string> using namespace std; int main() { string str; cout<<"Enter a string:"<<endl; cin>>str; int len = str.length(); string res = str; for(int i=len-1; i>=0; i--) { res[len-1-i] = str[i]; // char tmp = str[len-1-i]; // str[len-1-i] = str[i]; // str[i] = tmp; } cout<<"Reversed string: "<< res <<endl; return 0; }
-
找出正整数中偶数,并输出相加后的数,要用 long
输入 5548 输出 12
#include<iostream> using namespace std; int main() { cout<<"Enter a number:"<<endl; long number; cin>>number; int sum = 0; while(number !=0) { int yu = number % 10; if(yu%2 == 0) sum += yu; number = number / 10; } cout<<sum<<endl; return 0; }
-
输入 n 和 b , 找出 1 到 n 中被 b 整除的个数.
例:输入 6 3 输出 2
#include<iostream> using namespace std; int main() { cout<<"Enter n: "; int n; cin>>n; cout<<"Enter b: "; int b; cin>>b; int num = 0; for(int i=1; i<=n; i++) { if(i%b == 0) num += 1; } cout<<num<<endl; return 0; }
-
爬一个或者两个台阶,输入 1 <= n < 90 的数字为台阶数,以输入 0 作为结束标志,输出n个台阶共有多少种上楼方式
输入 1 2 3 4 0 输出 1 2 3 5
#include<iostream> using namespace std; int step(int n) { if(n<=2) { return n; } else { return step(n-1)+step(n-2); } } int main() { int a[100]; cout<<"Enter step number: "<<endl; int count = 0; for(int i=0; i<100; i++) { cin>>a[i]; count++; if(a[i] == 0) break; } cout<<"out"<<endl; for(int i=0; i<count-1; i++) { cout<<step(a[i])<<endl; } return 0; }
-
判断一个数是不是素数?
#include<iostream> using namespace std; int main() { cout<<"Enter a number: "; int n; cin>>n; bool flag = true; for(int i =2; i<n; i++) { if(n%i == 0) { flag = false; break; } } if(flag) { cout<<"True"<<endl; } else cout<<"False"<<endl; return 0; }
-
判断从1990到2010年中的润年?并打印
能被4整除的大多是闰年,但能被100整除而不能被400整除的年份不是闰年
#include<iostream> using namespace std; int main() { for(int i=1990; i<=2010; i++) { if(i%4==0 && i%100!=0 || i%400==0) { cout<<i<<endl; } } return 0; }
-
输入几个单词,将字母变换成另外一组单词输出?如果字母是i,则变换后的字母是26+i-1
#include<iostream> using namespace std; int main() { char a[100]; int n= 0; cin.getline(a, 100); while(a[n] != 0) { n++; } for(int i=0; i<n; i++) { if(a[i]>='a' && a[i]<='z') a[i] = 'z' - a[i] + 'a'; if(a[i]>='A' && a[i]<='Z') a[i] = 'Z' - a[i] + 'z'; } cout<<a<<endl; return 0; }
-
N的阶乘
#include<iostream> using namespace std; int main() { int n; cin>>n; int res = 1; for(int i=1; i<=n; i++) { res = res*i; } cout<<res<<endl; return 0; }
-
输入十个数,最大数和最后一个数交换,最小数和第一个数交换
#include<iostream> using namespace std; int main() { cout<<"Enter 10 numbers"<<endl; float a[10]; for(int i=0; i<10; i++) { cout<<i+1<<":"; cin>>a[i] ; } float min = a[0], max = a[0]; int min_loc, max_loc; for(int i=0; i<10; i++) { if(a[i]<min) { min = a[i]; min_loc = i; } if(a[i]>max) { max = a[i]; max_loc = i; } } float tmp = a[max_loc]; a[max_loc] = a[9]; a[9] = tmp; tmp = a[min_loc]; a[min_loc] = a[0]; a[0] = tmp; for(int i=0; i<10; i++) { cout<<a[i]<<" "; } cout<<endl; return 0; }
-
猴子吃桃子:一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子(
1534
)#include<iostream> using namespace std; int main() { int y = 1; for(int i=1; i<10; i++) { y = (y + 1) * 2 ; } cout<<y<<endl; return 0; }
-
A,B两个字符串, 求在第一个字符串出现, 第二个字符串中未出现的, 重复只取第一次出现, 输出字符串
#include<iostream> using namespace std; int main() { char str1[100]; char str2[100]; cout<<"String1: "; cin.getline(str1, 100); cout<<"String2: "; cin.getline(str2, 100); for(int i=0; str1[i]!='\0'; i++) { for(int j=0; str2[j]!='\0'; j++) { if(str1[i] == str2[j]) { cout<<str1[i]<<endl; return 0; } } } }
-
把字符串中的字符a和A换成c输出
#include<iostream> using namespace std; int main() { char str[100]; cout<<"String: "; cin.getline(str, 100); for(int i=0; str[i]!='\0'; i++) { if(str[i]=='a' || str[i]=='A') { str[i] = 'c'; } } cout<<str<<endl; return 0; }
-
给你年月日,求出是这年的第几天
#include<iostream> using namespace std; int main() { int y, m, d; cout<<"Year: "; cin>>y; cout<<"mouth: "; cin>>m; cout<<"day: "; cin>>d; int day_run[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int day_ping[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int days = 0; // 闰年 or 平年 if(y%4==0 && y%100==0 || y%400==0) { for(int i=1; i<m; i++) { days += day_run[i]; } days += d; } else { for(int i=1; i<m; i++) { days += day_ping[i]; } days += d; } cout<<"这是今年的第 "<< days <<" 天" <<endl; return 0; }
-
给你两个数,例如23和456,23 * 456=2 * 4 2 * 5 2 * 6 3 * 4 3 * 5 3 * 6,让你实现这个算法
-
凯撒密码加密解密,就是给你由大写字母组成的字符串,求出原来的字符串,加密
#include<iostream> using namespace std; int main() { cout<<"Encode string: "; char str[100]; cin.getline(str, 100); cout<<"Encode number: "; int n; cin>>n; n = 26-n; // ***** for decode ****** for(int i=0; str[i]!='\0'; i++) { if(str[i]<='Z' && str[i]>='A') { str[i] = (str[i]-'A'+n)%26 + 'A'; } if(str[i]<='z' && str[i]>='a') { str[i] = (str[i]-'a'+n)%26 + 'a'; } } cout<<"decode string: "<<str<<endl; return 0; }
-
输入一个数,例如 4, 计算1+121+12321+1234321
#include <iostream> using namespace std; int main(int argc, char** argv) { cout<<"n: "; int n; cin>>n; long long int number = 0; long long int sum = 0; for(int i=1; i<=n; i++) { for(int j=1; j<=i; j++) { number = number*10 + j; } for(int j=i-1; j>0; j--) { number= number*10 + j; } sum += number; cout<<"number: "<<number<<endl; number = 0; } cout<<"out: "<<sum<<endl; return 0; }
-
求字符串的最大公共前缀,例如
flower, fly, flight
, 输出fl
#include <iostream> #include <string> #include<vector> using namespace std; string longestCommonPrfix(vector<string>& strs) { string result = ""; string str, tmp; int len; if(strs.size()==0) return result; else if(strs.size()==1) return strs[0]; else { str = strs[0]; for(int i=1; i<strs.size(); i++) { tmp = strs[i]; result = ""; if(str.length()<tmp.length()) len = str.length(); else len = tmp.length(); for(int j=0; j<len; j++) { if(str[j] == tmp[j]) result += str[j]; else break; } str = result; // ********* 关键 *********** } return result; } } int main(int argc, char** argv) { vector<string> strs; cout<<"输入字符串,输入\"0\"结束输入" <<endl; string str; while(str!="0") { cin>>str; strs.push_back(str); } strs.pop_back(); for(int i=0; i<strs.size(); i++) cout<<strs[i]<<endl; string result = longestCommonPrfix(strs); cout<<"最大公共前缀:" <<result<<endl; return 0; }
-
求两个字符串的最长公共子串
#include <iostream> #include <string> using namespace std; string longestCommonSubstring(string str1, string str2) { string substr = ""; if(str1.length()==0 || str2.length()==0) return substr; int len1 = str1.length(); int len2 = str2.length(); int tmp[len1][len2]; int max=0; int loc_i, loc_j; for(int i=0; i<len1; i++) { for(int j=0; j<len2; j++) { if(str1[i] == str2[j]) { if(i==0 || j==0) { tmp[i][j] = 1; } else { tmp[i][j] = tmp[i-1][j-1] + 1; } if(max<tmp[i][j]) { max = tmp[i][j]; loc_i = i; loc_j = j; } } else tmp[i][j] = 0; } } for(int i=loc_i-max+1; i<=max; i++) { substr += str1[i]; } return substr; } int main(int argc, char** argv) { string str1, str2; cout<<"string1: "; cin>>str1; cout<<"string2: "; cin>>str2; string substr = longestCommonSubstring(str1, str2); cout<<"longest common sub-string: "<<substr<<endl; return 0; }
-
求多个字符串的最长公共子串
#include <iostream> #include <string> #include<vector> using namespace std; string longestCommonSubstring(string str1, string str2) { string substr = ""; if(str1.length()==0 || str2.length()==0) return substr; int len1 = str1.length(); int len2 = str2.length(); int tmp[len1][len2]; int max=0; int loc_i, loc_j; for(int i=0; i<len1; i++) { for(int j=0; j<len2; j++) { if(str1[i] == str2[j]) { if(i==0 || j==0) { tmp[i][j] = 1; } else { tmp[i][j] = tmp[i-1][j-1] + 1; } if(max<tmp[i][j]) { max = tmp[i][j]; loc_i = i; loc_j = j; } } else tmp[i][j] = 0; } } for(int i=loc_i-max+1; i<=max; i++) { substr += str1[i]; } return substr; } int main(int argc, char** argv) { string str; string tmp = ""; vector<string> strs; cout<<"输入字符串,输入\"0\"表示结束输入"<<endl; while(str!="0") { cin>>str; strs.push_back(str); } strs.pop_back(); if(strs.size()==0) cout<<"longest common sub-string: "<<tmp<<endl; else if(strs.size()==1) cout<<"longest common sub-string: "<<strs[0]<<endl; else { tmp = strs[0]; for(int i=1; i<strs.size(); i++) { tmp = longestCommonSubstring(tmp, strs[i]); cout<<i<<": "<<tmp<<endl; } cout<<"longest common sub-string: "<<tmp<<endl; } return 0; }
-
求两个数字的二进制的相同位数的个数
#include <iostream> using namespace std; int main() { int n1, n2; cout<<"n1: "; cin>>n1; cout<<"n2: "; cin>>n2; int min = n1; int max = n2; if(n1>n2) min = n2; max = n1; int cnt = 0; while(min!=0) { if(max%2 == min%2) cnt++; min = min/2; max = max/2; } cout<<"这两个数字的二进制的相同位数的个数是"<<cnt<<endl; return 0; }