amin sabet

امین ثابت اقدم

401655019


1

with function inside:(1a.c)

#include <stdio.h>
int what();
int main()
{
    
    int a,r;
    printf("please enter your number\n:");
    scanf("%d",&a);
    r=what(a);
    printf("%d",r);
}
int what(int a)
{
    if(a%3 == 0 || a%4 == 0)
        return 1;
    else
        return 0;
}

header of the function:(1a.h)

#include <stdio.h>
int what(int a)
{
    if(a%3 == 0 || a%4 == 0)
        return 1;
    else
        return 0;
}

code with header function: (1b.c)

#include <stdio.h>
#include "./1a.h"
int main()
{
    int i,r;
    for(i=1;i<1000;i++)
    {
        r=what(i);
        if(r==1)
            printf("%d,",i);
    }
    return 0;
}

out:

3,4,6,8,9,12,15,16,18,20,21,24,27,28,30,32,33,36,39,40,42,44,45,48,51,52,54,56,57,60,63,64,66,68,69,72,75,76,78,80,81,84,87,88,90,92,93,96,99,100,102,104,105,108,111,112,114,116,117,120,123,124,126,128,129,132,135,136,138,140,141,144,147,148,150,152,153,156,159,160,162,164,165,168,171,172,174,176,177,180,183,184,186,188,189,192,195,196,198,200,201,204,207,208,210,212,213,216,219,220,222,224,225,228,231,232,234,236,237,240,243,244,246,248,249,252,255,256,258,260,261,264,267,268,270,272,273,276,279,280,282,284,285,288,291,292,294,296,297,300,303,304,306,308,309,312,315,316,318,320,321,324,327,328,330,332,333,336,339,340,342,344,345,348,351,352,354,356,357,360,363,364,366,368,369,372,375,376,378,380,381,384,387,388,390,392,393,396,399,400,402,404,405,408,411,412,414,416,417,420,423,424,426,428,429,432,435,436,438,440,441,444,447,448,450,452,453,456,459,460,462,464,465,468,471,472,474,476,477,480,483,484,486,488,489,492,495,496,498,500,501,504,507,508,510,512,513,516,519,520,522,524,525,528,531,532,534,536,537,540,543,544,546,548,549,552,555,556,558,560,561,564,567,568,570,572,573,576,579,580,582,584,585,588,591,592,594,596,597,600,603,604,606,608,609,612,615,616,618,620,621,624,627,628,630,632,633,636,639,640,642,644,645,648,651,652,654,656,657,660,663,664,666,668,669,672,675,676,678,680,681,684,687,688,690,692,693,696,699,700,702,704,705,708,711,712,714,716,717,720,723,724,726,728,729,732,735,736,738,740,741,744,747,748,750,752,753,756,759,760,762,764,765,768,771,772,774,776,777,780,783,784,786,788,789,792,795,796,798,800,801,804,807,808,810,812,813,816,819,820,822,824,825,828,831,832,834,836,837,840,843,844,846,848,849,852,855,856,858,860,861,864,867,868,870,872,873,876,879,880,882,884,885,888,891,892,894,896,897,900,903,904,906,908,909,912,915,916,918,920,921,924,927,928,930,932,933,936,939,940,942,944,945,948,951,952,954,956,957,960,963,964,966,968,969,972,975,976,978,980,981,984,987,988,990,992,993,996,999,⏎ 

2 —- with function inside:(2a.c)

#include <stdio.h>
void mid();
int main()
{
    int f1,f2=-1,num;
    printf("please enter your number:\n");
    scanf("%d",&num);
    mid(num,&f1,&f2);
    printf("%d,%d",f1,f2);
}
void mid(int num, int* r1, int* r2)
{
    int l = 0;
    int t = num;
    while (t != 0) {
        l++;
        t /= 10;
    }
    int dv = 1,i;
    for (i = 0; i < l / 2; i++) {
        dv *= 10;
    }
    if (l % 2 == 0) {
        *r1 = (num / dv) % 10;
        *r2 = (num / (dv / 10)) % 10;
    } else {
        *r1 = (num / dv) % 10;
        *r2 = -1;
    }
}

header of the function:(2a.h)

#include <stdio.h>
void mid(int num, int* r1, int* r2)
{
    int l = 0;
    int t = num;
    while (t != 0) {
        l++;
        t /= 10;
    }
    int dv = 1,i;
    for (i = 0; i < l / 2; i++) {
        dv *= 10;
    }
    if (l % 2 == 0) {
        *r1 = (num / dv) % 10;
        *r2 = (num / (dv / 10)) % 10;
    } else {
        *r1 = (num / dv) % 10;
        *r2 = -1;
    }
}

