Не работает оператор switch. - C (СИ)
Формулировка задачи:
Привет всем.
Реализую в программе кое-что при помощи оператора switch.
Пересмотрел материал, вроде все делаю правильно
(там акцент на то, чтобы проверяемая переменная была целочисленным типом) , а оно почему-то не заходит туда, куда должно.
Делаю на Visual C++ 2008 Express.
Присваиваю переменной значение ноль - k=0;
после этого вставляю эту переменную в условие switch;
в одном из условий делаю case '0' , а оно не срабатывает.
даллее выводит то, что должно выполняться при default.
Ниже , привел интересующий кусок проги.
Заранее благодарю.
Листинг программы
- include "stdafx.h"
- #include<stdio.h>
- #include"conio.h"
- #include<string.h>
- #include"iostream"
- #include<time.h>
- #include<stdlib.h>
- #include<fstream>
- using namespace std;
- int main()
- {
- int a,b=0, c=4, i=0 ,j=0,m[20][30],povorot_c=0 , k;
- FILE *fp;
- animal[0].n=0;
- k=animal[0].n;
- printf("%d",k); // здесь оно выводит то, что должно выводить
- printf("\n");
- if ((strcmp("sh",cc))==0){
- animal[0].cc++;
- // сюда вставлял - тоже выводит то, что прошу вывести
- A:
- if (povorot_c<4) {
- // и здесь выводит то, что прошу вывести - проверял
- switch (k)
- {
- case '0':
- printf("%d",11111); // а вот здесь не хочет почему-то выводить!
- printf("\n");
- break;
- default:
- printf("%d",222); // и вот здесь выводит то, что должно выводить
- printf("\n");
- break;
- }
- }
- }
- getch();
- return 0;
- }
Решение задачи: «Не работает оператор switch.»
textual
Листинг программы
- #include "stdafx.h"
- #include <Windows.h>
- #pragma comment(lib,"Winmm.lib")
- #define delay 1
- int _tmain(int argc, _TCHAR* argv[])
- {
- DWORD tm1,tm2;
- for(int i=0;i<10;i++)
- {
- printf("\n Thread 1 \n");
- // Функция timeGetTime извлекает системное время в миллисекундах.
- // Системное время - это время, истекшее с момента старта Windows
- tm1=tm2= timeGetTime();
- while((tm2-tm1)<delay)
- {
- printf("-");
- tm2= timeGetTime();
- }
- printf("\n time %d mS\n",tm2-tm1);
- printf("\n Thread 2 \n");
- tm1=tm2= timeGetTime();
- while((tm2-tm1)<delay)
- {
- printf("+");
- tm2= timeGetTime();
- }
- printf("\n time %d mS\n",tm2-tm1);
- }
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек и заголовочных файлов.
- Определение константы
delay
, которая задает задержку в миллисекундах. - Главная функция программы
main()
, принимающая два аргумента:argc
иargv
. - Объявление двух переменных типа
DWORD
с именамиtm1
иtm2
, которые используются для измерения времени. - Использование цикла
for
для повторения кода 10 раз. - Внутри цикла выводится сообщение
Thread 1
и начинается измерение времени с помощью функцииtimeGetTime()
. - Затем используется цикл
while
, который выполняется до тех пор, пока время выполнения не превысит значение переменнойdelay
. - Внутри цикла выводится символ
-
, а затем измеряется время выполнения с помощью функцииtimeGetTime()
. - После окончания внутреннего цикла выводится сообщение
Thread 2
и начинается измерение времени. - Затем используется аналогичный цикл
while
, но внутри него выводится символ+
. - После окончания внутреннего цикла выводится сообщение
time mS
, гдеmS
- это сокращение от миллисекунд. - Значение переменной
tm2-tm1
преобразуется в строку с помощью функцииprintf()
. - После окончания внешнего цикла программа ожидает нажатия клавиши с помощью функции
system(
pause)
. - Возврат значения 0, что означает успешное выполнение программы.
- Код не использует оператор
switch
, поэтому его можно исключить из рассмотрения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д