English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá a usar funções para resolver o mesmo problema de diferentes maneiras.
Abaixo está4um programa verifica se o inteiro fornecido pelo usuário é um número primo.
A saída de todos esses programas é a mesma, e em cada exemplo criamos uma função definida pelo usuário. Mas, na verdade, usamos métodos diferentes em cada exemplo.
#include <stdio.h> void checkPrimeNumber(); int main() { checkPrimeNumber(); //Nenhum parâmetro foi passado return 0; } //O tipo de retorno é void, o que significa que não retorna nenhum valor void checkPrimeNumber() { int n, i, flag = 0; printf("Insira um número inteiro positivo: "); scanf("%d", &n); for(i=2; i <= n/2; ++i) { if(n % i == 0) { flag = 1; } } if (flag == 1) printf("%d não é um número primo.", n); else printf("%d é um número primo.", n); }
A função checkPrimeNumber() recebe a entrada do usuário, verifica se é um número primo e o exibe na tela.
Os parênteses vazios dentro de checkPrimeNumber(); na função main() indicam que não há parâmetros passados para a função.
O tipo de retorno da função é void. Portanto, a função não retorna nenhum valor.
#include <stdio.h> int getInteger(); int main() { int n, i, flag = 0; //Nenhum parâmetro foi passado n = getInteger(); for(i=2; i <= n/2; ++i) { if(n % i == 0){ flag = 1; break; } } if (flag == 1) printf("%d não é um número primo.", n); else printf("%d é um número primo.", n); return 0; } //Retorna o inteiro fornecido pelo usuário int getInteger() { int n; printf("Insira um número inteiro positivo: "); scanf("%d", &n); return n; }
n = getInteger(); os parênteses vazios na declaração da função indicam que não há parâmetros passados para a função. E o valor retornado pela função será atribuído a n.
Aqui, a função getInteger() obtém a entrada do usuário e retorna. Dentro da função main(), há código para verificar se o número é primo.
#include <stdio.h> void checkPrimeAndDisplay(int n); int main() { int n; printf("Insira um número inteiro positivo: "); scanf("%d", &n); // n é passado para a função checkPrimeAndDisplay(n); return 0; } //O tipo de retorno é void, o que significa que não retorna nenhum valor void checkPrimeAndDisplay(int n) { int i, flag = 0; for(i=2; i <= n/2; ++i) { if(n % i == 0){ flag = 1; break; } } if (flag == 1) printf("%d não é um número primo.", n); else printf("%d é um número primo.", n); }
O valor inteiro introduzido pelo usuário será passado para a função checkPrimeAndDisplay().
Aqui, a função checkPrimeAndDisplay() verifica se o parâmetro passado é um número primo e exibe uma mensagem apropriada.
#include <stdio.h> int checkPrimeNumber(int n); int main() { int n, flag; printf("Insira um número inteiro positivo: "); scanf("%d", &n); //n é passado para a função checkPrimeNumber() //O valor retornado é atribuído à variável flag flag = checkPrimeNumber(n); if (flag == 1) printf("%d não é um número primo.", n); else printf("%d é um número primo.", n); return 0; } //Retorna int da função int checkPrimeNumber(int n) { int i; for(i=2; i <= n/2; ++i) { if(n % i == 0) return 1; } return 0; }
A entrada do usuário será passada para a função checkPrimeNumber().
A função checkPrimeNumber() verifica se o parâmetro passado é um número primo.
Se o parâmetro passado for um número primo, a função retornará 0. Se o parâmetro passado não for um número primo, a função retornará1O valor retornado será atribuído à variável flag.
De acordo com o flag ser 0 ou1A função main() imprimirá uma mensagem apropriada.
Bem, isso depende do problema que você quer resolver. Neste caso, passar parâmetros e retornar valores da função é melhor (exemplo4)。
A função deve executar uma tarefa específica. A função checkPrimeNumber() não aceita entrada do usuário nem exibe mensagens apropriadas. Ela verifica apenas se o número é primo.