2013年 833c語言程序 江南大學 (A卷)

1.編寫程序實現求兩個整數最大公約數和最小公倍數.

方法一:輾轉相除法

算法思路:兩個整數a,b,其中a>b,求其最大公約數和最小公倍數
步驟① a%b=c,其中c爲餘數
步驟② 若餘數c爲0,即a可以把b給整除,也就是說這裏的b就是其最大公約數;然後給,再通過a×b=最大公約數×最小公倍數,求得其最小公倍數即可
步驟③ 若餘數c不爲0,此時需要將a=b;b=c;然後再執行步驟②即可
例如:求 15和50的最大公約數和最小公倍數
首先,比較找出最大的數賦值給a,即a=50,b=15;
接着,求餘數c的值,即 50%15=5 此時的餘數c爲5,不爲0
即將a=b;b=c; <===> a=15,b=5;
接着,求餘數c的值,即15%5=0 此時餘數c爲0,結束,此時5就是其最大公約數,50×15/5就爲最小公倍數
代碼如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
   int a,b,m,n,c;
   scanf("%d %d",&a,&b);//輸入兩個數,由題意可知,a>b
   m=a;
   n=b;
   while(b!=0)//這裏的b爲除數
   {
       c=a%b;//這裏的c爲餘數
       a=b;
       b=c;
   }
   printf("最大公約數爲:%d\n",a);
   printf("最小公倍數爲:%d\n",m*n/a);
    return 0;
}

方法二:相減法

算法思路:兩個數來回相減,大數減小數,直到兩數相減結果爲0爲止.
例如,求16和5的最大公約數和最小公倍數
若a>b,即 a=a-b
反之,b=b-a
一直相減,直到a和b的值相等爲止,即a-b==0爲止
代碼如下:

#include< stdio.h>
int main()
{
    int n,a,b,c;                             
    scanf("%d",&n) ;                 //定義n,爲了控制n組數據循環
    while(n--)
    {
        scanf("%d %d",&a,&b);  //輸入a,b
	    c=a* b;                            //c爲a*b的值
        while(a!=b)                      //當a==b時結束
        {
            if(a>b)                          //如果a>b,則a=a-b
            {
                a=a-b;
            }
            else                            //否則b>a,b=b-a
            {
                b=b-a;
            }
        }
        printf("%d %d\n",a,c/a);         //由於最大公約數*最小公倍數=兩數相乘
    }                                    //所以,a爲最大公約數,c/a爲最大公倍數
    return 0;
}

2.假設一個小球從200米高的空中落下,每次反彈一半高度,求第5次落下小球經過的路徑是多少?求第八次反彈高度是多少?

解題思路:小球從200m高下落,第一次下落,會反彈到100m處,即

3.求XX年XX月XX日到該年(即同一年)XX年XX日 相差多天?(同一天算一天,考慮瑞年問題)

4.求子串husdstring在母串sdfstring中出現的次數?

5.編寫程序實現,輸入一組數據,用冒泡法進行排序(編寫一個函數實現),在主函數中輸入輸出。**需要用指針實現

6.輸入一組字符實現倒序輸出(用遞歸函數實現),輸出結果保存到“out。txt”中。。。

7.編寫程序,建立一動態鏈表,中包含學生學號,姓名,年齡,輸入一個學生學號刪除相對應的結點。。

8。有一5×5的矩陣,找出最大的數放在矩陣中間,左上角,右上角,左下角。右下角,分別放第二第三第四大的數。。。

未完待續…

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