Capítulo único de Otaru C++ ② Preguntas sobre el anidamiento de bucles: refinable

Diez ciclos

10.1 Caracteres y bucles

Pregunta 1.1 : Bucle para generar 26 letras, comenzando desde AZ.

	for(char i = 'A';i<='Z';i++){
    
    
		cout<<i<<" ";
	}

Insertar descripción de la imagen aquí

Pregunta 1.2 : Ingrese una determinada letra, envíe el valor de esta letra a Z (z) en secuencia y cuente el número.
Formato de entrada: x Formato de salida: xyz 3
o Formato de entrada: Y Formato de salida: YZ 2

	char n;
	int cnt=0;
	cin>>n;
	if(n>='A' && n<='Z'){
    
    
		for(char i=n;i<='Z';i++){
    
    
			cnt++;
			cout<<i<<" ";
		}
	}
	else if(n>='a' && n<='z'){
    
    
		for(char i=n;i<='z';i++){
    
    
			cnt++;
			cout<<i<<" ";
		}
	}
	cout<<cnt;

Insertar descripción de la imagen aquí

Pregunta 1.3 : Ingrese una letra mayúscula o minúscula. Si la entrada es mayúscula, envíe el valor en minúscula de esta letra a Z en secuencia. Si la entrada es minúscula, envíe esta letra al valor mayúsculo de z.
Formato de entrada: x Formato de salida: XYZ
o Formato de entrada: Y Formato de salida: yz

	char n;
	cin>>n;
	if(n>='A' && n<='Z'){
    
    
		n = char(n+32);
		for(char i=n;i<='z';i++){
    
    
			cout<<i<<" ";
		}
	}
	else if(n>='a' && n<='z'){
    
    
		n = char(n-32);
		for(char i=n;i<='Z';i++){
    
    
			cout<<i<<" ";
		}
	}

Insertar descripción de la imagen aquí


10.2 Números y ciclos

Pregunta 2.1 : Es necesario leer n números enteros, contar el número de números positivos, ceros y números negativos y generarlos.
Formato de entrada:
7
1 -1 0 3 5 0 -5

Formato de salida:
3 2 2

	int n,a,cnt1=0,cnt2=0,cnt3=0;
	cin>>n;
	for(int i=1;i<=n;i++){
    
    
		cin>>a;
		if(a>0){
    
    
			cnt1++;
		}
		else if(a<0){
    
    
			cnt2++;
		}
		else{
    
    
			cnt3++;
		}
	}
	cout<<cnt1<<" "<<cnt3<<" "<<cnt2;
	return 0;

Insertar descripción de la imagen aquí

Pregunta 1: Secuencia de Fibonacci, el primer y segundo número de la secuencia son 1 y cada número posterior es igual a la suma de los dos números anteriores. 1 1 2 3 5 8 13 21 34 55 ...
Ingrese el valor n para encontrar el valor de la secuencia de Fibonacci del 1 al enésimo número.

int n,a,b,t;
	cin>>n; 
	for(int i=1;i<=n;i++){
    
    
		if(i<=2){
    
    
			a = 1;
			b = 1;
			cout<<a<<" ";
		}
		else{
    
    
			t = a;
			a = b;
			b = t+a;
			cout<<b<<" ";
		}
	}

Insertar descripción de la imagen aquí
Pregunta 2: (Problema de intereses bancarios) El granjero John ganó mucho dinero el año pasado. Quería invertir el dinero y tenía curiosidad por saber cuántos ingresos podría obtener. Se sabe que la tasa de interés anual compuesta de una inversión es R (un número entero entre 0 y 20). Actualmente, John tiene dinero con un valor M (un número entero entre 100 y 1.000.000). Sabe claramente que quiere invertir durante Y años (rango de 0 a 400). Ayúdelo a calcular cuánto dinero tendrá al final y a generar la parte entera.
Interés en un año determinado = principal M * tasa de interés anual R%
Dinero en un año determinado = interés + principal
Programe para ingresar el principal m, la tasa de interés r y el número de años y; calcule la cantidad total de dinero en cada año.

	double m,r,y;
	cin>>m>>r>>y;
	for(int i=1;i<=y;i++){
    
    
		m += m * r / 100;
		cout<<i<<"年后的本金:"<<m<<endl;
	} 

Insertar descripción de la imagen aquí

