Instrukcje sterujące - kilka zagadnień

0

Cześć, mam problem z kilkoma zagadnieniami, których nie potrafię zrozumieć

1.Co wypisze program

#include <stdio.h> 
int main(void) 
{ 
int n=10, p=5, q=10, r; 
r = n==(q=p); 
printf("A: n=%d p=%d q=%d" r=%d\ n", n, p, q, r); 
n = p = q = r = 5; 
n += p += q; 
printf("B: n=%d p=%d q=%d\ n", n, p, q); 
q = n<p ? n++: p++; 
printf("C: n=%d p=%d q=%d\ n", n, p, q); 
q = n>p ? n++: p++; 
printf("D: n=%d p=%d q=%d\ n", n, p, q); 
return 0;
} 
  1. Co wypisze program
#include <stdio.h> 
main() 
{ 
int n, p, q; 
n = 5; p = 2; 
q = n++ > p || p++ !=3; /* E:wypisz n, p, q */ 
n = 5; p = 2; 
q = n++ <p || p++ !=3; /* F: wypisz n, p, q */ 
n = 5; p = 2; 
q = ++n == 3 && ++p = = 3; /* G: wypisz n, p, q */ 
n = 5; p = 2; 
q = ++n == 6 && ++p = = 3; /* H: wypisz n, p, q */ 
} 

Proszę też o podpowiedź w zrealizowaniu :

Wypisz na ekranie wszystkie liczby podzielne przez 3 z przedziału od 0 do 100 i policz ile ich jest.

Wykorzystując funkcję rand() wylosuj 20 liczb pseudolosowych z przedziału od 118 do 286. Wypisz na ekran najmniejszą i największą oraz średnią arytmetyczną z wylosowanych liczb.

2
  1. Nic nie wypisze, bo się nie skompiluje.
  2. Ten program nic nie wypisuje.
  3. protip: pętla krokowa, a w niej krok co 3 (i += 3)
  4. modulo i dodawanie, do tego średnia. Szukanie najmniejszej i największej machniesz jedną pętlą używając operatorów < i >
0

Dzięki, mam jeszcze takie pytanka:

  1. Dlaczego się nie skompiluje ? Właśnie coś czułem że jest nie tak.

  2. Ok rozumiem, a jakiś pomysł jak policzyć ilość wyników wypisanych na ekran? Myslałem zeby wyniki wypisać do tablicy a potem wypisać ile elementów ma tablica.

0
  1. Policz analitycznie lub zliczaj w pętli licznikiem
1

nie skompiluje się bo masz cudzysłowy w złych miejscach/ilości i np jedno wywołanie funkcje jest rozpoznawane u ciebie jako tekst, bo jest w cudzysłowie

0

Dokładnie rzecz ujmując nie skompiluje się, ponieważ:

prog.c: In function 'main':
prog.c:6:28: error: expected ')' before 'r'
 printf("A: n=%d p=%d q=%d" r=%d\ n", n, p, q, r); 
                            ^
prog.c:6:28: error: stray '\' in program
prog.c:6:35: warning: missing terminating " character
 printf("A: n=%d p=%d q=%d" r=%d\ n", n, p, q, r); 
                                   ^
prog.c:6:28: error: missing terminating " character
 printf("A: n=%d p=%d q=%d" r=%d\ n", n, p, q, r); 
                            ^
prog.c:9:8: warning: unknown escape sequence: '\040'
 printf("B: n=%d p=%d q=%d\ n", n, p, q); 
        ^
prog.c:11:8: warning: unknown escape sequence: '\040'
 printf("C: n=%d p=%d q=%d\ n", n, p, q); 
        ^
prog.c:13:8: warning: unknown escape sequence: '\040'
 printf("D: n=%d p=%d q=%d\ n", n, p, q); 
        ^
prog.c:6:8: warning: format '%d' expects a matching 'int' argument [-Wformat=]
 printf("A: n=%d p=%d q=%d" r=%d\ n", n, p, q, r); 
        ^
prog.c:6:8: warning: format '%d' expects a matching 'int' argument [-Wformat=]
prog.c:6:8: warning: format '%d' expects a matching 'int' argument [-Wformat=]
prog.c:15:1: error: expected ';' before '}' token
 } 
 ^
prog.c:4:22: warning: variable 'r' set but not used [-Wunused-but-set-variable]
 int n=10, p=5, q=10, r; 
0

To nie jest mój program, gdzieś go znalazłem i zupełnie nie wiem o co autorowi chodziło także dlatego pytam.

A mając takie zagadnienie " Napisz program, który wypisze na ekran wszystkie liczby pierwsze z przedziału od 0 do 100. " mogę je tak rozwiązać :

 #include <stdio.h>
#include <math.h>

int main()
{
int i=0;
int licz=0;
for (i=0;i<=100;i++)
{
	int j=0;
	if (i<2)
	{	
		licz++;
		printf("%d, ",i);
		continue;
	}
	double pom=i;
	double pierw=sqrt(pom);
	char pierwsza=1;
	for (j=2;j<=pierw;j++)
	{
		if ((i%j)==0)
		{
			pierwsza=0;
			break;
		}
	}
	if (pierwsza==1)
	{
		printf("%d, ",i);
		licz++;
	}
}
printf("\nIlosc liczb pierwszych: %d \n",licz);
}
2

Lepiej użyj sita Erastotenesa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1