[Основы C++] Подробное объяснение структуры потока программы

1. Структура программы

C/C++ поддерживает три основные структуры выполнения программы:структура последовательности, структура выбора, структура цикла

  • Последовательная структура: программы выполняются последовательно без переходов
  • Структура выбора: в зависимости от того, выполняются ли условия, выборочно выполняются соответствующие функции
  • Структура цикла: в зависимости от того, выполнено ли условие, выполнить определенный код несколько раз в цикле.

1.1 Выберите структуру

1.1.1 оператор if

Функция: выполнить оператор, удовлетворяющий условию

Три формы оператора if

  • Однострочный формат оператора if
  • Многострочный формат оператора if
  • Мультиусловный
    оператор
  1. Однострочный формат оператора if: if(条件){ 条件满足执行的语句 }, пример:

    int main() {
          
          
    
    	//选择结构-单行if语句
    	//输入一个分数,如果分数大于600分,视为考上一本大学,并在屏幕上打印
    
    	int score = 0;
    	cout << "请输入一个分数:" << endl;
    	cin >> score;
    
    	cout << "您输入的分数为: " << score << endl;
    
    	//if语句
    	//注意事项,在if判断语句后面,不要加分号
    	if (score > 600)
    	{
          
          
    		cout << "我考上了一本大学!!!" << endl;
    	}
    
    	return 0;
    }
    
  2. Многострочный формат оператора if: if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 };, пример:

int main() {
    
    

	int score = 0;

	cout << "请输入考试分数:" << endl;

	cin >> score;

	if (score > 600)
	{
    
    
		cout << "我考上了一本大学" << endl;
	}
	else
	{
    
    
		cout << "我未考上一本大学" << endl;
	}

	return 0;
}
  1. Несколько условных операторов if:if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}

Пример:

	int main() {
    
    

	int score = 0;

	cout << "请输入考试分数:" << endl;

	cin >> score;

	if (score > 600)
	{
    
    
		cout << "我考上了一本大学" << endl;
	}
	else if (score > 500)
	{
    
    
		cout << "我考上了二本大学" << endl;
	}
	else if (score > 400)
	{
    
    
		cout << "我考上了三本大学" << endl;
	}
	else
	{
    
    
		cout << "我未考上本科" << endl;
	}

	return 0;
}

Вложенный оператор if : в операторе if оператор if может быть вложен для достижения более точного условного суждения.

Требования к кейсу:

  • Предложите пользователю ввести балл вступительного экзамена в колледж и сделайте следующие суждения на основе этого балла.
  • Если набрано более 600 баллов, то он считается допущенным к первому курсу, если более 500 баллов, он будет допущен на второй курс, если более 400 баллов, он будет допущен к третий курс, а остальные на бакалавриат не принимаются;
  • В одном балле, если результат больше 700, вы будете приняты в Пекинский университет, если он больше 650, вы будете приняты в университет Цинхуа, а если он больше 600, вы будете приняты в университет Жэньминь. Китая.

Пример:

int main() {
    
    

	int score = 0;

	cout << "请输入考试分数:" << endl;

	cin >> score;

	if (score > 600)
	{
    
    
		cout << "我考上了一本大学" << endl;
		if (score > 700)
		{
    
    
			cout << "我考上了北大" << endl;
		}
		else if (score > 650)
		{
    
    
			cout << "我考上了清华" << endl;
		}
		else
		{
    
    
			cout << "我考上了人大" << endl;
		}
		
	}
	else if (score > 500)
	{
    
    
		cout << "我考上了二本大学" << endl;
	}
	else if (score > 400)
	{
    
    
		cout << "我考上了三本大学" << endl;
	}
	else
	{
    
    
		cout << "我未考上本科" << endl;
	}

	return 0;
}

1.1.2 Тернарный оператор

Функция: реализовать простое суждение через тернарный оператор.

грамматика: 表达式1 ? 表达式2 :表达式3

объяснять:

Если значение выражения 1 истинно, выполнить выражение 2 и вернуть результат выражения 2;

Если значение выражения 1 ложно, выполнить выражение 3 и вернуть результат выражения 3.

Пример:

int main() {
    
    
	int a = 10;
	int b = 20;
	int c = 0;

	c = a > b ? a : b;
	cout << "c = " << c << endl;

	//C++中三目运算符返回的是变量,可以继续赋值

	(a > b ? a : b) = 100;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

	return 0;
}

Резюме: Преимущество тернарного оператора по сравнению с оператором if в том, что он короткий и аккуратный, а недостаток в том, что если вы используете вложенность, структура не ясна.

1.1.3 оператор переключения

Функция: выполнение операторов ветвления с несколькими условиями.

грамматика:

switch(表达式)
{
    
    

	case 结果1:执行语句;break;
	case 结果2:执行语句;break;
	...

	default:执行语句;break;
}

Пример:

int main() {
    
    

	//请给电影评分 
	//10 ~ 9   经典   
	// 8 ~ 7   非常好
	// 6 ~ 5   一般
	// 5分以下 烂片

	int score = 0;
	cout << "请给电影打分" << endl;
	cin >> score;

	switch (score)
	{
    
    
	case 10:
	case 9:
		cout << "经典" << endl;
		break;
	case 8:
		cout << "非常好" << endl;
		break;
	case 7:
	case 6:
		cout << "一般" << endl;
		break;
	default:
		cout << "烂片" << endl;
		break;
	}

	return 0;
}