Pregunta 3: (Problema de los monos comiendo melocotones) Un grupo de monitos recogieron muchos melocotones en un día, se comieron la mitad el primer día y luego no pudieron evitar comerse otro, se comieron la mitad al día siguiente. , y luego uno más; y todos los días después de eso, come así. Al décimo día, el pequeño mono descubrió que solo había un melocotón. Pregúntale al monito cuántos melocotones recogió el primer día.

	int n=1;
	for(int i=10;i>=1;i--){
    
    
		cout<<i<<"天的桃子数:"<<n<<endl; 
		n = (n+1)*2;
	}

Insertar descripción de la imagen aquí


Anidamiento de once bucles: ecléctico

Agregar otro bucle dentro del bucle se denomina anidamiento de bucles.
Insertar descripción de la imagen aquí
Puede saber que el bucle exterior controla las filas y el bucle interior controla las columnas.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Puede ver que la tabla de multiplicar 99 es una matriz. Necesitamos convertirla en el 'triángulo' de la tabla de multiplicar real a continuación, es decir, cómo la imagen de arriba se convierte en la siguiente imagen:
Insertar descripción de la imagen aquí

// 1.乘法表
	for(int i=1;i<=9;i++){
    
    
		for(int j=1;j<=i;j++){
    
    
			cout<<i<<"*"<<j<<"="<<i*j<<" ";
		}
		cout<<endl;
	}

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

int n;	
	cin>>n;
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=n;j++){
    
    
			if(i==j){
    
    
				cout<<1<<" "; 
			}
			else{
    
    
				cout<<0<<" "; 
			}
		}
		cout<<endl;
	}

Versión mejorada de la matriz de cambios.

// 随机变化矩阵 
	int n;	
	while (true){
    
    
		cin>>n;
		for(int i=1;i<=n;i++){
    
    
			for(int j=1;j<=n;j++){
    
    
				if(i==j){
    
    
					cout<<1<<" "; 
				}
				else{
    
    
					cout<<0<<" "; 
				}
			}
			cout<<endl;
		}
		cout<<endl;
		if(n==0){
    
    
			break;
		}
	}

Insertar descripción de la imagen aquí
Realice la impresión de triángulos "*" positivos y negativos.
Insertar descripción de la imagen aquí

	int n;
	cin>>n;
	for(int i=n;i>=1;i--){
    
    
		for(int j=1;j<=i;j++){
    
     
			cout<<"*";
		}
		cout<<endl;
	}

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

int n;
	long long total=0;
	cin>>n;
	for(int i=1;i<=n;i++){
    
     // 加每一个阶乘值
		long long sum=1; // 为什么不放在外面赋值? 
		for(int j=1;j<=i;j++){
    
     //求阶乘 
			sum = sum*j;
		}
		total += sum;
		cout<<"前"<<i<<"个阶乘总值:"<<total<<endl; 
	}

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

	int n,m;
	cin>>n>>m;
	int a=1;
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=m;j++){
    
     
			
			cout<<a++<<" ";
		}
		cout<<endl;
	}

Insertar descripción de la imagen aquí

Ingrese n filas y m columnas, encuentre la suma de todos los números pares.

	int n,m,sum=0,value=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=m;j++){
    
     
			cin>>value;
			if(value%2==0){
    
    
				sum+=value;
			}
		}
	}
	cout<<sum;

Insertar descripción de la imagen aquí

Implemente la salida del triángulo isósceles '*', como se muestra a continuación:
Insertar descripción de la imagen aquí

int n;
	cin>>n;
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=n-i;j++){
    
     
			cout<<" ";
		}
		for(int k=1;k<=2*i-1;k++){
    
     
			cout<<"*";
		}	
		cout<<endl;
	}

11.2 Matemáticas y circulación: conectadas

Pregunta 1: Manuscrito de Marx Pregunta:
Hay una pregunta matemática muy interesante: hay 30 hombres, mujeres y niños en total. Gastaron un total de 50 chelines en un restaurante. Cada hombre gastó 3 chelines y cada mujer gastó 3 chelines. 2 chelines, cada niño gasta 1 chelín. Utilice el método exhaustivo para calcular cuántos hombres, mujeres y niños hay y enumere todas las combinaciones posibles.
Insertar descripción de la imagen aquí

