2016年2月3日水曜日

C言語:関数


問題1.
キーボードから正の整数を1つ入力し、それが偶数か奇数かを判断し、偶数なら
    "今入力した整数~は偶数である"
と出力し、奇数の場合も同じように出力するプログラムを関数を用いて作成。
偶数・奇数の判断は関数で行い、入出力はmainで行う。

問題2.
下記のプログラムの*で囲った部分を関数とするプログラムに書き換え。
[プログラム説明]
1~100までの間のすべての素数を求めるプログラム
#define MAX_LENGTH 100
int main(){
    int a[MAX_LENGTH+1], i, n, k;

    for(i=0; i<=MAX_LENGTH; i++)
        a[i] = i;

    n = sqrt(100.0);
*************************************************
    for(k=2; k<=n; k++){
        if(a[k] == 0)
            continue;
        for(i=k*2; i<=MAX_LENGTH; i=i+k)
            a[i] = 0;
    }
*************************************************
    printf("1から100までの素数は以下の通り\n");

    for(i=1; i<=MAX_LENGTH; i++)
        if(a[i] != 0)

    printf("%d ", a[i]);
    printf("\n");
}

問題1のプログラム
int g(int),k(int);
int main(void){
  int x;
  printf("正の整数を入力してください。:");
  scanf("%d",&x);
  g(x);k(x);
  return 0;
}

int g(int s){
  if(s%2==0){
    printf("今入力した整数%dは偶数である。\n",s);
  }
}

int k(int t){
  if(t%2!=0){
    printf("今入力した整数%dは奇数である。\n",t);
  }
}

問題2のプログラム
#define MAX_LENGTH 100

int a[MAX_LENGTH+1], i, n, k;
int prime_num(int);
int main(){
    for(i=0; i<=MAX_LENGTH; i++)
        a[i] = i;

    n = sqrt(100.0);
    prime_num(n);
    printf("1から100までの素数は以下の通り\n");
    for(i=1; i<=MAX_LENGTH; i++)
        if(a[i] != 0)
    printf("%d ", a[i]);
    printf("\n");
}

int prime_num(int x)
{   for(k=2; k<=x; k++){
        if(a[k] == 0)
            continue;
        for(i=k*2; i<=MAX_LENGTH; i=i+k)
            a[i] = 0;
    }
}

0 件のコメント:

コメントを投稿