Не работает оператор 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
, поэтому его можно исключить из рассмотрения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д