1. 程式人生 > 實用技巧 >實驗3

實驗3

實驗一

#include <math.h>
#include <stdio.h>
int main() {
    float a, b, c, x1, x2;
    float delta, real, imag;
    printf("Enter a, b, c: ");
    while (scanf("%f%f%f", &a, &b, &c) != EOF) {
        if (a == 0)
            printf("not quadratic equation.\n\n");
        else {
            delta 
= b * b - 4 * a * c; if (delta >= 0) { x1 = (-b + sqrt(delta)) / (2 * a); x2 = (-b - sqrt(delta)) / (2 * a); printf("x1 = %.2f, x2 = %.2f\n\n", x1, x2); } else { real = -b / (2 * a); imag
= sqrt(-delta) / (2 * a); printf("x1 = %.2f + %.2fi, x2 = %.2f - %.2fi\n\n", real, imag, real, imag); } } printf("Enter a, b, c: "); } return 0; }

LOOK DOWN↓

實驗二

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define
N 5 int main() { int x, n; srand(time(0)); n = 0; do { n++; x = rand() % 10; printf("%3d", x); } while (n < N); printf("\n"); return 0; }

COUNTINUE↓

實驗三

#include <stdio.h>
int main()
{
    int i, j,n;
    n = 0;
        for (i = 101; i <= 200; i++)
    {
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)          
            {
                break;
            }
            else
            {
                if (j == i - 1)         
                {
                    printf("%d ", i);
                    n = n + 1;
                    
                    

                }
            }

        }


    }
        printf("\n");
        printf("101-200的素數共有%d個", n);
        
}

實驗四

#include <stdio.h>
#include <stdlib.h>
int main()
{
    long int  s;
    int t,k,n;
    n = 0;
    k = 1;
    printf("Enter a number:");
    scanf_s("%1d", &s);
   
   
    while (s > 0);
    {
        t = s % 10;
        
    
        
          if(t % 2 == 1)
        {
            n = n + t * k;
            k = k * 10;
            
        }
        s = s / 10;
        
    }
    printf("\n");
    printf("new number is=%d", n);
    return 0;
   
  
        
}

這道題目學過VB的同學一定不會陌生。。。思路很簡單  

取出奇數:先倒序取出各個位上的數,即每次用10取餘,然後整體整除10去掉最後一位得到了各位的數,然後再用2除得到餘數,若餘數為1則為奇數

確保順序:先取出的數為個位,後為十位,百位。。。以此類推,那麼只要第一次乘1加第二次乘10如此下去即可

實驗五

#include <stdio.h>
#include <stdlib.h>
    int main()
    {
        int n,i,j,k;
        double s, m;
        s = 0;
        k = 1;
        m = 1;
        printf("Enter n(1~10);");
        scanf_s("%d", &n);

        for (i = 1; i <= n; i++)
        {
            
            m = 1;
            {
                for (j = 1; j <= i; j++)
                    m = m * j;
            }
            s = s + (1 / m )*k;
            k = -1*k;
        }
        printf("n=%d,s=%lf", n,s);
        



    }

1l不分導致我在整個演算法完全正確程式沒有報錯的情況下盯著程式看了整整一晚上不知道錯在哪了!結果發現是這兩個東西搞混了

這告誡我們學習基礎知識的時候一定要用心。。。。

實驗六

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int r, flag, sum, n;                   
    srand((int)time(0));       
    r = rand() % 31 + 1;                
    for (flag = 0, sum = 1; sum <= 3 && flag == 0; sum++)
    {
        printf("請輸入你猜的日期:");
        scanf_s("%d", &n);
        if (n == r)
        {
            flag = 1;
            break;
        }
        else if (n > r)
                printf("猜大了,懦弱之舉我絕不姑息!\n");
            else
                printf("猜小了,就這樣而已嗎?\n");
    }
    if (flag == 1)
        printf("你猜對了,起飛咯!\n");
    else
        printf("三次結束,你沒有猜對,撈是真的撈,不過因為你不對,所以你才對,這是一個哲學!\n正確日期為%d",r);
    return 0;
}

皮一下很開心

--------------------------------------------------------------------------------------------華麗的分割線------------------------------------------------------------------------------------------------------

接下來為技術總結時間:

·此次任務對我的提升巨大,我鞏固了各種資料型別的使用,然後回憶了好多高中時期學習的演算法,比如倒序取餘和二進位制的產生,還有K每次取反,提高了我的思維和獨立思考能力,同時感受到了C語言編寫程式的樂趣。

·尚存的問題也有,比如演算法的優化不到位,可以簡略的步驟沒處理

·希望以後可以獨立設計出更多優秀有創意的演算法