C/C++ 编程常见代码

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]
  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值