C語言基礎入門實例彙總

蒐集了網上C語言入門案例,並適當的做了一些修改和註釋。
例1. 使用 printf() 輸出 “Hello, World!”。

#include <stdio.h>
#include <stdlib.h>             //包含system()函數//
int main()
{
   printf("Hello, World!\n");
   system("pause");             //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
   return 0;
}

仿真結果:
在這裏插入圖片描述
例2. 使用 printf() 與 %d 格式化輸出整數。

#include <stdio.h>
#include <stdlib.h>             //包含system()函數//
int main()
{
    int number;
    printf("輸入一個整數: ");      
    scanf("%d", &number);        //通過鍵盤給程序中的變量賦值//
    printf("你輸入的整數是: %d\n", number);
    system("pause");             //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
    return 0;
}

仿真結果:
在這裏插入圖片描述例3. 使用 printf() 與 %c 格式化輸出一個字符。

#include <stdio.h>
#include <stdlib.h>             //包含system()函數//
int main()
{
   char c;                      // 聲明一個字符串變量C//  
   printf("輸入一個字符(僅限1個字母): ");      
   scanf("%c", &c);             //通過鍵盤給程序中的變量賦值//
   printf("輸入的字符爲 %c\n", c); 
   system("pause");             //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
   return 0;
}

仿真結果:
在這裏插入圖片描述
例4. 使用 printf() 與 %f 輸出浮點數。

#include <stdio.h>
#include <stdlib.h> 
int main() 
{
   float f;                     // 聲明浮點數變量
   printf("輸入一個浮點數: ");      
   scanf("%f", &f);             //通過鍵盤給程序中的變量賦值//
   printf("輸入的浮點數爲 %f\n", f); 
   system("pause");             //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
   return 0;
}

仿真結果:
在這裏插入圖片描述
例5. 使用 printf() 與 %le 輸出雙精度數。

#include <stdio.h>
#include <stdlib.h> 
int main() 
{
   double d;                     // 聲明雙精度變量
   printf("輸入一個雙精度數: ");      
   scanf("%le", &d);             //通過鍵盤給程序中的變量賦值//
   printf("輸入的雙精度數爲 %le\n", d); 
   system("pause");              //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
   return 0;
}

仿真結果:
在這裏插入圖片描述
例6. 使用 scanf() 來接收輸入, printf() 與 %d 格式化輸出整數,實現兩數相加。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int firstNumber, secondNumber, sumOfTwoNumbers;
    printf("輸入兩個數(以空格分割): ");
    scanf("%d %d", &firstNumber, &secondNumber);    // 通過 scanf() 函數接收用戶輸入的兩個整數
    sumOfTwoNumbers = firstNumber + secondNumber;
    printf("%d + %d = %d\n", firstNumber, secondNumber, sumOfTwoNumbers);
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例7. 輸入兩個浮點數,計算乘積。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    double firstNumber, secondNumber, product;
    printf("輸入兩個浮點數: ");
    scanf("%lf %lf", &firstNumber, &secondNumber);  
    product = firstNumber * secondNumber;  
    printf("%lf * %lf = %.2lf\n", firstNumber, secondNumber,product);    // 輸出結果, %.2lf 保留兩個小數點
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例8. 字符轉 ASCII 碼

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char c;
    printf("輸入一個字符: ");
    scanf("%c", &c);  
    printf("%c 的 ASCII 爲 %d\n", c, c);
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
附ASCII表
在這裏插入圖片描述
在這裏插入圖片描述
例9. 兩數相除,如果有餘數,輸出餘數。