//马克思手稿问题
//i代表男,j代表女,k代表孩子 
	int cnt = 0;
	for(int i=1; i<=16; i++){
    
     
		for(int j=1; j<=25; j++){
    
    
			for(int k=1;k<=30;k++){
    
    
				if(i+j+k==30 && i*3+2*j+k==50){
    
    
					cout<<i<<" "<<j<<" "<<k<<endl;
					cnt++; 
				}
			}
		}
	}
	cout<<"次数:"<<cnt;

Pregunta 2: Si tiras 3 dados, ¿cuáles son las situaciones en las que la suma de los puntos de los dados es 12?
[Idea de análisis]
De la pregunta, sabemos que cada dado tiene seis posibilidades y el número de puntos arrojados es 6 6 6 == 216 posibilidades. Entre las 216 posibilidades, todas las situaciones en las que la suma de los puntos es 12 se descartan siempre que el juicio La suma de los puntos de tirar tres dados sea igual a 12 y se emitan los puntos de cada dado;
Insertar descripción de la imagen aquí

	int cnt=0;
	for(int i=1;i<=6;i++){
    
    
		for(int j=1;j<=6;j++){
    
    
			for(int k=1;k<=6;k++){
    
    
				if(i+j+k==12){
    
    
					cout<<i<<" "<<j<<" "<<k<<endl;
					cnt++;
				}
			} 
		} 
	}
	cout<<"可能性有:"<<cnt;

Pregunta 3: Si hay 12 bolas en una tronera, incluidas 3 bolas rojas, 3 bolas blancas y 6 bolas negras, ¿cuántas combinaciones de colores diferentes puede haber si se seleccionan 8 bolas al azar?
Insertar descripción de la imagen aquí

	int cnt=0;
	cout<<"红球	白球	黑球"<<endl; 
	for(int i=0;i<=3;i++){
    
    
		for(int j=0;j<=3;j++){
    
    
			if(8-i-j<=6){
    
    
				cout<<i<<"	"<<j<<"	"<<8-i-j<<endl;
				cnt++;
			}
		}	
	}
	cout<<"共有"<<cnt<<"可能性"; 

Doce impresiones gráficas: todo tipo de cosas.

Pregunta 1: Imprima un diagrama de escalera en ángulo recto
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

#include<iostream>
using namespace std;
int main(){
    
    
//	打印梯形图 
    int n;
    cin>>n;
    for(int i=1; i<=n; i++){
    
    
        for(int k=1;k<n;k++){
    
    
            cout<<"A";
        }
		for(int j=1; j<=2*i-1; j++){
    
    
            cout<<"A";      
        }
        cout<<endl;
    }

Pregunta 2: Imprimir rectángulo flotante
Insertar descripción de la imagen aquí

    int n, m, k;
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) {
    
    
		for (int j = 1; j <= k; j++) {
    
    
    		cout << ' ';
		}
        for (int j = 1; j <= m; j++) {
    
    
   		 	cout << 'A';
		}
		cout << endl;
	}

Insertar descripción de la imagen aquí
Pregunta 3: Imprimir marco de fotos
Insertar descripción de la imagen aquí

	int n;
    cin>>n;
    for(int i1=1;i1<=n;i1++){
    
    
        cout<<"*";
    }
    cout<<endl;
    for(int i=1; i<=n; i++){
    
    	
		for(int j=1;j<=n;j++){
    
    
			if(j==1 || j==n){
    
    
				cout<<"*";
			}
			else{
    
    
				cout<<" ";
			}
		}
		cout<<endl;
	} 
    for(int i2=1;i2<=n;i2++){
    
    
        cout<<"*";
    }		

Insertar descripción de la imagen aquí
Pregunta 4: Triángulo isósceles invertido

	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=m;j++){
    
     
			if(i==1 || j==1 || i==n || j==m){
    
    
				cout<<1;
			}else{
    
    
				cout<<0;
			}
		}
		cout<<endl;
	}

Pregunta 5: Imprimir matriz sólida
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

// 打印实心矩阵	
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=m;j++){
    
     
			if(i==1 || j==1 || i==n || j==m){
    
    
				cout<<1;
			}else{
    
    
				cout<<0;
			}
		}
		cout<<endl;
	}

Pregunta 6: Imprimir matriz diagonal
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

//打印对角线矩阵 
    int n;
	cin>>n;
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=n;j++){
    
     
			if(i==j || i==n-j+1){
    
    
				cout<<1;
			}else{
    
    
				cout<<0;
			}
		}
		cout<<endl;
	}