Примечание 1: Тип выражения в операторе switch может быть только целочисленным или символьным.
Примечание 2: Если в case нет разрыва, программа будет продолжать выполняться вниз.
Резюме: По сравнению с оператором if структура switch понятна. при оценке нескольких условий эффективность выполнения высока, недостатком является то, что переключатель не может оценить интервал

1.2 Структура цикла

1.2.1 оператор цикла while

Функция: выполнить условие цикла, выполнить оператор цикла

грамматика: while(循环条件){ 循环语句 }

объяснять: Выполнять оператор цикла до тех пор, пока результат условия цикла истинен

Пример:

int main() {
    
    
	int num = 0;
	while (num < 10)
	{
    
    
		cout << "num = " << num << endl;
		num++;
	}

	return 0;
}

Примечание. При выполнении оператора цикла программа должна обеспечивать выход для выхода из цикла, иначе возникнет бесконечный цикл.

1.2.2 оператор цикла do...while

Функция: выполнить условие цикла, выполнить оператор цикла

грамматика: do{ 循环语句 } while(循环条件);

**Примечание.** Отличие от while в том, чтоdo...while сначала выполнит оператор цикла, а затем оцените состояние цикла

Пример:

int main() {
    
    
	int num = 0;

	do
	{
    
    
		cout << num << endl;
		num++;

	} while (num < 10);

	return 0;
}

Резюме: отличие от цикла while заключается в том, что do...while выполняет оператор цикла один раз перед оценкой условия цикла.

1.2.3 оператор цикла for

Функция: выполнить условие цикла, выполнить оператор цикла

грамматика: for(起始表达式;条件表达式;末尾循环体) { 循环语句; }

Пример:

int main() {
    
    

	for (int i = 0; i < 10; i++)
	{
    
    
		cout << i << endl;
	}

	return 0;
}

Примечание. Выражения в цикле for должны быть разделены точкой с запятой.

1.2.4 Вложенные циклы

Функция: вложить еще один слой цикла в тело цикла для решения некоторых практических задач.

Пример:

int main() {
    
    

	//外层循环执行1次,内层循环执行1轮
	for (int i = 0; i < 10; i++)
	{
    
    
		for (int j = 0; j < 10; j++)
		{
    
    
			cout << "*" << " ";
		}
		cout << endl;
	}

	system("pause");

	return 0;
}

1.3 Оператор перехода

1.3.1 оператор разрыва

Функция: используется для прыжкавыберите структуруилипетлевая структура

Когда использовать перерыв:

  • Появляется в условном выражении переключателя, функция состоит в том, чтобы завершить дело и выйти из переключателя.
  • Появляется в операторе цикла, функция состоит в том, чтобы выйти из текущего оператора цикла.
  • Появляется во вложенном цикле, выпрыгивая из ближайшего оператора внутреннего цикла

Пример 1:

int main() {
    
    
	//1、在switch 语句中使用break
	cout << "请选择您挑战副本的难度:" << endl;
	cout << "1、普通" << endl;
	cout << "2、中等" << endl;
	cout << "3、困难" << endl;

	int num = 0;

	cin >> num;

	switch (num)
	{
    
    
	case 1:
		cout << "您选择的是普通难度" << endl;
		break;
	case 2:
		cout << "您选择的是中等难度" << endl;
		break;
	case 3:
		cout << "您选择的是困难难度" << endl;
		break;
	}

	return 0;
}

Пример 2:

int main() {
    
    
	//2、在循环语句中用break
	for (int i = 0; i < 10; i++)
	{
    
    
		if (i == 5)
		{
    
    
			break; //跳出循环语句
		}
		cout << i << endl;
	}
	
	return 0;
}

Пример 3:

int main() {
    
    
	//在嵌套循环语句中使用break,退出内层循环
	for (int i = 0; i < 10; i++)
	{
    
    
		for (int j = 0; j < 10; j++)
		{
    
    
			if (j == 5)
			{
    
    
				break;
			}
			cout << "*" << " ";
		}
		cout << endl;
	}

	return 0;
}

1.3.2 оператор продолжения

роль: воператор цикла, пропустить оставшиеся невыполненными операторы в этом цикле и продолжить выполнение следующего цикла

Пример:

int main() {
    
    

	for (int i = 0; i < 100; i++)
	{
    
    
		if (i % 2 == 0)
		{
    
    
			continue;
		}
		cout << i << endl;
	}

	return 0;
}

Примечание: continue не завершает весь цикл, а break выпрыгнет из цикла.

1.3.3 оператор перехода

Функция: оператор безусловного перехода

грамматика: goto 标记;

Объяснение: Если имя метки существует, при выполнении оператора goto произойдет переход к позиции метки.

Пример:

int main() {
    
    

	cout << "1" << endl;

	goto FLAG;

	cout << "2" << endl;
	cout << "3" << endl;
	cout << "4" << endl;

	FLAG:

	cout << "5" << endl;

	return 0;
}

Примечание. Не рекомендуется использовать оператор goto в программе, чтобы не вызывать путаницы в ходе выполнения программы.

Supongo que te gusta

Origin blog.csdn.net/cui_yonghua/article/details/131375301
Recomendado
Clasificación