1.加法器、累加器:(多实现 1+2+…+n 以及阶乘 n! 的功能)
一、求累加
int main(){
int i =0;
int res = 0;
int n;
cin >> n;
while(i<=n){
res += i;
i++;
}
//其中 res为最终结果 n表示加到多少 i表示每次加的数
cout << res <<endl;
return 0;
}
二、求某数阶乘
int main()
{
int i = 1;
int sum = 1;
int n;
cin >> n;
while(i <=n){
sum *=i; // 1. sum = 1*1 =1
i++; // 2. i =2;
// 3. sum = 1*2=2 以此类推
}
cout << "其阶乘为:" << sum <<endl;
return 0;
}
2. 求两个数或数组中的最大值与最小值
int main(){
int a, b,max;
cout << "请连续输入待比较的两个数,空格隔开:" <<endl;
cin >> a >> b;
max = (a>b) ? a : b; //使用双目运算符取得最大值
cout << max <<endl;
int arr[5] = {
5, 2, 13, 23, 66};
int arr_max, arr_min;
arr_max = arr[0]; //默认第一位元素为最值
arr_min = arr[0];
for(int i =0; i <5; i++)
{
if(arr_max < arr[i])
{
arr_max = arr[i];
}else if(arr_min > arr[i]){
//往后遍历,若还有更大的则更新最值 否则最小值更新
arr_min = arr[i];
}
}
cout << arr_min << " " <<arr_max <<endl;
return 0;
}
3.冒泡排序,必须会默写
#define LEN 5
int main(){
int a[LEN] = {
2, 13, 5, 55, 20};
for(int i=0; i<LEN; i++)
{
for(int j=0; j<LEN-i-1; j++){
//注意两个for循环的初始条件与终止条件 都从0k开始
if(a[j] > a[j+1]){
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
return 0;
}
4.简单的switch-case多分支条件语句
int main(){
int score;
cout << "请在0~100范围内输入你的分数(满分100分):" <<endl;
cout << " 60分以下不及格 60~70及格 70~80良好 80以上优秀 " <<endl;
cin >> score;
switch(score/10){
case 6 :
cout<<"及格"<<endl;
break;
case 7 :
cout<<"良好"<<endl;
break;
case 8 :
cout<<"优秀"<<endl;
break;
case 9 :
cout<<"优秀"<<endl;
break;
case 10 :
cout<<"满分"<<endl;
break;
default:
cout<<"不及格"<<endl;
break;
}
return 0;
}
5.求两个数的最大公约数、最小公倍数(不可含0) (谭浩强C语言例题)
int main(){
int x, y, r;
cout << "请输入待运算的两个数, 中间用空格隔开" <<endl;
cin >> x >> y;
int mul = x * y;
if(x < y) //将比如 8,2 与 2,8 的操作统一输出
{
r = x;
x = y;
y = r;
}
r = x % y; //直接判断两数是否可以整除
while(r){
x = y;
y = r;
r = x % y;
//辗转相除法
//直到余数不为0
//将余数作为除数 较小者作为被除数 继续求余判断
}
cout << "最大公约数:" << y << ",最小公倍数:" << mul / y <<endl;
return 0;
}
6.斐波那契数列递归
int fib(int n){
if(n == 1){
return 1;
}else if(n == 2){
return 1;
}else{
return fib(n-2) + fib(n-1);
}
}
1, 1, 2, 3, 5…以此类推
7.判断某数是否是素数 (谭浩强C语言例题)
int main()
{
int n, i;
bool isPrime = true;
cout << "输入一个正整数: ";
cin >> n;
for(i = 2; i <= n / 2; ++i)
{
if(n % i == 0) //只能被1 和 自身整除的数 才能是素数
{
isPrime = false;
break;
}
}
if (isPrime)
cout << "是素数";
else
cout << "不是素数";
return 0;
}
8.大写字母转化为小写字母
int main()
{
char a;
a = getchar();
printf("%c", a+32); // C或C语言中字符数据均以ASCII值存储 大写字母与小写字母相差32
return 0;
}
9.统计输入字符中单词的个数 (谭浩强C语言例题)
#include<stdio.h>
#include<iostream>
#define N 30
using namespace std;
int main()
{
char b[N];
int word,count=0,i; //word代表是否是单词 1代表是 0代表不是单词 而是空格
//count 代表单词个数
puts("输入的字符长度要小于等于N"); // 例如-> hello world
gets(b);
for(i=0;b[i]!='\0';i++)
if(b[i]==' ') //若为空格则不是单词
word=0;
else if(word==0) //若是空格则遇到的新单词使得count加一
{
count++;
word=1;
}
printf("%d",count);
return 0;
}
10.求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。 例如,n=5时=2+22+222+2222+22222,n由键盘输入。 (谭浩强C语言例题)
#include<iostream>
using namespace std;
int main()
{
int n,i,Sn =0,a=0;
cin >> n; //n代表循环次数
for(i=0; i<n; i++){
a = a*10 +2; // 0, 2, 22, 222
Sn += a; /0+2+22
}
cout << Sn;
return 0;
}
11.求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20) 注意使用int类型 当n为19时会溢出 (谭浩强C语言例题)
#include<iostream>
using namespace std;
long long fac(long long n){
long long i = 1;
long long sum = 1;
while(i <=n){
sum *=i; // 1. sum = 1*1 =1
i++; // 2. i =2;
// 3. sum = 1*2=2 以此类推
}
return sum;
}
int main()
{
long long n,sum=0,a = 0;
cin >> n;
for(long long i=n; i>0; i--){
sum += fac(i);
}
cout << sum << endl;
return 0;
}
12.求一个3×3矩阵对角线元素之和。 (谭浩强C语言例题)
#include<iostream>
using namespace std;
int main(){
int a[3][3];
for(int i=0; i<3; i++)
{
for(int j=0;j<3; j++){
cin >> a[i][j];
}
} //两个for循环输入二维数组
int sum1 = 0;
int sum2 = 0;
for(int i=0; i<3;i++)
{
sum1 += a[i][i]; //主对角线求和
}
int j=2;
for(int i=0;i<3;i++)
{
sum2 += a[i][j];
//副对角线求和 注意变量j定义在循环外 不然值不会发生改变
//j分别是2 1 0
j--;
}
cout << sum1 << " " << sum2;
return 0;
}
13.用选择法对10个整数从小到大排序。 (谭浩强C语言例题)
#include<iostream>
#define LEN 10
using namespace std;
void swap(int *a,int *b) //交换两个数 引用& 或者指针* 均可
{
int temp = *a;
*a = *b;
*b = temp;
}
void selection_sort(int arr[], int len)
{
int i,j;
for (i = 0 ; i < len - 1 ; i++)
{
int min = i; //默认选择最小值
for (j = i + 1; j < len; j++)
if (arr[j] < arr[min])
min = j;
swap(&arr[min], &arr[i]);
//调用数组元素时 元素前加引用
}
}
int main(){
int a[LEN]