Dinesh Sahoo Ответов: 3

Найдите квадрат первых n нечетных чисел с помощью аргумента командной строки


<pre>#include<stdio.h>
#include<conio.h>
void main(int argc,char *argv[])
{
int a;
a=atoi(argv[1]);
sq(a);

}
void sq(int a)
{
    int sqr,i;
    for(i=1;i<a;i++)
    {
        if(a%2!=0)
        {
            sqr=a*a;
        }
    }
    printf("square of %d ",sqr);
}


Что я уже пробовал:

#include<stdio.h>
#include<conio.h>
void main(int argc,char *argv[])
{
int a;
a=atoi(argv[1]);
sq(a);

}
void sq(int a)
{
    int sqr,i;
    for(i=1;i<a;i++)
    {
        if(a%2!=0)
        {
            sqr=a*a;
        }
    }
    printf("square of %d ",sqr);
}

Patrice T

У вас есть проблема или вопрос?

3 Ответов

Рейтинг:
2

Patrice T

Цитата:
первые n нечетных чисел с использованием аргумента командной строки

ваш код будет вычислять квадраты нечетных чисел < n, а не для первых n нечетных чисел.
если n равно 4, то первые n нечетных чисел равны 1, 3, 5, 7.


Рейтинг:
2

CPallini

Цитата:
для(i=1;i<a;i++)
{
если(a%2!=0)
{
кВ=а*а;
}
}
Как уже отмечали другие, вы возводите в квадрат неправильную переменную (и вы должны были немедленно напечатать результат возведения в квадрат).
Кроме того, обратите внимание: "нечетное" тестирование неэффективно, так как вы можете непосредственно производить нечетные числа:
for (i=1; i<(a*2); i+=2)
  printf("square of %d is %d\n", i, (i*i));


Рейтинг:
1

OriginalGriff

Посмотрите на свой код:

for(i=1;i<a;i++)
{
    if(a%2!=0)
    {
        sqr=a*a;
    }
}
printf("square of %d ",sqr);
После петли, sqr будет содержать:
1) неопределенное значение, если a это 1 или меньше. (Потому что петля не войдет)
2) неопределенное значение, если a is 2 (потому что он потерпит неудачу в if тест)
2) квадрат предельного числа a для любой другой ценности.

Если петля работает, и if вычисляется как true, значение sqr устанавливается на одно и то же значение каждый раз вокруг цикла и печатается только после завершения цикла.
Вероятно, вы хотели написать вот что:
for(i = 1; i < a; i++)
{
    if(i % 2 != 0)
    {
        printf("square of %d is %d ", i, i * i);
    }
}