程序設計(C語言)實驗報告
實驗目的
(1)掌握函數的定義方法,調用方法,參數說明以及返回值;
(2)掌握實參與形參的對應關係,一集參數之間的'“值傳遞”的方式;
(3)掌握函數嵌套調用及遞歸調用的設計方法;
(4)在編寫過程中加深理解函數調用的程序設計思想。
實驗內容
(1)編輯,編譯,運行實驗指導中的程序,並分析輸出結果
(2)編寫一個函數primeNum(int x),功能是判別一個數是否是素數。
(3)編寫函數mulNum(int a,int b),功能是判定a是否是b的整數倍
實驗1方法一:
源程序:
#include<stdio.h>
#include<math.h>
int computeNum(int x)
{
int sum ,a,b,c,d,e;
sum=0;
x=abs(x);
a=x/10000;
b=(x%10000)/1000;
c=(x%1000)/100;
d=(x%100)/10;
e=(x%10)/1;
sum=a+b+c+d+e;
return sum;
}
main()
{
int a,b;
printf("Please input an integer:");
scanf("%d",&a);
b=computeNum(a);
printf("the sum of all digits is %dn",b);
}
輸入一個整數123 運行結果如圖
輸入整數98341驗證 運行結果如圖
方法二:
#include<stdio.h>
#include<math.h>
int computeNum(int x)
{
int sum,i,t;
sum=0;
x=abs(x);
for(i=4;i>=0;i--)
{
t=pow(10,i);
if(x>=t)
{
sum=sum+x/t;
x=x-(x/t)*t;
}
}
return sum;
}
main()
{
int a,b;
printf("Please input an integer:");
scanf("%d",&a);
b=computeNum(a);
printf("The sum of all digits is %dn:",b); }
輸入整數456運行結果如圖
輸入整數98341驗證運行結果如圖
實驗2:
源程序:
#include<stdio.h>
void move(char geton ,char puton)
{
printf("%c->%cn",geton,puton);
}
void Hanoi(int n,char one,char two,char three) {
if (n==1)
move(one,three);
else
{
Hanoi(n-1,one,three,two);
move(one,three);
Hanoi(n-1,two,one,three);
}
}
void main()
{
int m ;
printf("Input the number of diskes:"); scanf("%d",&m);
printf("The steps of moving %d diskes:n",m); Hanoi(m,'A','B','C');
}
輸入3運行結果如下:
輸入4運行結果如下:
實驗2:
源程序:
#include<stdio.h>
int i,a,x;
int primeNum(int x)
{
for(i=2;i<x;i++)
{
a=x%i;
if(a==0)
return 0;
}
return 1;
}
main()
{
printf("Please input x!n");
scanf("%d",&x);
if(x<2)
printf("wrong in put!n");
else
{
a=primeNum(x);
if(a==0)
printf("%d is not a prime number!n",x); else
printf("%d is a prime number!n",x);
}
}
輸入數據0運行結果如下:
輸入數據1運行結果如下:
輸入數據2運行結果如下:
輸入數據3運行結果如下:
輸入數據9運行結果如下:
輸入數據13運行結果如下:
輸入數據59運行結果如下:
輸入數據121運行結果如下:
實驗3: 源程序:
#include<stdio.h>
int mulNum(int a,int b) {
int i,c; c=a%b; if(c>0)
i=0; else i=1; return i; }
main() {
int a,b,s;
printf("please input a and b:n"); scanf("%d %d",&a,&b); s=mulNum(a,b); if(s==1)
printf("%d is a multiple of %dn",a,b); else
printf("%d is not a multiple of %dn",a,b); }
輸入數據1和5運行結果如下:
輸入數據5和5運行結果如下:
輸入數據6和2運行結果如下:
輸入數據6和4運行結果如下:
輸入數據20和4運行結果如下:
輸入數據37和9運行結果如下:
出現的問題及解決方法:
編譯過程中常出現因錯漏而使語句不規範的現象。解決方法:更加認真以及注意檢查。
實驗心得:
通過本次試驗我掌握了函數的定義,調用方法,參數的說明以及返回值,函數遞歸調用的設計方法等,逐步理解了函數調用的程序設計思想,學習過程常會遇到問題,因此需要認真理解,多作練習。