code with header function: (1b.c)

#include <stdio.h>
#include "./2a.h" /*mid for this header*/
int main()
{
    int f1,f2=-1,num;
    printf("please enter your number( if one id -1, it means the number counts are odd, and theres only one number in the middle):\n");
    scanf("%d",&num);
    mid(num,&f1,&f2);
    printf("%d,%d",f1,f2);
}

3 — 3-1:

#include <stdio.h>
int main()
{
    int x=1;
    {
        int x=2;
    }
    printf("%d",x);
}

out:

1⏎

reason:

دلیل اینکه ۱ خارج میشود این است که ایکس برابر ۱ و پرینت هف هر دو در یک کروشه و ایکس برابر ۲ در یک کروشه دیگر قرار دارد. پس پرینت اف آن ایکسی را میبیند که با آن درون یک کروشه است.

3-2:

#include <stdio.h>
int main()
{
    {
        int x=2;
    }
    printf("%d",x);
}

error:

3-2.c: In function ‘main’:
3-2.c:7:17: error: ‘x’ undeclared (first use in this function)
    7 |     printf("%d",x);
      |                 ^
3-2.c:7:17: note: each undeclared identifier is reported only once for each function it appears in

reason:

دلیل این ارور این است که ایکس در یک کروشه دیگر تعریف شده و دستور پرینت اف در یک کروشه دیگر، پس اسک انگار برای پرینت اف تعریف نشده است. اگر هر دوی آن ها در یک کروشه نوشته میشدند، آنگاه کامپایل آن خطا نمیداد و خروجی ما ۲ بود.

3-3:

#include <stdio.h>
int x=1;
int main()
{
    int x=2;
    printf("%d",x);
}

out:

2⏎  

reason: هنگامی که دو متغییر با یک نام، یکی به صورت گلوبال و دیگری به صورت لوکال و درون فانکشن قرار گیرد، متغییر گلوبال نادیده گگرفته میشود و متغییر لوکال مورد استفاده قرار میگیرد.

3-4:

#include <stdio.h>
int x=1;
int main()
{
    {
        int x=2;
    }
    printf("%d",x);
}

out:

1⏎     

reason:

در مثال های قبل دیدیم که پرینت اف ایکسی که با آن در یک کروشه باشد را میبیند و اگر ایکس موجود باید ولی در کروشه‌ی دیگری باشد، آن را نادیدیه میگیرد، حال ایکس درون یک کروشه دیگر است و ولی ایکس گلوبال تعریف شده است، پس پرینت اف ایکسی را درون مین نمیخواند، ولی یک ایکس گلوبال موجود است که میتواند آن را بخواند، پس آن را خوانده و به خروجی کیبرد.


4 — with function inside:(4a.c)

#include <stdio.h>
int c12(int num)
{
    int f1 = 0;
    int f2 = 0;
    while (num > 0)
    {
        int dig = num % 10;
        if (dig == 1)
        {
            f1 = 1;
        } 
        else if (dig == 2)
        {
            f2 = 1;
        }
        if (f1 && f2)
        {
            return 1;
        }
        num /= 10;
    }
    return 0;
}
int main()
{
    int num;
    printf("Enter a number:\n");
    scanf("%d", &num);
    int mult = num;
    while (!c12(mult))
        mult += num;
    printf("%d",mult);
    return 0;
}

header of the function:(4a.h)

#include <stdio.h>
int c12(int num)
{
    int f1 = 0;
    int f2 = 0;
    while (num > 0)
    {
        int dig = num % 10;
        if (dig == 1)
        {
            f1 = 1;
        } 
        else if (dig == 2)
        {
            f2 = 1;
        }
        if (f1 && f2)
        {
            return 1;
        }
        num /= 10;
    }
    return 0;
}

code with header function: (4b.c)

#include <stdio.h>
#include "./4a.h"
int main()
{
    int num;
    printf("Enter a number:\n");
    scanf("%d", &num);
    int mult = num;
    while (!c12(mult))
        mult += num;
    printf("%d",mult);
    return 0;
}

out(67):

Enter a number:
67
201⏎

out(157):

Enter a number:
157
1256⏎  

در صورت وجود مشکل یا سوال به این آی دی در تلگرام پیام بدین

لینک به سایت

گیتهاب