---
# System prepended metadata

title: 大一上期末考題(函式定義) -2022/1/10-
tags: [程式設計]

---

> 
###### tags: `程式設計`

# 大一上期末考題(函式定義) -2022/1/10-
底下是我位期末做的一些筆記，我的方法並不是快速或最好的，可以參考看看><
(裡面的變數是我自己設的，也可以改成自己喜歡的變數來理解)
((有錯誤的地方務必跟我反映QAQ，以改進，像是縮排或其他打錯之類的))

## 第一題: 求兩整數m與n之較大值
```c=
#include <stdio.h>
int big(int m,int n){       //訂一個函式
	int ans;           //設一個最大值的結果
    if (m>=n){            //如果m<=n，就回傳m
        ans=m;            //把值放進ans
    }
    else{
        ans=n;           //如果n比較大，把值放進ans
    }
    return ans;          //回傳ans給函式
}
int main(){
    int m=5;            //設一個m=5
    int n=1;            //設一個n=1
    int sum=0;         //設一個sum 存最大值     
    sum=big(m,n);      //把函式的最大值給sum
}
```

## 第二題: 求m屬於NU{0}所有位數之和
```c=
#include <stdio.h>
int total(int m){               //定一個函式
    int sum=0;                 //定一個總和
    while (true){              //當m>0成立時
        if (m>0){             //當m/10>0成立時
            sum=m%10+sum;     //sum就會把m%10的值加起來
            m=m/10;          //m要變/10之後的整數
        } 
    }
    return sum;               //當迴圈條件不成立就會回傳sum值
}
int main(){
    int m=1234;              //設一個變數m
    int sum=0;               //設一個變數sum
    sum=total(m);            //回傳sum的值
}
```
## 第三題: 判斷m屬於N是否為質數
```c=
#include <stdio.h>
int odd(int m){             //設一個函式
    int n=2;               //設一個除數
    while (n<m){           //當除數<被除數時
        if (m%n==0){       //如果m%n的餘數==0,return 0(false)
            return 0;
        }
        n=n+1;            //每次都要除數+1
    }
    return 1;             //如果m%n的餘數都!=0,return 1(true)
}
int main(){
    int m=13;            //設一個被除數(變數m)
    int ans;              //設一個接受函式的值
    ans=odd(m);         //將函式中的值存入ans
}  
```

## 第四題: 將整數m的個位數與十位數字交換
```c=
#include <stdio.h>
int change(int m){                    //設一個函式
    int m1;                         //此變數接m的個位數
    int m2;                         //此變數接m的十位數
    m1=m%10;                      //m1接m的個位數
    m2=(m-m1)%100/10;                 //m2接m的十位數
    m=m/100*100+m1*10+m2;     //m變成無條件捨去到百位然後再加上m1十位 m2個位
    return m;                     //將m的值回傳
}
int main(){
    int m=259;                     //給變數m一個值
    int ans;                        //設一個接函式答案的ans
    ans=change(m);                 //將函式的答案存入ans
}
```
## 第五題:  將整數變數之符號位元反向
```c=
#include <stdio.h>
int ch(int m){                       //設一個函式
    if (m>0){                      //如果m>0
        return -m;                 //將m變成負的
    }
    return m-2m;                      //將m變成正的
}
int main(){ 
    int m=-5;                        //給m變數一個值
    int ans;                       //設一個接函式答案的ans
    ans=ch(m);                    //將函式的答案存入ans
}
```
## 第六題:  將兩相異變數具較大值者清為0
```c=
#include <stdio.h>
int big_zero(int m,int n){           //設一個函式
    if(m>n){                    //如果m>n
        m=0;                  //將m清成0並回傳
        return m ;
    }
    else{                      //否則就將n清為0並回傳
        n=0;
        return n;
    }
}
int main(){
    int m=5,n=10;                 //設變數m,n的值
    int ans;                     //設一個接函式答案的ans
    ans=big_zero(m,n);           //將函式的中清為0的答案存入ans
}  
```
## 第七題: 將兩整數變數m與n的內容交換
```c=
#include <stdio.h>
int ch(int m, int n){
    return m=n;
}
int main() {
    int m=3,n=1;
    int i=m;          //多一個變數i存m
    m=ch(m,n);       //m會拿到函式裡的n的值
    n=i;            //n還是拿到m的值(因為i就是m的值
} 

```
## 第八題: 計算[m,n]之間所有質數之和，m,n屬於N
```c=

```
## 第九題: 判斷m屬於N是否為完全數 (就是他的因數相加會不會是他自己)
```c=
#include <stdio.h>
int beauty(int m){            //設一個函式
    int sum=0;              //設一個完全數的綜合是0
    int n=1;                //設除數=1
    while (m>=n){           //當x>=除數時
        if (m%n==0){       //如果m%n的條件成立
            sum+=n;         //sum就+n
        }
        n+=1;             //n每次做完都要+1
    }
    sum=sum-m;            //sum的最後結果都要再剪掉自己
    if (sum==m){           //如果sum等於m 
        return 1;         //sum是完全數
    }
    return 0;              //不是就不是完全數
}
int main(){
    int m=12;              //給m一個值
    int ans;                //設一個變數儲存函式的值
    ans=beauty(m);        //將函式的值帶入ans
    return ans;            //將ans的值回傳
} 

```
## 第十題: 求兩自然數m與n的最小公倍數
```c=
#include <stdio.h>
int  cm(int m, int n){                 //設一個函式
    int i=2;                         //設除數i
    int ans;                        //ans接最後答案
    for (i; i<=m && i<=n; i++){         //如果i<=m跟i就做底下動作
        if (m%i==0 && n%i==0){      //當m跟n %i都=0時
            if (m>=n){             //如果m>=n 回傳m*i
                return m*i;
            }
            return n*i;             //如果n>m 回傳n*i
        }
        else{                      
            return m*n;
        }
    }
}
int main(){
    int m=2, n=7;                   //給m跟n個一個值
    int ans;                       //ans裝函式的回傳
    ans=cm(2, 7);                  //ans=函式
    return ans;                    //回傳ans
} 

```
## 第十一題: 求自然數m與n是否互質
```c=
int mu(int m, int n){                      //設一個函式
    int i=2;
    for(i; m>=i && n>=i; i++){             //當i<=m,n時
        if (m%i==0 && n%i==0){          //如果m%i跟n%i都==0
            return 0;                  //回傳0(false)
        }
    }
    return 1;                          //如果!=0，回傳1(true)
}
int main(){
    int m=2, n=3;                       //設變數m,n
    int ans;                           //ans放最後的答案
    ans=mu(m, n);                      //ans被放入函式的值
    return ans;                        //回傳ans
} 

```
## 第十二題: 將一正整數m四捨五入到十位數
```c=
#include <stdio.h>
int fofi(int m){
    if (m%10>=5){             //如果m%的餘數>=5，回傳五入的值到m
        return m/10*10+10;
    }
    return m/10*10;           //沒有就四捨
}
int main(){
    int m=327;
    int ans;
    ans=fofi(m);              //將函式的值存入ans
    return ans;               //回傳ans
}  

```
## 第十三題: 將一浮點數m四捨五入到個位數
```c=
int fofi(float m){
    int n;              //設一個整數n
    n=m*10;           //將浮點數m*10後放進整數n(小數點一位後的就不用了)
    if (n%10>=5){       //如果n%的餘數>=，就回傳五入的值(判斷m小數點第一位是否>=5)
        return n/10+1;
    }
    return n/10;        //沒有就四捨
} 
int main(){
    float m=13.5;
    int ans;
    ans=fofi(m);        //將函式的值存入ans
    return ans;         //回傳ans
} 

```
## 第十四題: 求n屬於NU{0}的有效位數共有幾個
```c=

```
## 第十五題: 求兩整數m與n是否皆為偶數
```c=
int inte(int m, int n){
    if (m%2==0 && n%2==0){  //m跟n都%取餘數如果都==0
        return 1;           //則回傳1(true)
    }
    return 0;               //否則回傳0(false)
}
int main(){
    int m=4,n=3;
    int ans;
    ans=inte(m,n);          //將函式值存入ans
    return ans;             //回傳ans
} 

```

