Циклы (игра "Угадайка"+for)
Циклы (игра "Угадайка")
- Программа должна считать количество попыток, которое потребовалось пользователю, чтобы угадать число. И в конце сообщать, сколько было попыток.
- Программа должна загадывать число не из отрезка [1;10], а целое число из отрезка от [10;10], исключая ноль. При этом, постарайтесь, чтобы распределение случайных чисел генерируемых программой было равномерных (т. е. в случае выпадения нуля его нельзя просто заменить на какое-то другое число, например, на 1, ведь тогда 1 будет выпадать с вдвое большей вероятностью, чем остальные числа).
- Программа должна подсказывать пользователю, что он ошибся в знаке, если программа загадала положительное число, а пользователь ввёл отрицательное. И наоборот
import java.util.Scanner; public class one { public static void main(String[] args) { // prog — число заданное программой // user — число введённое пользователем String znak; int prog,user,i; // Генерируем случайное целое число от 1 до 10 do { prog = (int)(Math.random()*20 - 10); } while(prog == 0); System.out.println("Programma zagadala chislo "); i = 0; user = 0; do { i++; System.out.print("\nVvedite svoje chislo: "); Scanner input = new Scanner(System.in); if(input.hasNextInt()) { user = input.nextInt(); if(user == prog) { System.out.println("Vi ugadali!!! Chislo popitok - "+i); } else { if (user <= 10 && user >= -10 && user != 0) { System.out.println("Vi ne ugadali:"); if(user>0&&prog<0) { System.out.println("=> Podskazka: Vvedite otritsateljnoje chislo"); } else if(user<0&&prog>0) { System.out.println("=> Podskazka: Vvedite polojitelnoje chislo"); } if(prog < user) { System.out.println("=> Podskazka: Vozjmite chislo menjshe"); } else { System.out.println("=> Podskazka: Vozjmite chislo bolshe"); } } else { System.out.println("Vi vveli nepravilnoje chislo"); } } } else { System.out.println("Vi vveli ne to chislo ili bukvy"); } } while(user != prog); System.out.println("Do svidanja!"); } }
Циклы (for)
1. Задание
Создайте программу, выводящую на экран все четырёхзначные числа последовательности 1000 1003 1006 1009 1012 1015 ….
public class one { public static void main(String[] args) { for(int i=1000; i<=10000; i = i+3) { System.out.print(i+" "); } } }
2. Задание
Создайте программу, выводящую на экран первые 55 элементов последовательности 1 3 5 7 9 11 13 15 17 ….
public class two { public static void main(String[] args) { for(int i=0, a=1; i<55; a = a+2, i++) { System.out.print(a+" "); } } }
3. Задание
Создайте программу, выводящую на экран все неотрицательные элементы последовательности 90 85 80 75 70 65 60 ….
public class three { public static void main(String[] args) { for(int i=90; i>=0; i=i-5) { System.out.print(i+" "); } } }
4. Задание
Создайте программу, выводящую на экран первые 20 элементов последовательности 2 4 8 16 32 64 128 ….
public class four { public static void main(String[] args) { for(int i = 0, a = 2; i<=20; a = a*2, i++) { System.out.print(a+" "); } } }
5. Задание
Выведите на экран все члены последовательности 2an-1–1, где a1=2, которые меньше 10000.
public class five { public static void main(String[] args) { for(int a = 2; a<=10000; a=a*2-1) { System.out.print(a+" "); } } }
6. Задание
Выведите на экран все двузначные члены последовательности 2an-1+200, где a1= –166.
public class six { public static void main(String[] args) { for(int a = -166; a<100; a=a*2+200) { if(a/100==0) { System.out.print(a+" "); } } } }
7. Задание
Создайте программу, вычисляющую факториал натурального числа n, которое пользователь введёт с клавиатуры.
import java.util.Scanner; public class seven { public static void main(String[] args) { int n,f; f = 1; Scanner sc = new Scanner(System.in); System.out.print("Vvedite chislo, kotoroje nado vozvesti v faktorial: "); if(sc.hasNextInt()) { n = sc.nextInt(); for(int i=1; i<=n; i++) { f = f*i; } System.out.println(n+"! = "+f); } else { System.out.println("Vi vveli chto-to ne to"); } } }
8. Задание
Выведите на экран все положительные делители натурального числа, введённого пользователем с клавиатуры.
import java.util.Scanner; public class eight { public static void main(String[] args) { int n; Scanner sc = new Scanner(System.in); System.out.print("Vvedite chislo: "); if(sc.hasNextInt()) { n = sc.nextInt(); for(int i=1;i<=n;i++) { if(n%i==0) { System.out.print(i+" "); } } } else { System.out.println("Vi vveli ne to chislo"); } } }
9. Задание
Проверьте, является ли введённое пользователем с клавиатуры натуральное число — простым. Постарайтесь не выполнять лишних действий (например, после того, как вы нашли хотя бы один нетривиальный делитель уже ясно, что число составное и проверку продолжать не нужно). Также учтите, что наименьший делитель натурального числа n, если он вообще имеется, обязательно располагается в отрезке [2; √n].
import java.util.Scanner; public class nine { public static void main(String[] args) { int n,k; boolean b; b = false; Scanner sc = new Scanner(System.in); System.out.print("Vvedite chislo: "); if(sc.hasNextInt()) { n = sc.nextInt(); for(int i=1; i<=Math.sqrt(n); i++) { if(n%i==0&&i>1) { b = true; break; } } if(b) { System.out.println("Chislo "+n+" ne prostoje, tak kak u nego est otlichnij ot nulja delitel "); } else { System.out.println("Chislo "+n+" prostoje, tak kak delitsa toljko na edinitsu i na samo sebja"); } } else { System.out.println("Vi vveli nepraviljnoje chislo"); } } }
10. Задание
Создайте программу, выводящую на экран 12 первых элементов последовательности 2an-2–2, где a1=3 и a2=2.
public class ten { public static void main(String[] args) { for(int i=1, a1 = 3, a2 = 2; i<=12; i++) { if(i%2==0) { a2 = a2*2-2; System.out.print(a1+" "); } else { a1 = a1*2-2; System.out.print(a2+" "); } } } }
11. Задание
Выведите на экран первые 11 членов последовательности Фибоначчи. Напоминаем, что первый и второй члены последовательности равны единицам, а каждый следующий — сумме двух предыдущих.
public class eleven { public static void main(String[] args) { int n1 = 1,n2 = 1,s = 0; for(int i = 0; i<11; i++){ if(i%2==0) { n1 = n1+n2; System.out.print(n1+" "); } else { n2 = n1+n2; System.out.print(n2+" "); } } } }
12. Задание
Для введённого пользователем с клавиатуры натурального числа посчитайте сумму всех его цифр (заранее не известно сколько цифр будет в числе).
import java.util.Scanner; public class twelve { public static void main(String[] args) { int n,s,i,b; Scanner sc = new Scanner(System.in); System.out.print("Vvedite chislo: "); if(sc.hasNextInt()) { n = sc.nextInt(); b = n; s = 0; i = 0; while(n!=0) { s = s+n%10; n = n/10; i++; } System.out.println("Summa sifr chisla "+b+" = "+s+", a kolichestvo sifr v nem: "+i); } else { System.out.println("Vi vveli nepravilnoje chislo"); } } }
13. Задание
В городе N проезд в трамвае осуществляется по бумажным отрывным билетам. Каждую неделю трамвайное депо заказывает в местной типографии рулон билетов с номерами от 000001 до 999999. «Счастливым» считается билетик у которого сумма первых трёх цифр номера равна сумме последних трёх цифр, как, например, в билетах с номерами 003102 или 567576. Трамвайное депо решило подарить сувенир обладателю каждого счастливого билета и теперь раздумывает, как много сувениров потребуется. С помощью программы подсчитайте сколько счастливых билетов в одном рулоне?
public class thirteen { public static void main(String[] args) { int d,o,m,j,s1,s2,f;//ot 1000 do 999999 j = 0; for(int i=3000; i<=999999; i++) { m = i/1000; s1 = 0; s2 = 0; while(m!=0) { s1 = s1+m%10; m = m/10; } m = i%1000; while(m!=0) { s2 = s2+m%10; m = m/10; } if(s1==s2) { j++; } } System.out.println("Trebujetsa kolihestvo suvenirov: "+j); } }
14. Задание
В городе N есть большой склад на котором существует 50000 различных полок. Для удобства работников руководство склада решило заказать для каждой полки табличку с номером от 00001 до 50000 в местной типографии, но когда таблички напечатали, оказалось что печатный станок из-за неисправности не печатал цифру 2, поэтому все таблички, в номерах которых содержалась одна или более двойка (например, 00002 или 20202) — надо перепечатывать. Напишите программу, которая подсчитает сколько всего таких ошибочных табличек оказалось в бракованной партии.
public class fourteen { public static void main(String[] args) { int f,j,k; j = 0; for(int i=1; i<=50000; i++) { k = i; f = 0; while(k!=0) { if(k%10==2) { f = 1; break; } k = k/10; } if(f == 0) { j++; } } System.out.println("Oshibochnih tablichek: "+j); } }
15. Задание
Электронные часы показывают время в формате от 00:00 до 23:59. Подсчитать сколько раз за сутки случается так, что слева от двоеточия показывается симметричная комбинация для той, что справа от двоеточия (например, 02:20, 11:11 или 15:51).
public class fiveteen { public static void main(String[] args) { int hours,minutes,h1,h2,m1,m2,j; hours = 0; minutes = 0; j = 0; while(hours<24) { h1 = hours/10; h2 = hours%10; m1 = minutes/10; m2 = minutes%10; if(h1==m1&&h2==m2) { j++; } minutes++; if(minutes==60) { minutes = 0; hours++; } } System.out.println("Simmetrichnih combinatsij: "+j); } }
16. Задание
В американской армии считается несчастливым число 13, а в японской — 4. Перед международными учениями штаб российской армии решил исключить номера боевой техники, содержащие числа 4 или 13 (например, 40123, 13313, 12345 или 13040), чтобы не смущать иностранных коллег. Если в распоряжении армии имеется 100 тыс. единиц боевой техники и каждая боевая машина имеет номер от 00001 до 99999, то сколько всего номеров придётся исключить?
public class sixteen { public static void main(String[] args) { int n,j; j = 0; for(int i=1; i<100000; i++){ n = i; while(n!=0){ if(n%10==4||n%100+10*n%10==13) { j++; break; } n = n/10; } } System.out.println("Iscluchit nomerov: "+j); } }
|