Pregunta 7: Imprimir la pirámide
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

// 金字塔 
	int n;
	cin>>n; 
	for(int i=1;i<=n;i++){
    
    
	    for(int a=1;a<=n-i;a++){
    
    
            cout<<" ";
        }
        cout<<"/"; 
        for(int j=1;j<=2*(i-1);j++){
    
    
            cout<<"_";
        }
        cout<<"\\"<<endl;
    }

Pregunta 8: Matriz especial
Insertar descripción de la imagen aquí

//  特殊矩阵  
  int n;
	cin>>n; 
	for(int i=1;i<=n;i++){
    
    
		for(int j=1;j<=10;j++){
    
    
			if(j==n || i==n){
    
    
				cout<<0; 
			}
			else{
    
    
				cout<<1;
			}
		}
		cout<<endl;
	} 


12.2 Mejora gráfica: en constante cambio

Pregunta 1: Imprime un trapezoide isósceles
Insertar descripción de la imagen aquí

//	打印等腰梯形图 
    int m;
    cin>>m;
    for(int i=1; i<=m; i++){
    
    
        for(int k=1;k<=m-i;k++){
    
    
            cout<<" ";
        }
		for(int j=1; j<=2*(i-1)+m; j++){
    
    
            cout<<"A";      
        }
        cout<<endl;
    }

Pregunta 2: Imprimir rombo
Insertar descripción de la imagen aquí

//  打印菱形 
    int n;
    cin>>n;
	for(int i=1;i<=n;i++){
    
     // 上半部分 
		for(int j=1;j<=n-i;j++){
    
    
			cout<<" ";
		}
		for(int k=1;k<=i;k++){
    
    
			cout<<"* ";
		}
		cout<<endl;
	}
	// 下半部分	
	for(int i=n-1;i>=1;i--){
    
    
		for(int j=1;j<=n-i;j++){
    
    
			cout<<" ";
		}
		for(int k=1;k<=i;k++){
    
    
			cout<<"* ";
		}
		cout<<endl;
	}	

Pregunta 3: Imprimir números gráficos
Insertar descripción de la imagen aquí

//  打印数字菱形 
    int n;
    cin>>n;
	for(int i=1;i<=n;i++){
    
     // 上半部分 
		for(int j=1;j<=n-i;j++){
    
    
			cout<<" ";
		}
		for(int k=1;k<=2*i-1;k++){
    
    
			cout<<k;
		}
		cout<<endl;
	}
	// 下半部分	
	for(int i=n-1;i>=1;i--){
    
    
		for(int j=1;j<=n-i;j++){
    
    
			cout<<" ";
		}
		for(int k=1;k<=2*i-1;k++){
    
    
			cout<<k;
		}
		cout<<endl;
	}

Pregunta 4: Imprimir letras matriciales
Insertar descripción de la imagen aquí

// 打印字母长方形 
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
    
    
        for (int j = 0; j < m; j++) {
    
    
            cout << (char)('A' + i + j);
        }
    	cout << endl;
	}

Pregunta 5: cuadro gráfico
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

int m,n;
    char a;
    bool b;
    cin>>m>>n>>a>>b;    
    for(int i=1;i<=m;i++){
    
    
        for(int j=1;j<=n;j++){
    
    
            if(i==1 || i==m || j==1 || j==n){
    
    
                cout<<a;
            }
            else if(b==1){
    
    
                cout<<a;
            }
            else{
    
    
                cout<<" ";
            }
        }
        cout<<endl;
    }

Pregunta 6: embudo de impresión
Insertar descripción de la imagen aquí

	int n;
	cin>>n;
	for(int i=n;i>=1;i--){
    
    		
		for(int j=1;j<=n-i;j++){
    
    
			cout<<" ";
		}
		for(int j=1;j<=2*(i+1)-1;j++){
    
    
			cout<<'A';
		}
		cout<<endl;
	}
	
	for(int i=0;i<=n;i++){
    
    		
		for(int j=1;j<=n-i;j++){
    
    
			cout<<" ";
		}
		for(int j=1;j<=2*(i+1)-1;j++){
    
    
			cout<<'A';
		}
		cout<<endl;
	}

Pregunta 7: Valor máximo y segundo valor máximo
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44775255/article/details/128313463
Recomendado
Clasificación