## 第十六題: 求m屬於NU{0}有幾個位數是奇數
```c=
#include <stdio.h>
int odd(int m){               //設一個函式
    int add=0;              //add裝最後有幾個奇數
    while (m>0){            //當m>0座以下
        if (m%10%2!=0){    //如果m%10%2的餘數!=0(奇數的意思)
            add+=1;       //add就+1
        }
        m=m/10;          //每次m都要/10取整數
    }
    return add;            //回傳add
}
int main(){
    int m=13579;
    int ans;
    ans=odd(m);           //將函式的值傳到ans
    return ans;            //回傳ans
}

```
## 第十七題: 計算1+3+5+…+(2n+1), n屬於NU{0}
```c=
//for迴圈解法//
#include <stdio.h>        
int mix(int n){
	int num;              //num存2i+1的答案
	int add=0;
	for(int i=0; i<=n; i++){   //只要i<=num就做add+num(eg:1+3+…)
	    num=i+i+1;
	    add+=num;
    }
    return add;           //將add回傳
}
int main(){
	int n=2;
    int ans;
	ans=mix(n);           //將函式的值存入ans
	return ans;           //回傳ans
}

```
```c=
//這是用while的方式解//
#include <stdio.h>         
int mix(int n){
    int i=0;
    int num=0;
    int add=0;
    while(i<=n){
        num=i+i+1;
        add+=num;
        i++;
    }
    return add;
}
int main(){
    int n=2;
    int ans;
    ans=mix(n);
    return ans;
} 

```
## 第十八題: 計算n階乘,n屬於NU{0}
```c=
#include <stdio.h>
int add(int n){
    int ans=1;
    for (int i=1; i<=n; i++){   //當i<=n時ans就會*i(就跟階乘一樣只是式從1開始乘
        ans=ans*i;        
    }
    return ans;            //回傳ans
} 
int main(){
    int n=5;
    int ans;
    ans=add(n);           //將函式的值放入ans
    return ans;           //回傳ans
}

```
## 第十九題: 如果c語言不提供乘法，請在此限制下，求m*n的積，m,n屬於N{0}
```c=
#include <stdio.h>
int acc(int m, int n){        //設一個函式
    int i=1;              //i=加幾次
    int ans=0;           //ans存入答案
    while (i<=n){         //當i<=n時
        ans+=m;        //ans就要+m
        i+=1;           //每次i都要+1
    }
    return ans;          //回傳ans
}
int main(){
    int m=5, n=2;         //設變數m,n的值
    int ans;
    ans=acc(m,n);         //ans存放函式的值
    return ans;           //回傳ans
}  

```
## 第二十題: 如果c語言不提供除法，請在此限制下，求m/n2的商，m,n屬於N{0}
```c=
#include <stdio.h>
int quo(int m, int n){        //設一個函式
    int ans=0;
    for (int i=1; i<=n; i++){  //設一個迴圈做，當i<=n時，ans就要+m
        ans+=m;
    }
    return ans;          //回傳ans
}
int main(){     
    int m=5,n=2;    
    int ans;
    ans=quo(m,n);       //將quo的值存入ans
    return ans;         //回傳ans
}

```