#include <stdio.h>
#include <stdlib.h>
int main()
{ 
    int dividend, divisor, quotient, remainder;//4個變量分別是被除數、除數、商和餘數//
    printf("輸入被除數: ");
    scanf("%d", &dividend);
    printf("輸入除數: ");
    scanf("%d", &divisor);
    quotient = dividend / divisor;             //運算符/用來計算商//
    remainder = dividend % divisor;            //運算符%用來計算餘數//
    printf("商 = %d\n", quotient);
    printf("餘數 = %d\n", remainder);
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例10.1 輸入兩個數,比較大小

#include <stdio.h>
#include <stdlib.h> 
int main()
{
   double a, b;
   printf("輸入第一個數:");
   scanf("%le",&a);
   printf("輸入第二個數:");
   scanf("%le",&b);
   if(a > b)
      printf("%le 大於 %le\n",a,b);
   else
      printf("%le 小於等於 %le\n",a,b);
   system("pause");
   return 0;
}

仿真結果:
在這裏插入圖片描述
例10.2 比較三個數大小

#include <stdio.h>
#include <stdlib.h>
int main() 
{
   int a, b, c;
   printf("輸入第一個整數:");
   scanf("%d",&a);
   printf("輸入第二個整數:");
   scanf("%d",&b);
   printf("輸入第三個整數:");
   scanf("%d",&c);
   if ( a > b && a > c )
      printf("%d 最大\n", a);
   else if ( b > a && b > c )
      printf("%d 最大\n", b);
   else if ( c > a && c > b )
      printf("%d 最大\n", c);
   else   
      printf("有兩個或三個數值相等\n");
   system("pause");
   return 0;
}

仿真結果:
在這裏插入圖片描述
例11. 計算 int, float, double 和 char 字節大小

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int integerType;   //整數類型//
    float floatType;   //浮點型//
    double doubleType; //雙精度型//
    char charType;     //字符型//
    printf("Size of int: %ld bytes\n",sizeof(integerType));  //sizeof()函數用於計算變量的大小//
    printf("Size of float: %ld bytes\n",sizeof(floatType));
    printf("Size of double: %ld bytes\n",sizeof(doubleType));
    printf("Size of char: %ld byte\n",sizeof(charType));
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例12. 交換兩個數的值。

#include <stdio.h>
#include <stdlib.h>
int main()
{     
      printf("第一種方法,採用臨時變量\n");
      double firstNumber, secondNumber, temporaryVariable;
      printf("輸入第一個數字: ");
      scanf("%lf", &firstNumber);
      printf("輸入第二個數字: ");
      scanf("%lf",&secondNumber);
      temporaryVariable = firstNumber;
      firstNumber = secondNumber;
      secondNumber = temporaryVariable;
      printf("交換後, firstNumber = %.2lf\n", firstNumber);
      printf("交換後, secondNumber = %.2lf\n", secondNumber);
      system("pause");
      printf("第二種方法,不採用臨時變量\n");
      printf("交換前 - \n第一個數字 = %lf, 第二個數字 = %lf \n", firstNumber, secondNumber);
      firstNumber = firstNumber + secondNumber;   // firstNumber的變量爲兩數之和,secondNumber未改變
      secondNumber = firstNumber - secondNumber;    
      firstNumber = firstNumber - secondNumber;   
      printf("交換後 - \n第一個數字 = %lf, 第二個數字 = %lf \n", firstNumber, secondNumber);
      system("pause");
      return 0;
}

仿真結果:
在這裏插入圖片描述
例13. 判斷奇數還是偶數。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int number;
    printf("請輸入一個整數: ");
    scanf("%d", &number);
    if(number % 2 == 0)
        printf("%d 是偶數\n", number);
    else
        printf("%d 是奇數\n", number); 
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例14. 循環區間範圍內的奇數/偶數

#include <stdio.h>
#include <stdlib.h> 
int main() 
{
   int i;
   printf("100以內的偶數:");
   for(i = 1; i <= 100; i++) 
   {
      if(i%2 == 0)
         printf("%2d  ", i); //%2d表示將數字按寬度爲2,採用右對齊方式輸出//
   }
   printf("\n100以內的奇數:");
   for(i = 1; i <= 100; i++) {
      if(i%2 != 0)
         printf("%2d  ", i);
   }
   printf("\n");
   system("pause");
   return 0;
}

仿真結果:
在這裏插入圖片描述
例15. 判斷元音輔音。
知識點:英語有26個字母,元音只包括 a、e、i、o、u 這五個字母,其餘的都爲輔音。y是半元音、半輔音字母,但在英語中都把他當作輔音。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char c;
    int isLowercaseVowel, isUppercaseVowel;
    printf("輸入一個字母: ");
    scanf("%c",&c);
    isLowercaseVowel = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');//小寫字母,值爲1時說明是元音//
    isUppercaseVowel = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');//大寫字母,值爲1時說明是元音//
    if (isLowercaseVowel || isUppercaseVowel)
        printf("%c 是元音\n", c);
    else
        printf("%c 是輔音\n", c);
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例16. 判斷三個數中的最大數。

#include <stdio.h>
#include <stdlib.h> 
int main()
{
    double n1, n2, n3;
    printf("請輸入三個數,以空格分隔: ");
    scanf("%lf %lf %lf", &n1, &n2, &n3);
    if( n1>=n2 && n1>=n3 )
        printf("%.2f 是最大數\n", n1); 
    if( n2>=n1 && n2>=n3 )
        printf("%.2f 是最大數\n", n2);
    if( n3>=n1 && n3>=n2 )
        printf("%.2f 是最大數\n", n3);
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例17. 求一元二次方程:ax2+bx+c=0 的根。

#include <stdio.h>
#include <math.h>
#include <stdlib.h> 
int main()
{
 float a,b,c,x1,x2,d;
 printf("求公式ax^2+bx+c=0的根\n");
 printf("輸入方程的第一個係數:a=");
 scanf("%f",&a);
 printf("輸入方程的第二個係數:b=");
 scanf("%f",&b);
 printf("輸入方程的第三個係數:c=");
 scanf("%f",&c);
 if(a!=0)
  {
   if(b*b-4*a*c>=0)
    {
     d=sqrt(b*b-4*a*c);
     x1=(-b+d)/(2*a);
     x2=(-b-d)/(2*a);
     if(x1<x2) 
      printf("%0.2f %0.2f\n",x2,x1); 
     else
      printf("%0.2f %0.2f\n",x1,x2);
    }
 else
  printf("輸入值有問題!\n");
  }
 system("pause");
 return 0;
}

仿真結果:
在這裏插入圖片描述
例18. 判斷閏年。

#include <stdio.h>
#include <stdlib.h> 
int main()
{
    int year;
    printf("輸入年份: ");
    scanf("%d",&year);
    if(year%4 == 0)
    {
        if( year%100 == 0)  
        {  
            if ( year%400 == 0)              // 能被4,100,400整除,則是閏年//
                printf("%d 是閏年\n", year);
            else
                printf("%d 不是閏年\n", year);
        }
        else
            printf("%d 是閏年\n", year );    //能被4整除,不能被100整除,是閏年//
    }
    else
        printf("%d 不是閏年\n", year);     
    system("pause");  
    return 0;
}

仿真結果:
在這裏插入圖片描述
例19. 判斷正數、負數。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    double number; 
    printf("輸入一個數字: ");
    scanf("%lf", &number); 
    if (number <= 0.0)
    {
        if (number == 0.0)
            printf("你輸入的是 0\n");
        else
            printf("你輸入的是負數\n");
    }
    else
        printf("你輸入的是正數\n");
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例20. 判斷字母。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char c;
    printf("輸入一個字符: ");
    scanf("%c",&c);
    if( (c>='a' && c<='z') || (c>='A' && c<='Z'))   //a~z的ASCII區間是97~122,A~Z的ASCII區間是65~90//
        printf("是字母\n");
    else
        printf("不是字母\n");
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例21. 計算自然數的和。

#include <stdio.h>
#include <stdlib.h>
int addNumbers(int n);    //定義一個子函數//
int main()
{
    int n, i, sum = 0;
    printf("第一種方法,使用for\n"); 
    printf("輸入一個正整數,確定從1加到這個正整數: ");
    scanf("%d",&n);
    for(i=1; i <= n; ++i)
    {
        sum += i;   // sum = sum+i;
    }
    printf("Sum = %d\n",sum);
    sum=0;   //sum清零//
    printf("第二種方法,使用while\n"); 
    printf("輸入一個正整數,確定從1加到這個正整數: ");
    scanf("%d",&n);
    i = 1;
    while ( i <=n )
    {
        sum += i;
        ++i;
    }
    printf("Sum = %d\n",sum);
    printf("第三種方法,使用遞歸\n"); 
    printf("輸入一個正整數,確定從1加到這個正整數: ");
    scanf("%d", &n);
    printf("Sum = %d\n",addNumbers(n));
    system("pause");
    return 0;
}
int addNumbers(int m)
{
    if(m != 0)
        return m + addNumbers(m-1);
    else
        return m;
}

仿真結果:
在這裏插入圖片描述
例22. 輸出九九乘法口訣表。

#include <stdio.h> 
#include <stdlib.h> 
int main()
{  
    int i = 0;     
    int j = 0;   
    for(i=1;i<=9;i++)
 {  
        for(j=1;j<=i;j++){  
            printf("%dx%d=%d\t",j,i,i*j);  //\t表示水平製表(HT) (跳到下一個TAB位置)//
        }     
        printf("\n");     
    }  
system("pause");
}

仿真結果:
在這裏插入圖片描述
例23. 斐波那契數列。
知識點:斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89… 這個數列從第3項開始,每一項都等於前兩項之和。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i, n, t1 = 0, t2 = 1, nextTerm;
    printf("方法一,使用for\n");
    printf("從1開始,輸出幾項: ");
    scanf("%d", &n);
    printf("斐波那契數列: ");
    for (i = 1; i <= n; ++i)
    {
        printf("%d, ", t1);
        nextTerm = t1 + t2;
        t1 = t2;
        t2 = nextTerm;
    }
 printf("\n");
 system("pause");
 printf("方法二,使用while\n");
 t1 = 0, t2 = 1, nextTerm=0;
 printf("輸入,最大值不超過: ");
 scanf("%d", &n);
 printf("斐波那契數列: %d, %d, ", t1, t2);
 nextTerm = t1 + t2;
 while(nextTerm <= n)
    {
        printf("%d, ",nextTerm);
        t1 = t2;
        t2 = nextTerm;
        nextTerm = t1 + t2;
    }
 printf("\n");
 system("pause");
 return 0;
}

仿真結果:
在這裏插入圖片描述
例24. 兩數的最大公約數。

#include <stdio.h>
#include <stdlib.h> 
int hcf(int n1, int n2);   //爲方案四服務//
int main()
{
    int n1, n2, i, gcd;
    printf("方案一,使用for和if\n");
    printf("輸入兩個正整數,以空格分隔: ");
    scanf("%d %d", &n1, &n2);
    for(i=1; i <= n1 && i <= n2; ++i)
    {
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }
    printf("%d 和 %d 的最大公約數是 %d\n", n1, n2, gcd);
    printf("方案二,使用while和if\n");
    printf("輸入兩個數,以空格分隔: ");
    scanf("%d %d",&n1,&n2);
    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;   //-=表示把左邊的數減去右邊的數的差賦值給左邊的數//
        else
            n2 -= n1;
    }
    printf("最大公約數是 %d\n",n1);
    printf("方案三,包含正數和負數時\n");
    printf("輸入兩個數,以空格分隔: ");
    scanf("%d %d",&n1,&n2);
    n1 = ( n1 > 0) ? n1 : -n1;   //當n1>0時,n1=n1否則n1=-n1
    n2 = ( n2 > 0) ? n2 : -n2;   //當n2>0時,n2=n2否則n2=-n2
    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("最大公約數是 %d\n",n1);
    printf("方案四,使用遞歸方法\n");
    printf("輸入兩個正整數: ");
    scanf("%d %d", &n1, &n2);
    printf("%d 和 %d 的最大公約數爲 %d\n", n1, n2, hcf(n1,n2));
    system("pause");
    return 0;
}
int hcf(int n1, int n2)
{
    if (n2 != 0)
       return hcf(n2, n1%n2);
    else 
       return n1;
}

