1) Максимум и минимум
Необходимо найти максимальный и минимальный элемент последовательности, неизвестной длины.
Входные данные:
Последовательность целых чисел, оканчивающаяся нулём. Само число нуль не является членом последовательности, а является лишь сигналом того, что достигнут конец последовательности. В последовательности есть как минимум одно ненулевое число.
Выходные данные:
Вывести два целых числа M и m, где M - максимальный элемент последовательности, m - минимальный элемент последовательности.
Sample Input:
123 443 652 828 2 4212 0
Sample Output:
4212 2
Мое решение:
#include
int main() {
int n=-1, M=0, m;
while(n){
scanf("%d",&n);
if(n>M){
M=n;
}else{
m=n;
}
}
printf("%d %d",M,m);
return 0;
}
2)Точные квадраты
Выведите на экран все точные квадраты натуральных чисел, не превосходящие данного числа N. Выводить квадраты следует от меньшего к большему.
Входные данные:
Одно целое число N. (1≤N≤10000)
Выходные данные:
Квадраты натуральных чисел, записанные через пробел.
Sample Input 1:
50
Sample Output 1:
1 4 9 16 25 36 49
Мое решение:
#include
int main() {
int n,res, k=1;
scanf("%d",&n);
while(res<=n){
res=k*k;
k+=1;
printf("%d ",res);
}
return 0;
}
3)Степень двойки
По данном числу N определить, является ли оно степенью числа 2.
Входные данные:
Одно целое неотрицательное число N.
Выходные данные:
YES -- если число N является степенью двойки, и NO в противном случае.
Sample Input:
128
Sample Output:
YES
Мое решение:
#include
#include
int main() {
int N,two,step;
scanf("%d",&N);
N=pow(two,step);
do{
if(two==2){
step+=1;
printf("YES");
}else{
printf("NO");
}
}while(N>0);
return 0;
}
4) Количество цифр
Подсчитать количество цифр в записи натурального числа N.
Входные данные:
Одно натуральное число N.
Выходные данные:
Одно целое число k -- количество цифр в записи числа N.
Sample Input:
12938
Sample Output:
5
Другие языки программирования и технологии
помогите решить задачи по Си. 2 неделю с ними бьюсь. выкладываю свое решение. скажите просто что не правильно
1. Если число не является максимумом, оно не обязано быть минимумом.
scanf("%d", &cur);
min = cur;
max = cur;
do {
if (cur < min) { min = cur; }
if (cur > max) { max = cur; }
scanf("%d", &cur);
} while(cur);
2. Ты забыл присвоить res начальное значение:
int n,res=1, k=1;
3. Число n является точной степенью двойки, если n & (n - 1) == 0 - циклы вообще не нужны.
4. Кол-во цифр в натуральном (т. е. целое больше 0) числе n равно floor(log10(n)) + 1 - безо всяких циклов. Чтобы не нарваться на точность вычисления логарифма, добавим 0.5:
floor(log10(n + 0.5)) + 1
scanf("%d", &cur);
min = cur;
max = cur;
do {
if (cur < min) { min = cur; }
if (cur > max) { max = cur; }
scanf("%d", &cur);
} while(cur);
2. Ты забыл присвоить res начальное значение:
int n,res=1, k=1;
3. Число n является точной степенью двойки, если n & (n - 1) == 0 - циклы вообще не нужны.
4. Кол-во цифр в натуральном (т. е. целое больше 0) числе n равно floor(log10(n)) + 1 - безо всяких циклов. Чтобы не нарваться на точность вычисления логарифма, добавим 0.5:
floor(log10(n + 0.5)) + 1
Руслан Курманов
вся суть задач в том что надо все это на циклах решить. жаль что не написал это
Руслан Курманов
вторая задача. тоже. не в начальном значении проблема. а в чем то в дрругом.. в степике это задача https://stepik.org/lesson/64123/step/7?unit=41087 он у меня выводит еще 64 после 49.
Лучше всего эти программы прогнать под отладчиком по шагам, тогда самому станет ясно, почему они работают не так, как хотелось.
Первая программа максимум ищет правильно, но:
1. проверку на ноль надо ставить сразу после ввода, чтобы не затирать нулем максимальные и минимальные значения;
2. проверку на минимальное значение надо делать отдельно, не всякое число, меньшее максимального, является минимальным.
3. начальные значения максимального числа лучше указать через INT_MIN, минимального - через INT_MAX, потому что максимальное из отрицательных чисел будет отрицательным числом, а не нулем, с минимальным - та же история:
#include "limits.h"
...
int n=-1, M=INT_MIN, m=INT_MAX;
Первая программа максимум ищет правильно, но:
1. проверку на ноль надо ставить сразу после ввода, чтобы не затирать нулем максимальные и минимальные значения;
2. проверку на минимальное значение надо делать отдельно, не всякое число, меньшее максимального, является минимальным.
3. начальные значения максимального числа лучше указать через INT_MIN, минимального - через INT_MAX, потому что максимальное из отрицательных чисел будет отрицательным числом, а не нулем, с минимальным - та же история:
#include "limits.h"
...
int n=-1, M=INT_MIN, m=INT_MAX;
Денис Акмалов
Начальные значения абсолютного мин и Макс это первый элемент и если второй больше, то абсолютно Макс он, а если меньше, то присвоит абсолютно миним второму. Третий снова сравнивать с абсолютно найденными. Надо попробовать если время будет
Руслан Курманов
если честно я не знаю еще как с откладчиком работать
Первое задание - известен минимум!? Одно число и null. А максимум? То есть максимум это максимальное значение типа данных int для границы массива
Александр Логинов
Если массив правда состоит из одного элемента и ограничителя, то этот элемент максимум и минимум одновременно
Похожие вопросы
- Помогите решить задачи на Си! Пожалуйста!!!
- ПОМОГИТЕ РЕШИТЬ задачи по Си
- помогите решить задачу по Си
- Помогите решить задачу на си++
- Помогите решить задачу на Pascal 2- масив
- Помогите с задаче в СИ
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Помогите решить задачу решение на Паскале
- Помогите решить задачу на Турбо паскале
- Помогите решить задачу.