<th id="ik4gr"><pre id="ik4gr"></pre></th>
<rp id="ik4gr"></rp>
    <dd id="ik4gr"></dd>

  1. <rp id="ik4gr"><object id="ik4gr"><blockquote id="ik4gr"></blockquote></object></rp>
      <rp id="ik4gr"></rp>
        <button id="ik4gr"><acronym id="ik4gr"></acronym></button>
      1. <rp id="ik4gr"><object id="ik4gr"><input id="ik4gr"></input></object></rp>
        1. 杭州嵌入式培訓
          達內杭州嵌入式培訓中心

          13175137725

          收好了:C語言面試基礎算法及代碼

          • 時間:2019-07-03 14:42
          • 發布:轉載
          • 來源:網絡

          本文為大家分享的是C語言面試基礎算法及代碼,有興趣的小伙伴快看過來。

          算法是一個程序和軟件的靈魂,作為一名優秀的程序員,只有對一些基礎的算法有著全面的掌握,才會在設計程序和編寫代碼的過程中顯得得心應手。本文包括了經典的Fibonacci數列、簡易計算器、回文檢查、質數檢查等算法。

          1、計算Fibonacci數列

          Fibonacci數列又稱斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21。

          C語言實現的代碼如下:

          Enter number of terms: 10
          Fibonacci Series: 0+1+1+2+3+5+8+13+21+34+
          
          也可以使用下面的源代碼:
          /* Displaying Fibonacci series up to certain number entered by user. */
          
          #include <stdio.h>
          int main()
          {
            int t1=0, t2=1, display=0, num;
            printf("Enter an integer: ");
            scanf("%d",&num);
            printf("Fibonacci Series: %d+%d+", t1, t2); /* Displaying first two terms */
            display=t1+t2;
            while(display<num)
            {
                printf("%d+",display);
                t1=t2;
                t2=display;
                display=t1+t2;
            }
            return 0;
          }

          結果輸出:

          Enter an integer: 200
          Fibonacci Series: 0+1+1+2+3+5+8+13+21+34+55+89+144+

          2、回文檢查

          源代碼:

          /* C program to check whether a number is palindrome or not */
          
          
          #include <stdio.h>
          int main()
          {
            int n, reverse=0, rem,temp;
            printf("Enter an integer: ");
            scanf("%d", &n);
            temp=n;
            while(temp!=0)
            {
               rem=temp%10;
               reverse=reverse*10+rem;
               temp/=10;
            }  
          /* Checking if number entered by user and it's reverse number is equal. */  
            if(reverse==n)  
                printf("%d is a palindrome.",n);
            else
                printf("%d is not a palindrome.",n);
            return 0;
          }

          結果輸出:

          Enter an integer: 12321
          12321 is a palindrome.

          3、質數檢查

          注:1既不是質數也不是合數。

          源代碼:

          /* C program to check whether a number is prime or not. */
          
          
          #include <stdio.h>
          int main()
          {
            int n, i, flag=0;
            printf("Enter a positive integer: ");
            scanf("%d",&n);
            for(i=2;i<=n/2;++i)
            {
                if(n%i==0)
                {
                    flag=1;
                    break;
                }
            }
            if (flag==0)
                printf("%d is a prime number.",n);
            else
                printf("%d is not a prime number.",n);
            return 0;
          }

          結果輸出:

          Enter a positive integer: 29
          29 is a prime number.

          4、打印金字塔和三角形

          使用 * 建立三角形

          *
          * *
          * * *
          * * * *
          * * * * *

          源代碼:

          #include <stdio.h>
          int main()
          {
              int i,j,rows;
              printf("Enter the number of rows: ");
              scanf("%d",&rows);
              for(i=1;i<=rows;++i)
              {
                  for(j=1;j<=i;++j)
                  {
                     printf("* ");
                  }
                  printf("\n");
              }
              return 0;
          }

          如下圖所示使用數字打印半金字塔。

          1
          1 2
          1 2 3
          1 2 3 4
          1 2 3 4 5

          源代碼:

          #include <stdio.h>
          int main()
          {
              int i,j,rows;
              printf("Enter the number of rows: ");
              scanf("%d",&rows);
              for(i=1;i<=rows;++i)
              {
                  for(j=1;j<=i;++j)
                  {
                     printf("* ");
                  }
                  printf("\n");
              }
              return 0;
          }
          

          用 * 打印半金字塔

          * * * * *
          * * * *
          * * * 
          * *
          *

          源代碼:

          #include <stdio.h>
          int main()
          {
              int i,j,rows;
              printf("Enter the number of rows: ");
              scanf("%d",&rows);
              for(i=rows;i>=1;--i)
              {
                  for(j=1;j<=i;++j)
                  {
                     printf("* ");
                  }
              printf("\n");
              }
              return 0;
          }

          用 * 打印金字塔

                  *
                * * *
              * * * * *
            * * * * * * *
          * * * * * * * * *

          源代碼:

          #include <stdio.h>
          int main()
          {
              int i,space,rows,k=0;
              printf("Enter the number of rows: ");
              scanf("%d",&rows);
              for(i=1;i<=rows;++i)
              {
                  for(space=1;space<=rows-i;++space)
                  {
                     printf("  ");
                  }
                  while(k!=2*i-1)
                  {
                     printf("* ");
                     ++k;
                  }
                  k=0;
                  printf("\n");
              }
              return 0;
          }

          用 * 打印倒金字塔

          * * * * * * * * *
            * * * * * * *
              * * * * *
                * * *
                  *

          源代碼:

          #include<stdio.h>
          int main()
          {
              int rows,i,j,space;
              printf("Enter number of rows: ");
              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");
              }
              return 0;
          }

          5、簡單的加減乘除計算器

          源代碼:

          /*
           Source code to create a simple calculator for addition, subtraction, 
          multiplication and division using switch...case statement in C 
          programming. */
          
          
          # include <stdio.h>
          int main()
          {
              char o;
              float num1,num2;
              printf("Enter operator either + or - or * or divide : ");
              scanf("%c",&o);
              printf("Enter two operands: ");
              scanf("%f%f",&num1,&num2);
              switch(o) {
                  case '+':
                      printf("%.1f + %.1f = %.1f",num1, num2, num1+num2);
                      break;
                  case '-':
                      printf("%.1f - %.1f = %.1f",num1, num2, num1-num2);
                      break;
                  case '*':
                      printf("%.1f * %.1f = %.1f",num1, num2, num1*num2);
                      break;
                  case '/':
                      printf("%.1f / %.1f = %.1f",num1, num2, num1/num2);
                      break;
                  default:
                      /* If operator is other than +, -, * or /, error message is shown */
                      printf("Error! operator is not correct");
                      break;
              }
              return 0;
          }

          結果輸出:

          Enter operator either + or - or * or divide : -
          Enter two operands: 3.4
          8.4
          3.4 - 8.4 = -5.0

          6、檢查一個數能不能表示成兩個質數之和

          源代碼:

          #include <stdio.h>
          int prime(int n);
          int main()
          {
              int n, i, flag=0;
              printf("Enter a positive integer: ");
              scanf("%d",&n);
              for(i=2; i<=n/2; ++i)
              {
                  if (prime(i)!=0)
                  {
                      if ( prime(n-i)!=0)
                      {
                          printf("%d = %d + %d\n", n, i, n-i);
                          flag=1;
                      }
          
          
                  }
              }
              if (flag==0)
                printf("%d can't be expressed as sum of two prime numbers.",n);
              return 0;
          }
          int prime(int n)      /* Function to check prime number */
          {
              int i, flag=1;
              for(i=2; i<=n/2; ++i)
                 if(n%i==0)
                    flag=0;
              return flag;
          }

          結果輸出:

          Enter a positive integer: 34
          34 = 3 + 31
          34 = 5 + 29
          34 = 11 + 23
          34 = 17 + 17

          7、用遞歸的方式顛倒字符串

          源代碼:

          /* Example to reverse a sentence entered by user without using strings. */
          
          
          #include <stdio.h>
          void Reverse();
          int main()
          {
              printf("Enter a sentence: ");
              Reverse();
              return 0;
          }
          void Reverse()
          {
              char c;
              scanf("%c",&c);
              if( c != '\n')
              {
                  Reverse();
                  printf("%c",c);
              }
          }
          

          結果輸出:

          Enter a sentence: margorp emosewa
          awesome program

          8、實現二進制與十進制之間的相互轉換

          /* C programming source code to convert either binary to decimal or decimal to binary according to data entered by user. */
          
          
          #include <stdio.h>
          #include <math.h>
          int binary_decimal(int n);
          int decimal_binary(int n);
          int main()
          {
             int n;
             char c;
             printf("Instructions:\n");
             printf("1. Enter alphabet 'd' to convert binary to decimal.\n");
             printf("2. Enter alphabet 'b' to convert decimal to binary.\n");
             scanf("%c",&c);
             if (c =='d' || c == 'D')
             {
                 printf("Enter a binary number: ");
                 scanf("%d", &n);
                 printf("%d in binary = %d in decimal", n, binary_decimal(n));
             }
             if (c =='b' || c == 'B')
             {
                 printf("Enter a decimal number: ");
                 scanf("%d", &n);
                 printf("%d in decimal = %d in binary", n, decimal_binary(n));
             }
             return 0;
          }
          
          
          int decimal_binary(int n)  /* Function to convert decimal to binary.*/
          {
              int rem, i=1, binary=0;
              while (n!=0)
              {
                  rem=n%2;
                  n/=2;
                  binary+=rem*i;
                  i*=10;
              }
              return binary;
          }
          
          
          int binary_decimal(int n) /* Function to convert binary to decimal.*/
          {
              int decimal=0, i=0, rem;
              while (n!=0)
              {
                  rem = n%10;
                  n/=10;
                  decimal += rem*pow(2,i);
                  ++i;
              }
              return decimal;
          }

          結果輸出:

          實現二進制與十進制之間的相互轉換

          9、使用多維數組實現兩個矩陣的相加

          源代碼:

          #include <stdio.h>
          int main(){
              int r,c,a[100][100],b[100][100],sum[100][100],i,j;
              printf("Enter number of rows (between 1 and 100): ");
              scanf("%d",&r);
              printf("Enter number of columns (between 1 and 100): ");
              scanf("%d",&c);
              printf("\nEnter elements of 1st matrix:\n");
          
          
          /* Storing elements of first matrix entered by user. */
          
          
              for(i=0;i<r;++i)
                 for(j=0;j<c;++j)
                 {
                     printf("Enter element a%d%d: ",i+1,j+1);
                     scanf("%d",&a[i][j]);
                 }
          
          
          /* Storing elements of second matrix entered by user. */
          
          
              printf("Enter elements of 2nd matrix:\n");
              for(i=0;i<r;++i)
                 for(j=0;j<c;++j)
                 {
                     printf("Enter element a%d%d: ",i+1,j+1);
                     scanf("%d",&b[i][j]);
                 }
          
          
          /*Adding Two matrices */
          
          
             for(i=0;i<r;++i)
                 for(j=0;j<c;++j)
                     sum[i][j]=a[i][j]+b[i][j];
          
          
          /* Displaying the resultant sum matrix. */
          
          
              printf("\nSum of two matrix is: \n\n");
              for(i=0;i<r;++i)
                 for(j=0;j<c;++j)
                 {
                     printf("%d   ",sum[i][j]);
                     if(j==c-1)
                         printf("\n\n");
                 }
          
          
              return 0;
          }

          結果輸出:

          使用多維數組實現兩個矩陣的相加

          10、矩陣轉置

          源代碼:

          #include <stdio.h>
          int main()
          {
              int a[10][10], trans[10][10], r, c, i, j;
              printf("Enter rows and column of matrix: ");
              scanf("%d %d", &r, &c);
          
          
          /* Storing element of matrix entered by user in array a[][]. */
              printf("\nEnter elements of matrix:\n");
              for(i=0; i<r; ++i)
              for(j=0; j<c; ++j)
              {
                  printf("Enter elements a%d%d: ",i+1,j+1);
                  scanf("%d",&a[i][j]);
              }
          /* Displaying the matrix a[][] */
              printf("\nEntered Matrix: \n");
              for(i=0; i<r; ++i)
              for(j=0; j<c; ++j)
              {
                  printf("%d  ",a[i][j]);
                  if(j==c-1)
                      printf("\n\n");
              }
          
          
          /* Finding transpose of matrix a[][] and storing it in array trans[][]. */
              for(i=0; i<r; ++i)
              for(j=0; j<c; ++j)
              {
                 trans[j][i]=a[i][j];
              }
          
          
          /* Displaying the transpose,i.e, Displaying array trans[][]. */
              printf("\nTranspose of Matrix:\n");
              for(i=0; i<c; ++i)
              for(j=0; j<r; ++j)
              {
                  printf("%d  ",trans[i][j]);
                  if(j==r-1)
                      printf("\n\n");
              }
              return 0;
          }

          結果輸出:

          矩陣轉置

          感謝您的閱讀,以上就是今天分享給你的C語言面試基礎算法及代碼,希望對大家有所幫助。

          預約申請免費試聽課

          怕錢不夠?就業掙錢后再付學費!    怕學不會?從入學起,達內定制課程!     擔心就業?達內多家實踐企業供你挑選!

          上一篇:想做嵌入式工程師,先來自測一下吧
          下一篇:企業面試常出現的10個c/c++面試題

          一文告訴你:如何參加IT培訓拿高薪?

          非科班出身轉行IT難嗎?好就業嗎?

          面試時程序員應該如何解答薪資問題?

          交付前你需要這樣的UI自查

          • 掃碼領取資料

            回復關鍵字:視頻資料

            免費領取 達內課程視頻學習資料

          • 視頻學習QQ群

            添加QQ群:1143617948

            免費領取達內課程視頻學習資料

          Copyright ? 2018 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

          選擇城市和中心
          江西省

          貴州省

          廣西省

          海南省

          香蕉视频在线一级a做爰片免费观看视频 欧美成年性色生活片 百度 好搜 搜狗
          <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>