2014-09-18 3 views
-1

Я новичок в программировании, и у меня есть мое первое задание. Назначение - это преобразование десятичного ввода в десятичное и шестнадцатеричное. Если i fx type 15 (input), я должен получить 15 и F в качестве вывода. Я не собираюсь создавать программу с нуля. Мой учитель дал мне шаблон в Atmel Studio (шаблон называется BasicIO, если я правильно помню). Это то, что я сделал до сих пор:Десятичный шестнадцатеричный конвертер

#define F_CPU 16000000UL 

#include <stdio.h> 
#include <avr/io.h> 
#include <util/delay.h> 
#include "usart.h" 

int main(void) {  

    uart_init(); // open the communication to the microcontroller 
    io_redirect(); // redirect input and output to the uart 

    int input=0; 

    while(1) { 
     printf("Input a number\n"); 
     scanf("%d %x", &input, &input); 
     printf("You wrote %d\n", input);   
    } 

    return 0; 
} 

Там нет ошибок при составлении программы, но я никогда не понятный выхода, whenenver я типа что-то Может кто-нибудь увидеть причину этого.? Что я должен изменить?

Это, конечно, программирование на языке C, и я использую Atmel Studio для запуска программы и запуска ее в Realterm с помощью Arduino.

PS: Как я уже сказал, это был шаблон. Единственное, что я добавил, это входы% d,% x и &, где я думал, что они принадлежат.

+2

Вы, кажется, принимая два входа и один выход возвращения. Не хотите ли вы взять один вход (десятичное число) и вернуть два выхода (десятичный + шестнадцатеричный номер)? –

+0

Да, это именно то, что я хочу сделать! Но как мне переставить переменные тогда, чтобы получить 2 выхода с 1 входа? – Gandhara

ответ

1

Вместо

scanf("%d %x", &input, &input); 
    printf("You wrote %d\n", input); 

вам нужно

scanf("%d", &input); // Read one number 
    printf("You wrote %d %x\n", input, input); // Write it out in decimal and hex. 
+0

Теперь он отлично работает! Большое спасибо, Саху! Но что-то еще, что меня смущает об этом шаблоне, о котором мой учитель не рассказывал, - это значение #define F_CPU 16000000UL и while (1). Какова их цель? – Gandhara

+0

И почему входной набор равен целому числу, равному нулю? – Gandhara

+0

Цель строки '#define F_CPU' не ясна из опубликованного кода. Возможно, он используется в некоторых файлах .h, которые вы включаете. Оператор 'while (1)' сохраняет программу навсегда, если не прерывается каким-либо сигналом. –

Смежные вопросы