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