Не работает оператор 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек и заголовочных файлов.
  2. Определение константы delay, которая задает задержку в миллисекундах.
  3. Главная функция программы main(), принимающая два аргумента: argc и argv.
  4. Объявление двух переменных типа DWORD с именами tm1 и tm2, которые используются для измерения времени.
  5. Использование цикла for для повторения кода 10 раз.
  6. Внутри цикла выводится сообщение Thread 1 и начинается измерение времени с помощью функции timeGetTime().
  7. Затем используется цикл while, который выполняется до тех пор, пока время выполнения не превысит значение переменной delay.
  8. Внутри цикла выводится символ -, а затем измеряется время выполнения с помощью функции timeGetTime().
  9. После окончания внутреннего цикла выводится сообщение Thread 2 и начинается измерение времени.
  10. Затем используется аналогичный цикл while, но внутри него выводится символ +.
  11. После окончания внутреннего цикла выводится сообщение time   mS, где mS - это сокращение от миллисекунд.
  12. Значение переменной tm2-tm1 преобразуется в строку с помощью функции printf().
  13. После окончания внешнего цикла программа ожидает нажатия клавиши с помощью функции system(pause).
  14. Возврат значения 0, что означает успешное выполнение программы.
  15. Код не использует оператор switch, поэтому его можно исключить из рассмотрения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы