Хорошо.Вот краткий обзор вашего кода.Комментарии встроены.
#include<stdio.h>
Оставьте пробел между #include
и <stdio.h>
.
#include<conio.h>
Это нестандартный заголовок только для Windows, который вам не нужен.Не включайте это.
#include<math.h>
#include<string.h>
Снова используйте пробел при включении ваших заголовков.
void main(void)
Хотя это допустимо, чаще встречается поиск подписи int main(int argc, char* argv[])
в качестве подписи для основной функции.Я бы посоветовал вам использовать эту подпись.
{
static int sum;
Почему вы делаете это статичным?Планируете ли вы повторно вызывать main и хотите, чтобы предыдущий результат для sum
сохранялся от одного вызова main к другому?Если нет, то не делайте его статичным.
int i,x,y,z;
char string[10];
Попробуйте выделить больше места для вашей строки.Десять символов довольно мало.Также рассмотрите возможность создания переменной, представляющей размер вашей строки, вместо использования магического числа, поскольку вам, вероятно, придется ссылаться на размер буфера в нескольких местах.
printf("Enter a string:\n");
gets(string);
Нет.Не делай этого !!! Функция получает серьезную уязвимость безопасности! .Это делает вашу программу восприимчивой к атакам переполнения буфера.Вместо этого используйте fgets и укажите размер буфера, который вы хотите заполнить, чтобы он не превышал ваш буфер.Вы никогда не должны использовать обычные get.
x=strlen(string);
Подумайте о выборе более описательного имени для x.Возможно len
.Совершенно нормально (и хорошо) создавать переменные, идентификаторы которых длиннее одной буквы.
for(i=0; ;i++)
{
if(string[i]=='\0')
{
break;
}
Подумайте о том, чтобы поместить условие завершения в цикл for;for(i = 0; string[i]!='\0'; i++)
.
y=pow(10,i);
z=string[x-i+1]*y;
Подсказка: есть более разумный способ сделать это, чем использовать pow.
sum+=z;
}
printf("%d",sum);
Ok.Вышеприведенное хорошо, хотя вы можете использовать «% d \ n».
getch();
Вы не должны делать это на всех системах.Вместо этого выполните:
#ifdef _WIN32
system("pause");
#endif
Если возможно, я бы посоветовал вам избежать этого странного паузы.Предположим, ваш профессор использует автоматизированный скрипт для проверки результатов вашей программы.Установка любой паузы в программе (даже в Windows) сломает такой скрипт.Если вы не хотите, чтобы окно терминала исчезало во время работы в Windows, вам следует вызвать вашу программу из командной строки.
}
Если вы измените подпись на что-то, возвращающее int, как я предлагал, тогдаВы хотите добавить оператор return 0;
до конца функции.