Что значит такое условие if(s[0]==':') ? - C (СИ)

  1. нашёл условие в программе с символьным массивом состоящем из чиселC1 if(s[0]==':')


textual

Код:

#include<stdio.h>
#include<conio.h>
 
const int n=100000;
 
int main(void)
{
int i,j,g;
char s[n];
 
scanf("%s",&s);
for(i=0;i<n;i++)
if(s[i]==0) break;
s[i-1]++;
 
if(s[0]!='9')
{
for(j=i-1;j!=0;j--)
if(s[j]==':')
{
s[j]='0';
if(j-1>=0)
s[j-1]++;
}
if(s[0]==':')
{
s[0]='1';
s[1]='0';
}
for(j=0;j<=i;j++)
printf("%c",s[j]);
}
else
{
for(j=1,g=0;g<i;j++,g++)
s[j]=s[g];
s[i]++;
s[0]='1';
for(j=i;j!=0;j--)
if(s[j]==':')
{
s[j]='0';
s[j-1]++;
}
s[0]--;
for(j=0;j<=i;j++)
printf("%c",s[j]);
}
getch();
return 0;
}


Похожие ответы
  1. Пишу в эту тему, потому что хочется поучить аппаратное прерывание на си (пусть даже это будет ассемблерная вставка для получения прерывания), си кажется может подключать ассемблерный код. Вопрос вот какой, не могу понять по хорошему - что такое аппаратное прерывание. Драйвер ядра сразу исключаю, так как при ближнем рассмотрении это просто распараллеливание прерывания между многоядерными процессорами в ПК (Система с APIC состоит из локальных контроллеров, установленных в процессорах) В литератре пишут, что аппаратное прерывание является асинхронным, так как имеет свой контроллер прерывания и даже не один, а 2 и больше. Но если рассмотреть работу аппаратного прерывания ближе к железу, то выясняется что прерывание это изменение физического сигнала с 0 на 1 на входе контроллера прерывания ПК (1) и записывается оно в 3 регистра 8 битных IRR,IMR,ISR далее из процессора должен прийти сигнал подтверждения получения прерывания(2), при этом высокий уровень прерывания на контроллере должен все еще присутствовать(1). Таким образом получается, что аппаратное прерывание это 1 бит "лог.1" на входе контроллера прерываний и процессор с какой то своей (очень быстрой, но все же цикличностью) опрашивает эти 3 регистра (или один из них, что не так важно) и получается что аппаратное прерывание, это самый настоящий синхронный режим, но очень быстрый - отсюда возникает вопрос, с какой частотой опрашиваются эти 8 бит контроллера прерываний ( скорее всего очень быстро, но не чистый 0), сколько то микросекунд наверно все же есть и а вот сколько, кто нибудь может сказать? Или это можно получить только экспериментально, поставить MS-DOS 6.22 на современный многоядерный компьютер и попытаться считывать сигнал с любого аппаратного прерывания (lpt, com) - хотя на современном компьютере эти порты можно найти с большим трудом. Или же мои рассуждения не верны и я в чем то ошибаюсь, и аппаратное прерывание работает как то иначе?Добавлено через 1 минуту Да, еще - гуглом пользоваться умею, и по форуму искал "аппаратное прерывание" ответа на свои вопросы пока не нашел.

  1. ДД! Задали задачу и необходимо реализовать ее с помощью списка списков. С обычными списками я знаком, а вот что такое список списков? Спасибо

  1. Подскажите, пожалуйста, что значит %m в этом выражении? C1 massiv[i][j]=rand()%m

  1. Всем привет Уже 2 недели по немного изучаю С по книге Герберта Шилдта. Дошел до 48 страницы (из 800 всей книги) Все оказалось очень просто и понятно, раз в 20 проще чем веб язык PHP. Особенно про типы данных, видимости переменных и прочее, стандарт и историю С89. Правда тяжело вникать в философские термины, типа "модификатор", "квалификатор", "идентификатор", "атомарность" и прочие. Приходиться смотреть в энциклопедии что это такое. Но некоторые просто вообще не понять. Что такое тип данных volatile? Это, приблизительно "переменная не имеющая значения". Что это за ужасный бред создателей стандарта С89? Как это можно понять? То есть надо писать, если ф-я не возвращает значения, вот так:C1 2 3 4 void manual_function() {         printf("Response from manual function\n"); }почему нельзя вот так написать:C1 2 3 4 manual_function() {         printf("Response from manual function\n"); }без void? Это очень странно, как то? Это то же самое что выдавать паспорт человеку который ещё не родился. Как может быть переменная которая не имеет значения? Переменная всегда должна иметь значение. Не бывает переменных без значения. То есть:C1 void unsigned i;какая польза от ^ этой строчки? Где я могу использовать объявленную переменную i не имеющую значения? Это наверное любовь к порядку и полной ясности. - Далее на 47 странице идет объяснение квалификаторов const и volatile. С const все понятно, если есть в программе переменная, как блок не изменяемых данных, то добавляем const, сообщая компилятору что это константа. То есть квалификатор const не для программиста предназначен, а для компилятора. Тогда при компиляции программы, компилятор так собирает программу с учетом const что она становиться, как бы, более оптимизированной. Можно по-автомату везде по добавлять const во всех переменных если они не изменяются. И ещё const пишем для защиты данных на которые может ссылаться указатель в параметрах функции, что бы код в функции не смог внести изменения в аргумент который ей передается. Хотя не понять, если мне надо написать функцию что бы она не изменяла значение аргумента - то конечно напишу такую функцию, и мне не надо уточнять параметр функции квалификатором const, потому что она и так не будет изменять аргумент. Либо const это ещё от защиты от не внимательности программиста? Да, собственно вопрос о volatile. Согласно книге Шилдта "Квалификатор volatile сообщает компилятору, что значение переменной может изменятся не явно" Далее какое то не понятное объяснение применения квалификатора volatile. Как это, "значение переменной может изменятся не явно"? Её что духи могут изменять которые в оперативной памяти находятся? (шутка) Если есть переменная то должно быть её значение, то есть должно быть использование оператора "=" присваивания и ей должно присваиваться значение, как правильно сказать явно. Просьба помочь с пониманием этих штук в С void и volatile. Это наверное самое не понятное что есть в С. Эти штуки как то связаны с компилятором языка, и может быть можно сильно не вникать в их суть. Далее в книге ещё идет объяснение спецификаторов хранения: extern, static, register, auto. Это тоже как то не понятно. А с остальным мне кажется можно разобраться, с указателями и массивами в С. Спасибо.

  1. Здравствуйте. Пытаюсь понять правильно ли вместилась эта картинка в мою голову? mass это адрес который указывает на массив указателей , которые указывают на другие массивы указателей , которые уже указывают на какие-нибудь объекты? И чтобы передать такой масив в функцию в прототипе я должен указать **mass? а при самом вызове функции просто function(mass);?

  1. C++1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); { float M,F,n; printf("BBeDuTe M"); scanf("%f,&M"); n=100; for(int i=0;i

  1. Доброе время суток! В процессе написания практики возникла проблема с 1 задачей.Сразу уточню,что я не настолько наглая,чтоб просить от вас готовый код,я прошу только подсказать каким способом ее решать,а то у меня затор,идей нет абсолютно. Итак ,условие. Найти такое натуральное число,посл. цифра которого 5,чтоб при умножение его на 5 получить новое число,которое при вычеркиваение в нем последней цифры и приписывание ее в начало ,будет равно данному. Хоть какие-то идеи подайте) P.S.:Переводила условие с украинского.

  1. Ребят, не могу понять что такое массив поможете ? (P.S)Желательно с примером

  1. Для заданной матрицы размера NхN найти такое k, что k-я строка матрицы совпадает с k-м столбцом. Найти сумму элементов в тех строках, содержащих хотя бы один отрицательный элемент. Нужно решить самым элементарным способом... буду рада любой подсказке!