仿真結果:
在這裏插入圖片描述
例25. 兩數最小公倍數。

#include <stdio.h>
#include <stdlib.h> 
int main()
{
    printf("方案一,使用while和if\n");
    int n1, n2, minMultiple;
    printf("輸入兩個正整數:");
    scanf("%d %d", &n1, &n2);
    minMultiple = (n1>n2) ? n1 : n2;
    while(1)
    {
        if( minMultiple%n1==0 && minMultiple%n2==0 )
        {
            printf("%d 和 %d 的最小公倍數爲 %d\n", n1, n2,minMultiple);
            break;
        }
        ++minMultiple;
    }
    printf("方案二,通過最大公約數計算\n");
    int i,gcd,lcm;
    printf("輸入兩個正整數: ");
    scanf("%d %d",&n1,&n2);
    for(i=1; i <= n1 && i <= n2; ++i)
    {
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }
    lcm = (n1*n2)/gcd;
    printf("%d 和 %d 的最小公倍數爲 %d\n", n1, n2, lcm);
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例26. 階乘。
知識點:一個正整數的階乘是所有小於及等於該數的正整數的積,並且0的階乘爲1。自然數n的階乘寫作n!。
n!=1×2×3×…×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。

#include <stdio.h>
#include <stdlib.h>
long int multiplyNumbers(int n);  //爲方案二服務//
int main()
{
    int n, i;
    unsigned long long factorial = 1;
    printf("方案一:使用for\n");
    printf("輸入一個整數: ");
    scanf("%d",&n);
    if (n < 0)
        printf("Error! 負數沒有階乘\n");
    else
    {
        for(i=1; i<=n; ++i)
        {
            factorial *= i;            
        }
        printf("%d! = %llu\n", n, factorial);
    }
    system("pause");
    printf("方案二,使用遞歸\n");
    printf("輸入一個整數: ");
    scanf("%d", &n);
    printf("%d! = %ld\n", n, multiplyNumbers(n));
    system("pause");
    return 0;
}
long int multiplyNumbers(int n)
{
    if (n >= 1)
        return n*multiplyNumbers(n-1);
    else
        return 1;
}

仿真結果:
在這裏插入圖片描述
例27. 循環輸出26個字母。

#include <stdio.h>
#include <stdlib.h> 
int main()
{
    char c;
    for(c = 'A'; c <= 'Z'; ++c)
       printf("%c ", c);
    printf("\n");
    system("pause");
    printf("考慮大小寫方案\n");
    printf("輸入 u 顯示大寫字母,輸入 l 顯示小寫字母: ");
    scanf("%c", &c);
    if(c== 'U' || c== 'u')
    {
       for(c = 'A'; c <= 'Z'; ++c)
         printf("%c ", c);
    }
    else if (c == 'L' || c == 'l')
    {
        for(c = 'a'; c <= 'z'; ++c)
         printf("%c ", c);
    }
    else
       printf("Error! 輸入非法字符");
    printf("\n");
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例28. 判斷數字爲幾位數。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    long long n;
    int count = 0;
    printf("輸入一個整數: ");
    scanf("%lld", &n);       //lld是long long整型//
    while(n != 0)
    {
        n /= 10;
        ++count;
    }
    printf("數字是 %d 位數\n", count);
    system("pause");
}

仿真結果:
在這裏插入圖片描述
例29. 計算一個數的 n 次方。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int power(int n1, int n2);
int main()
{
    int base1, exponent1;
    long long result1 = 1;
    printf("方案一,使用while\n"); 
    printf("基數: ");
    scanf("%d", &base1);
    printf("指數: ");
    scanf("%d", &exponent1);
    while (exponent1 != 0)
    {
        result1 *= base1;
        --exponent1;
    }
    printf("結果:%lld\n", result1);
    printf("方案二,使用pow()函數\n");
    double base2, exponent2, result2;
    printf("基數: ");
    scanf("%lf", &base2);
    printf("指數: ");
    scanf("%lf", &exponent2);
    result2 = pow(base2, exponent2);
    printf("%.1lf^%.1lf = %.2lf\n", base2, exponent2, result2);
    system("pause");
    printf("方案三,使用遞歸\n");
    int base3, powerRaised3, result3; 
    printf("基數: ");
    scanf("%d",&base3);
    printf("指數(正整數): ");
    scanf("%d",&powerRaised3); 
    result3 = power(base3, powerRaised3);
    printf("%d^%d = %d\n", base3, powerRaised3, result3);
    system("pause");
    return 0;
}
int power(int base, int powerRaised)
{
    if (powerRaised != 0)
        return (base*power(base, powerRaised-1));
    else
        return 1;
}

仿真結果:
在這裏插入圖片描述
例30. 判斷迴文數。
知識點:設n是一任意自然數。若將n的各位數字反向排列所得自然數n1與n相等,則稱n爲一回文數。例如,若n=1234321,則稱n爲一回文數;但若n=1234567,則n不是迴文數。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, reversedInteger = 0, remainder, originalInteger;
    printf("輸入一個整數:");
    scanf("%d", &n);
    originalInteger = n;
    while( n!=0 )   //while函數實現翻轉功能//
    {
        remainder = n%10;
        reversedInteger = reversedInteger*10 + remainder;
        n /= 10;
    }
    if (originalInteger == reversedInteger)
        printf("%d 是迴文數\n", originalInteger);
    else
        printf("%d 不是迴文數\n", originalInteger);
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例31. 判斷素數。
知識點:質數(prime number)又稱素數,有無限個。質數定義爲在大於1的自然數中,除了1和它本身以外不再有其他因數,這樣的數稱爲質數。

#include <stdio.h>
#include <stdlib.h>
int checkPrimeNumber(int n);
int main()
{
    int n, i, flag = 0;
    printf("判斷一個正整數是否爲素數\n");
    printf("輸入一個正整數: ");
    scanf("%d",&n);
    for(i=2; i<=n/2; ++i)
    {
        if(n%i==0)
        {
            flag=1;
            break;
        }
    }
    if (flag==0)
        printf("%d 是素數\n",n);
    else
        printf("%d 不是素數\n",n);
    printf("判斷兩個數之間的素數\n");
    int low, high;
    flag=0;
    printf("輸入兩個整數: ");
    scanf("%d %d", &low, &high);
    printf("%d 與 %d 之間的素數爲: ", low, high);
    while (low < high)
    {
        flag = 0;
        for(i = 2; i <= low/2; ++i)
        {
            if(low % i == 0)
            {
                flag = 1;
                break;
            }
        }
        if (flag == 0)
            printf("%d ", low);
        ++low;
    }
    printf("\n");
    printf("使用函數判斷兩數間的素數\n");
    int n1,n2;
    flag=0;
    printf("輸入兩個正整數: ");
    scanf("%d %d", &n1, &n2);
    printf("%d 和 %d 間的素數爲: ", n1, n2);
    for(i=n1+1; i<n2; ++i)
    {
        flag = checkPrimeNumber(i);
        if(flag == 1)
            printf("%d ",i);
    }
 if (i<=n1+1)
  printf("無");
 printf("\n");
 system("pause");
 return 0;
}
int checkPrimeNumber(int n)
{
    int j, flag = 1;
    for(j=2; j <= n/2; ++j)
    {
        if (n%j == 0)
        {
            flag =0;
            break;
        }
    }
    return flag;
}

仿真結果:
在這裏插入圖片描述
例32. 判斷Armstrong數(阿姆斯壯數)。
Armstrong 數,就是n位數的各位數的n次方之和等於該數。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int checkPrimeNumber(int n);
int checkArmstrongNumber(int n);
int main()
{
    printf("判斷Armstrong數\n");
    int number, originalNumber;
    double remainder;
    double result = 0;
    printf("輸入四位數: ");
    scanf("%d", &number);
    originalNumber = number;
    while (originalNumber != 0)
    {
        remainder = originalNumber%10;
        result += remainder*remainder*remainder*remainder;
        originalNumber /= 10;
    }
    if(result == number)
        printf("%d 是 Armstrong 數\n",number);
    else
        printf("%d 不是 Armstrong 數\n",number);
    system("pause"); 
    printf("尋找兩數之間的Armstrong數\n");
    int low, high, i, temp1, temp2, n = 0; 
    result = 0;
    printf("輸入兩個整數: ");
    scanf("%d %d", &low, &high);
    printf("%d 和 %d 之間的 Armstrong 數爲: ", low, high);
    for(i = low + 1; i < high; ++i)
    {
        temp2 = i;
        temp1 = i;
 
        // 計算
        while (temp1 != 0)       //先計算是幾位數//
        {
            temp1 /= 10;
            ++n;
        }       
        while (temp2 != 0)      //計算Armstrong 數//
        {
            remainder = temp2 % 10;
            result += pow(remainder, n);
            temp2 /= 10;
        }
 
        if (result == i) 
  {
            printf("%d ", i);
        }
        n = 0;
        result = 0;
    }
    printf("\n");
    system("pause");
    printf("使用函數判斷Armstrong 數\n");
    int flag;
    printf("輸入正整數: ");
    scanf("%d", &n);
    flag = checkPrimeNumber(n);
    if (flag == 1)
        printf("%d 是素數。\n", n);
    else
        printf("%d 不是素數\n", n);
    flag = checkArmstrongNumber(n);
    if (flag == 1)
        printf("%d 是 Armstrong 數\n", n);
    else
        printf("%d 不是 Armstrong 數\n",n);
    system("pause");
    return 0;
}
int checkPrimeNumber(int n)
{
    int i,flag = 1;
    for(i=2; i<=n/2; ++i)
    {
        if(n%i == 0)
        {
            flag = 0;
            break;
        }
    }
    return flag;
}
int checkArmstrongNumber(int number)
{
    int originalNumber, n = 0, flag;
    double remainder, result=0;
    originalNumber = number;
    while (originalNumber != 0)
    {
        originalNumber /= 10;
        ++n;
    }
    originalNumber = number;
    while (originalNumber != 0)
    {
        remainder = originalNumber%10;
        result += pow(remainder, n);
        originalNumber /= 10;
    }
    if(result == number)
        flag = 1;
    else
        flag = 0; 
    return flag;
}

仿真結果:
在這裏插入圖片描述
例33. 求一個數的因數。
知識點:假如a*b=c(a、b、c都是整數),那麼我們稱a和b就是c的因數。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int number, i;
    printf("輸入一個整數: ");
    scanf("%d",&number); 
    printf("%d 的因數有: ", number);
    for(i=1; i <= number; ++i)
    {
        if (number%i == 0)
        {
            printf("%d ",i);
        }
    }
    printf("\n");
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
例34. 創建三角形圖案。

#include <stdio.h>
#include <stdlib.h> 
int main()
{
    int i, j, rows;
    printf("使用*號創建三角形\n");
    printf("行數: ");
    scanf("%d",&rows);
    for(i=1; i<=rows; ++i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("* ");
        }
        printf("\n");
    }
    printf("使用數字創建三角形\n");
    printf("行數: ");
    scanf("%d",&rows);
    for(i=1; i<=rows; ++i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("%d ",j);
        }
        printf("\n");
    }
    printf("使用字母創建三角形\n");
    char input, alphabet = 'A';
    printf("輸入大寫字母:");
    scanf("%s",&input);
    for(i=1; i <= (input-'A'+1); ++i)
    {
        for(j=1;j<=i;++j)
        {
            printf("%c", alphabet);
        }
        ++alphabet;
        printf("\n");
    }
    printf("使用*號創建倒三角形\n"); 
    printf("行數: ");
    scanf("%d",&rows);
    for(i=rows; i>=1; --i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("* ");
        }
        printf("\n");
    }
    printf("使用數字創建倒三角形\n");
    printf("行數: ");
    scanf("%d",&rows);
    for(i=rows; i>=1; --i)
    {
        for(j=1; j<=i; ++j)
        {
            printf("%d ",j);
        }
        printf("\n");
    }
    printf("使用*號創建金字塔\n");
    int  space, k=0;
    printf("Enter number of rows: ");
    scanf("%d",&rows);
    for(i=1; i<=rows; ++i, k=0)
    {
        for(space=1; space<=rows-i; ++space)
        {
            printf("  ");
        }
        while(k != 2*i-1)
        {
            printf("* ");
            ++k;
        }
        printf("\n");
    }
    printf("使用數字創建金字塔\n");
    int count = 0, count1 = 0;
    k=0;
    printf("行數: ");
    scanf("%d",&rows);
    for(i=1; i<=rows; ++i)
    {
        for(space=1; space <= rows-i; ++space)
        {
            printf("  ");
            ++count;
        }
        while(k != 2*i-1)
        {
            if (count <= rows-1)
            {
                printf("%d ", i+k);
                ++count;
            }
            else
            {
                ++count1;
                printf("%d ", (i+k-2*count1));
            }
            ++k;
        }
        count1 = count = k = 0;
        printf("\n");
    }
    printf("使用*號創建倒金字塔\n");
    printf("行數: ");
    scanf("%d",&rows);
    for(i=rows; i>=1; --i)
    {
        for(space=0; space < rows-i; ++space)
            printf("  ");
        for(j=i; j <= 2*i-1; ++j)
            printf("* ");
        for(j=0; j < i-1; ++j)
            printf("* ");
        printf("\n");
    }
    printf("創建楊輝三角\n");
    int coef = 1; 
    printf("行數: ");
    scanf("%d",&rows);
    for(i=0; i<rows; i++)
    {
        for(space=1; space <= rows-i; space++)
            printf("  ");
        for(j=0; j <= i; j++)
        {
            if (j==0 || i==0)
                coef = 1;
            else
                coef = coef*(i-j+1)/j;
            printf("%4d", coef);
        }
        printf("\n");
    }
    printf("弗洛伊德三角形\n");
    int l,N; 
    printf("行數: ");
    scanf("%d",&N);
    for(i=1,j=1;i<=N;i++) 
    { 
        for(l=1;l<=i;l++,j++) 
            printf("%5d",j); 
        printf("\n"); 
    }
    system("pause");
    return 0;
}

仿真結果:
在這裏插入圖片描述
在這裏插入圖片描述
例35. 表格形式輸出數據。

#include <stdio.h>
#include <stdlib.h>
int main() 
{
   printf("將 1~100 的數據以 10x10 矩陣格式輸出\n");
   int i, j, count; 
   for(i = 1; i <= 10; i++) {
      for(j = i; j <=100; j += 10 )
         printf(" %3d", j);
      printf("\n");
   }
   system("pause");
   printf("等差數列輸出 10x10 矩陣格式\n");
   int start, end;
   start = 2, end = 10;
   for(i = start; i <= end; i++) 
   {
      count = i;
      for(j = 1; j <= 10; j++) {
         printf(" %3d", count*j);
      }
      printf("\n");
   }
   system("pause");
   printf("乘法格式運算\n");
   int n = 3;
   j = 1;
   for(i = n; i <= (n*10); i+=n) {
      printf("%3d  x %2d  =  %3d\n", n, j, i);
      j++;
   }
   system("pause");
   return 0;
}

仿真結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章