Professional Documents
Culture Documents
@sharifjozve96 C Programming 92
@sharifjozve96 C Programming 92
ﺑﺴﻤﻪ ﺗﻌﺎﻟﻲ
: :
.3 31 4 '! ( ) *+ ,-. /0 '! ( ) 1 2 ! "#$ %& :
=>? "#$ 9 1 @ A .3#+ 6 ! '! +78 2 9 ! :; <$$ ! "#$ %& ( ) :
! ( ) *+ ,-. /0 2 " C +78 *+ A D : EFG 2 )2 1 +78 B ! '! ( ) *+
!' .3 31 4 7
B+ 9 B+ !6 2 L 2 $M: 3 N +OG PQF (4 J+G$ 9 ) H 9 :
. ( %&' '>+! >S C9 B+ 6 %!? ! R+ 1"! +OG .3 "#$ +OG
اﻟﻒx ++ 4 .
بx += 4 .
جx =+ 4 .
دx + 4 = x .
1
.3اﮔﺮ ﻫﻤﻪي ﻣﺘﻐﻴﺮﻫﺎي ﻣﻮﺟﻮد در ﻛﺪ زﻳﺮ ﻗﺒﻞ از اﺟﺮاي ﻛﺪ ﺑﺮاﺑﺮ 5ﺑﺎﺷﻨﺪ ،ﺧﺮوﺟﻲ ﭘﺲ از اﺟﺮاي ﻫﺮ ﻛﺪام از دﺳﺘﻮرات aو b
;b) q /= ++x
p = 25, x = 6 p = 25, x = 6 p = 25, x = 5 p = 25, x = 5
د. ج. ب. اﻟﻒ.
q = 0, x = 6 q = 1, x = 6 q = 1, x = 6 q = 0, x = 6
2
ﭼﻨﺪﺑﺎر در ﺧﺮوﺟﻲ ﭼﺎپ ﺧﻮاﻫﺪ ﺷﺪ؟x ﭘﻴﻐﺎم.6
int main()
{ 10 .اﻟﻒ
int x;
for(x = -1; x <= 10; x++) 11 .ب
{ ﺻﻔﺮ.ج
if(x < 5)
continue; 5 .د
else
break;
printf("x");
}
return 0;
}
ﺑﺎ اﺟﺮاي ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻛﺪام ﮔﺰﻳﻨﻪ در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد؟.7
int main()
{ 1 2 3 4 End .اﻟﻒ
int i;
i=1; 1234 .ب
while (i <= 10)
{ 1 2 3 4 6 7 8 9 10 End .ج
if (i == 5)
continue; 1 2 3 4 6 7 8 9 10 .د
printf("%d ", i);
i++;
}
printf("End");
return 0;
}
3
ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﻣﻘﺎﺑﻞ ﻛﺪام ﮔﺰﻳﻨﻪ ﺧﻮاﻫﺪ ﺑﻮد؟.9
void f1(int c)
{ 20 20 20 .اﻟﻒ
c = c * 2;
} 10 40 40 .ب
int main() 10 20 20 .ج
{
int a = 10; 10 10 10 .د
f1(a);
printf ("%d ", a);
if ( (a = 20) || (a == 30) || (a = 40))
printf ("%d ", a);
printf ("%d ", a);
return 0;
}
ﺧﺮوﺟﻲ ﻛﺪام ﮔﺰﻳﻨﻪ ﺧﻮاﻫﺪ ﺑﻮد؟، ﺑﻪ ﺑﺮﻧﺎﻣﻪ داده ﺷﻮد2 اﮔﺮ ورودي.10
int main()
{ 2 .اﻟﻒ
int i;
scanf ("%d", &i); 22 .ب
switch(i) 222 .ج
{
case 1: printf("%d ", i); 2222 .د
case 2: printf("%d ", i);
case 3: printf("%d ", i); break;
default: printf("%d ", i); break;
}
return 0;
}
4
ﺳﻮاﻻت ﺗﺸﺮﻳﺤﻲ ) 50ﻧﻤﺮه(
ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪاد ﺟﻤﻼت ﺳﺮي ﻓﻮق را ﺑﻪ ﻋﻨﻮان ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ از ورودي درﻳﺎﻓﺖ ﻛﺮده و ﻣﻘﺪار πرا ﺑﺎ اﺳﺘﻔﺎده از راﺑﻄﻪ
ﻓﻮق ﺣﺴﺎب ﻛﺮده و ﺑﻪ ﺗﺎﺑﻊ ﻓﺮاﺧﻮاﻧﻨﺪه ﺑﺮﮔﺮداﻧﺪ .ﭘﺎراﻣﺘﺮ ورودي )ﺗﻌﺪاد ﺟﻤﻼت ﺳﺮي( ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﺑﻴﻦ 5ﺗﺎ 50ﻣﻲﺑﺎﺷﺪ و اﮔﺮ
اﻳﻦ ﭘﺎراﻣﺘﺮ در ﻣﺤﺪوده ﺧﻮاﺳﺘﻪ ﺷﺪه ﻧﺒﻮد ،ﻣﻘﺪار -1را ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﺗﺎﺑﻊ در ﻧﻈﺮ ﺑﮕﻴﺮد.
ﺟﻮاب.
0ﻣﺮﺣﻠﻪ 1 2 3 4 5 6 7 ….
2ﺻﻮرت ﻛﺴﺮ = a 2 4 4 6 6 8 8 …
1ﻣﺨﺮج ﻛﺴﺮ = b 3 3 5 5 7 7 9 …
ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ ﺑﺎﻻ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ ﺻﻮرت در ﻣﺮاﺣﻞ زوج ﺑﺎ ﻋﺪد 2ﺟﻤﻊ ﺷﺪه اﺳﺖ و ﻣﺨﺮج در ﻣﺮاﺣﻞ ﻓﺮد ﺑﺎ ﻋﺪد 2ﺟﻤﻊ ﺷﺪه اﺳﺖ.
ﻟﺬا ﺧﻮاﻫﻴﻢ داﺷﺖ.
)(double f ﻧﻌﺮﻳﻒ درﺳﺖ ﺗﺎﺑﻊ 1ﻧﻤﺮه ﻣﺜﻼ ﺧﺮوﺟﻲ را ﺻﺤﻴﺢ ﻧﮕﻴﺮد //
{
;int n
;)scanf("%d", &n 1ﻧﻤﺮه ﺑﺮاي درﻳﺎﻓﺖ درﺳﺖ ﻋﺪد ﺻﺤﻴﺢ از ورودي //
;if (n < 5 || n > 50) return -1 2ﻧﻤﺮه //
;float a = 0, b= 1
;double sum = 0 ﺑﺎﻳﺪ اﻋﺸﺎري ﺑﺎﺷﺪ 1ﻧﻤﺮه //
;int c
)for (c = 0; c < n; c++ ﻧﻮﺷﺘﻦ ﻳﻚ ﺣﻠﻘﻪ ﺗﻜﺮار ﻣﻨﺎﺳﺐ و درﺳﺖ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ 5ﻧﻤﺮه //
{
;if (c%2) a += 2 3ﻧﻤﺮه ﺑﺮاي ﺗﻮﻟﻴﺪ ﺻﻮرت ﻛﺴﺮ //
;else b+= 2 3ﻧﻤﺮه ﺑﺮاي ﺗﻮﻟﻴﺪ ﻣﺨﺮج ﻛﺴﺮ //
ﺗﻘﺴﻴﻢ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت اﻋﺸﺎري ﺑﺎﺷﺪ ﻳﻌﻨﻲ اﮔﺮ ﺻﻮرت و ﻣﺨﺮج ﺻﺤﻴﺢ آﻧﮕﺎه ﺑﻨﻮﻳﺴﻴﻢ*/
;)sum += (1.0 * a / b
رﻋﺎﻳﺖ اﻳﻦ ﻧﻜﺘﻪ 2ﻧﻤﺮه ﺧﻮاﻫﺪ داﺷﺖ
*/
;)sum += (a/b
}
;sum *= 2 2ﻧﻤﺮه ﺑﺮاي دﻗﺖ داﻧﺸﺠﻮ ﺑﻪ ﺳﻮال و ﺿﺮب در ﻋﺪد //
;return sum
}
5
ﺳﻮال 15) .2ﻧﻤﺮه(
ﺗﺎﺑﻌﻲ ﺑﺎزﮔﺸﺘﻲ ﺑﻪ ﻧﺎم rec_powﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ ﺑﻪ ﻧﺎم yو ﻳﻚ ﻋﺪد doubleﺑﻪ ﻧﺎم xرا ﮔﺮﻓﺘﻪ و ﻣﻘﺪار xﺑﻪ
ﺗﻮان yرا ﺣﺴﺎب ﻛﻨﺪ.
ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل headerﺗﺎﺑﻊ ﺑﻪ ﺻﻮرت ) double rec_pow (double x, int yﺑﻮده و ﺑﻪ ازاء وروديﻫﺎي x=2.5و y=3
ﻣﻘﺪار 15.625ﺑﺮﮔﺸﺖ داده ﻣﻲﺷﻮد.
ﺟﻮاب.
)if (y == 0
;return 1
ﻳﺎ //
)if (y == 1
;return x
ﻗﺴﻤﺘﻲ ﻛﻪ داده ﻫﺎي ﻧﺎﻣﺮﺑﻮط را ورودي ﻣﻨﺎﺳﺐ ﺑﺮﮔﺮداﻧﺪ ) 1ﻧﻤﺮه( )ﻣﻤﻜﻦ اﺳﺖ ﺗﺎﺑﻊ ﺑﻪ ﮔﻮﻧﻪ اي ﻃﺮاﺣﻲ ﺷﺪه ﺑﺎﺷﺪ ﻛﻪ ﺑﺮاي ﺗﻮان ﻫﺎي ﻣﻨﻔﻲ ﺟﻮاب درﺳﺖ //
ﺑﺮﮔﺮداﻧﺪ وﻟﻲ ﺟﺰو ﻟﺰوﻣﺎت ﻣﺴﺌﻠﻪ ﻧﻴﺴﺖ(
ﻗﺴﻤﺘﻲ ﻛﻪ ﻓﺮاﺧﻮاﻧﻲ ﺑﺎزﮔﺸﺘﻲ اﻧﺠﺎم داده ﻣﻲ ﺷﻮد و داده ﻣﻨﺎﺳﺐ ﺑﺎزﮔﺸﺖ داده ﻣﻲ ﺷﻮد ) 9ﻧﻤﺮه( //
;)return x* rec_pow(x,y-1
}
ﺑﺮاي اﻳﻨﻜﻪ ﻛﺎﻣﻼً ﺗﺎﺑﻊ و ﻧﺤﻮ دﺳﺘﻮرات درﺳﺖ ﺑﺎﺷﻨﺪ 2) .ﻧﻤﺮه( //
6
ﺳﻮال 15) .3ﻧﻤﺮه(
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺨﺘﺼﺎت ﺳﻪ ﻧﻘﻄﻪ را از ورودي ﺑﮕﻴﺮد و ﺑﮕﻮﻳﺪ ﻛﻪ آن ﺳﻪ ﻧﻘﻄﻪ ﻫﻢﺧﻂ ﻫﺴﺘﻨﺪ ﻳﺎ ﻧﻪ .اﮔﺮ ﻫﻢ ﺧﻂ ﺑﻮدﻧﺪ،
ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ،ﻳﻚ ﻣﻌﺎدﻟﻪ ﺧﻂ ﺑﻪ ﺻﻮرت ax + by + c = 0ﺧﻮاﻫﺪ ﺑﻮد و اﮔﺮ ﻫﻢﺧﻂ ﻧﺒﻮدﻧﺪ ،ﺧﺮوﺟﻲ NOﺧﻮاﻫﺪ ﺑﻮد .ورودي ﺑﻪ
ﺻﻮرت ﺷﺶ ﻋﺪد اﻋﺸﺎري ﺧﻮاﻫﺪ ﺑﻮد ﻛﻪ ﻣﺨﺘﺼﺎت ﺳﻪ ﻧﻘﻄﻪ B ،Aو Cرا ﺑﻴﺎن ﻣﻲﻛﻨﺪ.
راﻫﻨﻤﺎﻳﻲ :ﺳﻪ ﻧﻘﻄﻪ ) B(x2, y2) ،A(x1, y1و ) C(x3, y3را ﻫﻢﺧﻂ ﮔﻮﻳﻨﺪ ﻫﺮﮔﺎه ﺷﻴﺐ دو ﺧﻂ ABو BCﺑﺎ ﻫﻢ ﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ .ﺷﻴﺐ ﺧﻂ
௬ ି௬
ABاز ﻓﺮﻣﻮل ݉ = ௫మ ି௫భﻗﺎﺑﻞ ﻣﺤﺎﺳﺒﻪ اﺳﺖ .ﻫﻤﭽﻨﻴﻦ ،ﻣﻌﺎدﻟﻪ ﺧﻂ ABﺑﻪ ﺻﻮرت ଵ ሻݔ −ݔଵ = ݉ሺݕ −ݕ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد.
మ భ
ﺟﻮاب.
)(int main
{
;float x1,x2,x3,y1,y2,y3 ﺗﻌﺮﻳﻒ 6ﻣﺘﻐﻴﺮ اﻋﺸﺎري )ﻧﺒﺎﻳﺪ از آراﻳﻪﻫﺎ اﺳﺘﻔﺎده ﺷﻮد( ) 2ﻧﻤﺮه( //
;float m1,m2
;)m1 = (y2-y1)/(x2-x1
;)m2 = (y3-y2)/(x3-x2
;return 0
}
7
ﺳﻮال - 4ﻣﺨﺼﻮص داﻧﺸﺠﻮﻳﺎن ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ و ﺑﺮق 20) .ﻧﻤﺮه(
ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺨﺘﺼﺎت دو ﻣﺴﺘﻄﻴﻞ را از ورودي ﮔﺮﻓﺘﻪ و ﻣﺴﺎﺣﺖ ﻧﺎﺣﻴﻪي ﻣﺸﺘﺮك ﺑﻴﻦ دو ﻣﺴﺘﻄﻴﻞ را ﺣﺴﺎب ﻛﻨﺪ .ﺑﻪ ازاء
ﻫﺮ ﻣﺴﺘﻄﻴﻞ دو ﻧﻘﻄﻪ )ﺟﻤﻌﺎً ﭼﻬﺎر ﻋﺪد اﻋﺸﺎري( ﺑﺎﻳﺪ ﮔﺮﻓﺘﻪ ﺷﻮد .ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮ ﻣﺴﺘﻄﻴﻞ ﺑﺎ اﺳﺘﻔﺎده از دو ﻧﻘﻄﻪ ،ﻣﻲﺗﻮاﻧﺪ ﺑﻪ
ﻳﻜﻲ از ﭼﻬﺎر ﻓﺮم زﻳﺮ ﻧﻤﺎﻳﺶ داده ﺷﻮد.
ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ ،ﻫﺪف از اﻳﻦ ﺳﻮال ﭘﻴﺪا ﻛﺮدن ﻧﺎﺣﻴﻪ ﭘﺮرﻧﮓ ﺑﻴﻦ دو ﻣﺴﺘﻄﻴﻞ زﻳﺮ ﻣﻲﺑﺎﺷﺪ .اﻟﺒﺘﻪ اﻳﻦ اﺣﺘﻤﺎل ﻫﻢ وﺟﻮد دارد ﻛﻪ
ﻧﺎﺣﻴﻪ ﻣﺸﺘﺮك وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ﻛﻪ در اﻳﻦ ﺻﻮرت ﻣﺴﺎﺣﺖ ﻧﺎﺣﻴﻪ ﻣﺸﺘﺮك ﺑﺮاﺑﺮ ﺻﻔﺮ ﺧﻮاﻫﺪ ﺑﻮد.
ﺟﻮاب.
)(int main
{
;)scanf("%f %f %f %f",&x1,&y1,&x2,&y2
;)scanf("%f %f %f %f",&x3,&y3,&x4,&y4
8
// rectangle1 change to first position
// ( ﻧﻤﺮه5) ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﺧﻮاﻧﺪه ﺷﺪه ﺑﺮاي ﻣﺴﺘﻄﻴﻞ اول ﺑﻪ ﻳﻜﻲ از ﭼﻬﺎر ﺣﺎﻟﺖ ﻓﻮق
if(x1>x2) {
temp=x1;
x1=x2;
x2=temp;
temp=y1;
y1=y2;
y2=temp;
}
if(y1>y2) {
temp=y1;
y1=y2;
y2=temp;
}
if(x3>x4) {
temp=x3;
x3=x4;
x4=temp;
temp=y3;
y3=y4;
y4=temp;
}
if(y3>y4) {
temp=y3;
y3=y4;
y4=temp;
}
9
//calculate y common space
// ( ﻧﻤﺮه2) ﭘﻴﺪا ﻛﺮدن ﻋﺮض ﻧﺎﺣﻴﻪ ﻣﺸﺘﺮك
printf("%f",x_length*y_length);
return 0;
}
10