程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 「C語言」「例題」函數,c語言例題

「C語言」「例題」函數,c語言例題

編輯:關於C語言

「C語言」「例題」函數,c語言例題


    本篇收集《C語言程序設計教程》第八章“函數”的所有例題。

 

1 #include <stdio.h> 2 3 //求矩形面積 4 5 print_star()/* 打印星號個數 */ 6 { 7 int i; 8 for(i=0;i<55;i++) 9 printf("*"); 10 printf("\n"); 11 } 12 13 float area(float a,float b)/* 求矩形面積函數 */ 14 { 15 float s; 16 s=a*b; 17 return s; 18 } 19 20 int main()/* 主函數 */ 21 { 22 float a,b,s; 23 print_star(); 24 printf("please input a and b:\n"); 25 scanf("%f,%f",&a,&b); 26 s=area(a,b); 27 printf("area=%.2f\n",s); 28 print_star(); 29 return 0; 30 } 8.1 求矩形面積

 

1 #include <stdio.h> 2 3 //無參函數定義舉例 4 5 output() 6 { 7 printf("***********************\n"); 8 printf(" How are you! \n"); 9 printf("***********************\n"); 10 } 11 12 int main() 13 { 14 output(); 15 return 0; 16 } 8.2 無參函數定義舉例

 

1 #include <stdio.h> 2 #define PI 3.1415926 3 4 //求半徑為r的圓的面積 5 6 float a(float r) 7 { 8 return(PI*r*r); 9 } 10 11 int main() 12 { 13 float r; 14 printf("請輸入圓的半徑:"); 15 scanf("%f",&r); 16 printf("area=%f",a(r)); 17 return 0; 18 } 8.3 求半徑為r的圓的面積

 

1 #include <stdio.h> 2 3 //函數表達式調用 4 5 max(int x,int y) 6 { 7 int z; 8 z=(x>y)?x:y; 9 return(z); 10 } 11 12 int main() 13 { 14 int a,b,m; 15 scanf("%d,%d",&a,&b); 16 m=max(a,b);/* max(a,b)作為表達式出現在賦值號右邊 */ 17 printf("max=%d",m); 18 return 0; 19 } 8.4 函數表達式調用

 

1 #include <stdio.h> 2 3 //函數表達式調用出現在實參表中 4 5 max(int x,int y) 6 { 7 int z; 8 z=(x>y)?x:y; 9 return(z); 10 } 11 12 int main() 13 { 14 int a,b,c,m; 15 scanf("%d,%d,%d",&a,&b,&c); 16 m=max(max(a,b),c); 17 printf("max=%d",m); 18 return 0; 19 } 8.5 函數表達式調用出現在實參表中

 

1 #include <stdio.h> 2 3 //將用戶輸入的華氏溫度換算成攝氏溫度輸出。華氏溫度與攝氏溫度的換算公式為:C=(5/9)*(F-32) 4 5 int ftoc(float f) 6 { 7 return (5.0/9.0)*(f-32); 8 } 9 10 int main() 11 { 12 float f; 13 printf("請輸入一個華氏溫度:\n"); 14 scanf("%f",&f); 15 printf("攝氏溫度為:%d",ftoc(f)); 16 return 0; 17 } 8.6 將用戶輸入的華氏溫度換算成攝氏溫度輸出

 

1 #include <stdio.h> 2 3 //實參與形參之間單向的值傳遞 4 5 int main() 6 { 7 int a=3,b=5; 8 swap(a,b); 9 printf("a=%d,b=%d",a,b); 10 return 0; 11 } 12 13 void swap(int x,int y) 14 { 15 int t; 16 t=x; 17 x=y; 18 y=t; 19 } 8.7 實參與形參之間單向的值傳遞

 

1 #include <stdio.h> 2 3 //實參的求職順序 4 5 int main() 6 { 7 int i=3,p; 8 p=f(i,++i,++i);/* 函數調用 */ 9 //Turbo C系統按從右至左的順序求實參的值,相當於(5,5,4) 10 printf("%d",p); 11 return 0; 12 } 13 14 int f(int a,int b,int c)/* 函數定義 */ 15 { 16 printf("%d %d %d\n",a,b,c); 17 return(a+b+c); 18 } 8.8 實參的求職順序

 

1 #include <stdio.h> 2 3 //數組元素作為函數的形參 4 5 float max(float x,float y) 6 { 7 if(x>y) return x; 8 else return y; 9 } 10 11 int main() 12 { 13 float m,a[10]={12.3,105,34.5,50,67,9,78,98,89,-20}; 14 int k; 15 m=a[0]; 16 for(k=1;k<10;k++) 17 m=max(m,a[k]); 18 printf("%2.f\n",m); 19 return 0; 20 } 8.9 數組元素作為函數的形參

 

1 #include <stdio.h> 2 3 //編寫冒泡排序函數,對主函數中輸入的無序整數按由大到小的順序進行排序。 4 5 sort(int b[10],int n) 6 { 7 int i,j,t; 8 for(i=0;i<n-1;i++) 9 for(j=0;j<n-i-1;j++) 10 if(b[j]<b[j+1])/* b[j]和b[j+1]交換 */ 11 { 12 t=b[j]; 13 b[j]=b[j+1]; 14 b[j+1]=t; 15 } 16 } 17 18 int main() 19 { 20 int a[10],i; 21 printf("Please input 10 numbers:\n"); 22 for(i=0;i<10;i++) 23 scanf("%d",&a[i]); 24 sort(a,10);/* 調用函數對數組進行排序 */ 25 printf("Sorted data is:\n"); 26 for(i=0;i<10;i++) 27 printf("%d ",a[i]); 28 printf("\n"); 29 return 0; 30 } 8.10 編寫冒泡排序函數

 

1 #include <stdio.h> 2 3 //求3*4的矩陣中所有元素的最大值,要求用函數來實現 4 5 max(int b[][4]) 6 { 7 int i,j,k,max1; 8 max1=b[0][0]; 9 for(i=0;i<3;i++) 10 for(j=0;j<4;j++) 11 if(b[i][j]>max1) 12 max1=b[i][j]; 13 return (max1); 14 } 15 16 int main() 17 { 18 int m,a[3][4]={5,16,30,40,23,4,156,8,1,3,50,37}; 19 m=max(a); 20 printf("max is %d\n",m); 21 return 0; 22 } 8.11 求3*4的矩陣中所有元素的最大值,要求用函數來實現

 

1 #include <stdio.h> 2 3 //輸入兩個整數,按從小到大的順序輸出,調用swap函數實現變量值的交換。 4 5 swap(int a1,int a2) 6 { 7 int a; 8 a=a1; 9 a1=a2; 10 a2=a;/* 交換a1和a2,m和n不變 */ 11 } 12 13 int main() 14 { 15 int m,n; 16 printf("Input m,n:"); 17 scanf("%d%d",&m,&n); 18 if(m>n) swap(m,n);/* 實參傳送m和n的值 */ 19 printf("Sorted:%d %d \n",m,n); 20 return 0; 21 } 8.12 輸入兩個整數,按從小到大的順序輸出,調用swap函數實現變量值的交換

 

1 #include <stdio.h> 2 3 //對用戶定義的被調函數作聲明 4 5 int main() 6 { 7 float add(float x,float y);/* 對被調函數的聲明 */ 8 float a,b,c; 9 scanf("%f,%f",&a,&b); 10 c=add(a,b); 11 printf("sum is %f",c); 12 return 0; 13 } 14 15 float add(float x,float y)/* 函數定義 */ 16 { 17 return (x+y); 18 } 8.13 對用戶定義的被調函數作聲明

 

1 #include <stdio.h> 2 #include <math.h> 3 #define PI 3.1415926 4 5 //函數的嵌套調用 6 7 float area_ring(float x,float y); 8 float area(float r); 9 10 int main() 11 { 12 float r,r1; 13 printf("input two figures:\n"); 14 scanf("%f,%f",&r,&r1); 15 printf("area_ring is %f ",area_ring(r,r1)); 16 return 0; 17 } 18 19 float area_ring(float x,float y) 20 { 21 float c; 22 c=fabs(area(x)-area(y)); 23 return c; 24 } 25 26 float area(float r) 27 { 28 return (PI*r*r); 29 } 8.14 函數的嵌套調用

 

1 #include <stdio.h> 2 3 //用遞歸方法n! 4 5 long int fac(unsigned int n) 6 { 7 long int f; 8 if(n==0) return 1; 9 f=fac(n-1)*n; 10 return(f); 11 } 12 13 int main() 14 { 15 unsigned int n; 16 printf("input a unsigned interger number:\n"); 17 scanf("%d",&n); 18 printf("%d!=%10ld",n,fac(n)); 19 return 0; 20 } 8.15 用遞歸方法n!

 

1 #include <stdio.h> 2 3 //利用遞歸算法求Fibonacci數列 4 5 long f(int n) 6 { 7 long s; 8 if(n==1 || n==2) 9 return 1; 10 s=f(n-1)+f(n-2); 11 return s; 12 } 13 14 int main() 15 { 16 int n; 17 printf("please input n:\n"); 18 scanf("%d",&n); 19 if(n<0) 20 printf("error!\n"); 21 else 22 printf("第%d項Fibonacci數列的值為%ld",n,f(n)); 23 return 0; 24 } 8.16 利用遞歸算法求Fibonacci數列

 

1 #include <stdio.h> 2 3 //漢諾塔問題 4 5 void haoni(int n,char x,char y,char z) 6 { 7 if(n==1) printf("%c->%c\n",x,z); 8 else 9 { 10 haoni(n-1,x,z,y);/* 遞歸調用 */ 11 printf("%c->%c\n",x,z); 12 haoni(n-1,y,x,z);/* 遞歸調用 */ 13 } 14 } 15 16 int main() 17 { 18 int m; 19 printf("Input the number of disks:"); 20 scanf("%d",&m); 21 printf("The steps to moving %3d disks:\n",m); 22 haoni(m,'A','B','C'); 23 return 0; 24 } 8.17 漢諾塔問題

 

1 #include <stdio.h> 2 #define PI 3.14 3 4 //已知圓的半徑,求周長、面積 5 6 float c,area; 7 8 void f(float r) 9 { 10 c=2*PI*r; 11 area=PI*r*r; 12 } 13 14 int main() 15 { 16 float r; 17 printf("input radius:"); 18 scanf("%f",&r); 19 f(r); 20 printf("%f,%f\n",c,area); 21 return 0; 22 } 8.18 已知圓的半徑,求周長、面積

 

1 #include <stdio.h> 2 3 //比較兩個數,輸出較大者 4 5 int a=3,b=5; 6 7 max(int x,int y) 8 { 9 int c; 10 c=x>y?x:y; 11 } 12 13 int main() 14 { 15 int a=8; 16 printf("%d\n",max(a,b)); 17 return 0; 18 } 8.19 比較兩個數,輸出較大者

 

1 #include <stdio.h> 2 3 //靜態局部變量 4 5 int n=1; 6 7 func() 8 { 9 static int a=2;/* 靜態局部變量,與main()函數中的a不同 */ 10 a+=2; 11 ++n; 12 printf("func:n=%d a=%d\n",n,a); 13 } 14 15 int main() 16 { 17 static int a;/* 靜態局部變量,初始化為0 */ 18 printf("main:n=%d a=%d\n",n,a); 19 func(); 20 a+=10; 21 printf("main:n=%d a=%d\n",n,a); 22 func(); 23 printf("main:n=%d a=%d\n",n,a); 24 return 0; 25 } 8.20 靜態局部變量

 

#include <stdio.h> //自動變量的應用 func(int n) { auto int a=2;/* 自動變量a,每調用一次都要重新賦初值 */ a+=2; ++n; printf("func:n=%d a=%d\n",n,a); } int main() { int a=0;/* 自動變量,與func()不同 */ func(1); printf("main:n=1 a=%d\n",a); a+=10; func(2); printf("main:n=1 a=%d\n",a); return 0; } 8.21 自動變量的應用

 

1 #include <stdio.h> 2 3 //寄存器變量 4 5 int main() 6 { 7 register int temp=0,j; 8 int i; 9 for(i=1;i<100;i++) 10 { 11 for(j=0;j<1000;j++) 12 temp+=j; 13 printf("i=%d temp%d",i,temp); 14 temp%=1; 15 } 16 return 0; 17 } 8.22 寄存器變量

 

1 #include <stdio.h> 2 3 //外部變量聲明語句 4 5 int main() 6 { 7 extern int a;/* 外部引用聲明 */ 8 printf("%d\n",a); 9 return 0; 10 } 11 12 int a=5; 8.23 外部變量聲明語句

 

1 #include <stdio.h> 2 3 //下面程序由兩個文件組成,請分析運行結果 4 5 /* 文件一 */ 6 int x=10;/* 定義非靜態全局變量x,y */ 7 int y=10; 8 9 add() 10 { 11 y=10+x; 12 x=x*2; 13 } 14 15 int main() 16 { 17 extern sub();/* 對外部函數sub進行引用聲明 */ 18 x+=5; 19 add(); 20 21 22 23 /* 此段內容沒印刷上 */ 24 25 26 return 0; 27 } 8.24 下面程序由兩個文件組成,請分析運行結果

 

1 #include <stdio.h> 2 3 //實現系統提供的字符串復制函數 strcpy()的全部功能 4 5 char *strcpy(char*s1,char *s2) 6 { 7 char *p=s1;/* 用p保存s1接收來的實參字符數組的首地址 */ 8 while(*s1++=*s2++);/* 當s2指到'\0'時,先賦值完成後循環結束 */ 9 return(p);/* 通過函數名返回指針值 */ 10 } 11 12 int main() 13 { 14 char s[20]; 15 printf("%s\n",strcpy(s,"Welocme to you!"));/* 輸出返回值指向的內容 */ 16 return 0; 17 } 8.25 實現系統提供的字符串復制函數 strcpy()的全部功能

 

1 #include <stdio.h> 2 3 //實現系統提供的字符串連接函數strcat(s1,s2) 4 5 char *strcat(char *s1,char *s2) 6 { 7 char *p=s1;/* 用p保存s1接收來的實參字符數組的首地址 */ 8 while(*s1) s1++;/* s1指到'\0'時循環結束 */ 9 while(*s1++=*s2++);/* 當s2指到'\0'時,先賦值完成後循環結束 */ 10 return(p);/* 通過函數名返回指針值 */ 11 } 12 13 int main() 14 { 15 char s[20]="Hello,"; 16 printf("%s\n",strcat(s,"Welcome to you!")); 17 return 0; 18 } 8.26 實現系統提供的字符串連接函數strcat(s1,s2)

 

1 #include <stdio.h> 2 3 //指向函數的指針程序舉例 4 5 int f(int x) 6 { 7 return 3*x*x+5*x-7; 8 } 9 10 int main() 11 { 12 int (*p)();/* 定義p為指向函數的指針變量 */ 13 int a; 14 p=f;/* 對指向函數的指針變量p賦值 */ 15 printf("Input x="); 16 scanf("%d",&a); 17 printf("(*p)(a)=%d\n",(*p)(a));/* 用函數指針參數調用函數,相當於f(a) */ 18 printf("p(2a)=%d\n",p(2*a));/* p(a)以指針變量名代替函數名來調用 */ 19 return 0; 20 } 8.27 指向函數的指針程序舉例

 

1 #include <stdio.h> 2 3 //求自然數1~n的奇數和或偶數和,用指向函數的指針變量實現 4 5 int evensum(int n)/* 求自然數1~n中偶數的和 */ 6 { 7 int i,sum=0; 8 for(i=2;i<=n;i+=2) 9 sum+=i; 10 return sum; 11 } 12 13 int oddsum(int n)/* 求自然數1~n中奇數的和 */ 14 { 15 int i,sum=0; 16 for(i=1;i<=n;i+=2) 17 sum+=i; 18 return sum; 19 } 20 21 int main() 22 { 23 int n,sum,flag; 24 int (*p)(int);/*定義指向函數的指針變量*/ 25 printf("input n:"); 26 scanf("%d",&n); 27 printf("input flag(0 or 1):"); 28 scanf("%d",&flag);/* 輸入標志 */ 29 if(flag==1) p=oddsum;/* 當flag為1時,p指向函數oddsum */ 30 else p=evensum;/* 當flag尾華1時,p指向函數evensum */ 31 sum=(*p)(n); 32 printf("sum=%d\n",sum); 33 return 0; 34 } 8.28 求自然數1~n的奇數和或偶數和,用指向函數的指針變量實現

 

1 #include <stdio.h> 2 3 //用指向函數的指針變量作為函數的參數 4 5 int evensum(int n)/* 求自然數1~n中偶數的和 */ 6 { 7 int i,sum=0; 8 for(i=2;i<=n;i+=2) 9 sum+=i; 10 return sum; 11 } 12 13 int oddsum(int n)/* 求自然數1~n中奇數的和 */ 14 { 15 int i,sum=0; 16 for(i=1;i<=n;i+=2) 17 sum+=i; 18 return sum; 19 } 20 21 int result(int n,int (*p)(int)) 22 { 23 int sum; 24 sum=(*p)(n);/* 調用p所指向的函數 */ 25 return sum; 26 } 27 28 int main() 29 { 30 int n,sum,flag; 31 printf("input n:"); 32 scanf("%d",&n); 33 printf("input flag(0 or 1):"); 34 scanf("%d",&flag); 35 if(flag==1) sum=result(n,oddsum); 36 else sum=result(n,evensum); 37 printf("sum=%d\n",sum); 38 return 0; 39 } 8.29 用指向函數的指針變量作為函數的參數

 

1 #include <stdio.h> 2 #define N 30 3 4 //編寫#include <stdio.h> 5 #define N 30 6 7 //編寫一個單科成績分析統計程序,要求如下: 8 //(1)從鍵盤輸入N名同學的成績 9 //(2)求其平均分、最高分、最低分 10 //(3)並統計各分數段人數和及格率 11 //(4)對學生成績進行降序排序 12 //(5)使用菜單完成各功能 13 14 input(float s[],int n) 15 { 16 int i; 17 printf("請輸入%d名學生的成績:\n",n); 18 for(i=0;i<n;i++) 19 scanf("%f",&s[i]); 20 } 21 22 count(float s[],int n) 23 { 24 int i,j,b[10]={0,0,0,0,0,0,0,0,0,0}; 25 int failure=0; 26 for(i=0;i<n;i++) 27 { 28 j=s[i]/10; 29 b[j]++; 30 } 31 printf(" 0-9 ,10-19,20-29,30-39,40-49,50-59,60-69,70-79,80-89,90-100\n"); 32 for(i=0;i<10;i++) 33 printf(" %-4d",b[i]); 34 for(i=0;i<6;i++) 35 failure+=b[i]; 36 printf("\n及格率:%2.f%%\n",(n-failure)/n*100); 37 } 38 39 avemaxmin(float s[],int n,float *aver,float *max,float *min) 40 { 41 int i; 42 float sum; 43 for(i=0;i<n;i++) 44 sum+=s[i]; 45 *min=s[0]; 46 *max=s[0]; 47 for(i=0;i<n;i++) 48 if(s[i]<s[0]) 49 *min=s[i]; 50 if(s[i]>s[0]) 51 *max=s[i+1]; 52 *aver=sum/n; 53 } 54 55 sort(float s[],int n) 56 { 57 int i,j,t; 58 for(i=0;i<n;i++) 59 for(j=0;j<n-i-1;j++) 60 if(s[j]<s[j+1]) 61 { 62 t=s[j]; 63 s[j]=s[j+1]; 64 s[j+1]=t; 65 } 66 } 67 68 output(float s[],int n) 69 { 70 int i; 71 printf("排序後的成績為:\n"); 72 for(i=0;i<n;i++) 73 printf("%.2f ",s[i]); 74 printf("\n"); 75 } 76 77 int main() 78 { 79 int choice,n; 80 float s[N],aver,max,min; 81 do 82 { 83 printf("1.輸入N名同學成績(必須先輸入成績)\n"); 84 printf("2.求平均分、最高分、最低分\n"); 85 printf("3.分段統計人數和及格率\n"); 86 printf("4.排序\n"); 87 printf("0.退出系統\n"); 88 printf("請選擇(0~4):請輸入選擇:"); 89 scanf("%d",&choice); 90 switch(choice) 91 { 92 case 1: 93 printf("請輸入學生人數:"); 94 scanf("%d",&n); 95 input(s,n); 96 break; 97 case 2: 98 avemaxmin(s,n,&aver,&max,&min); 99 printf("平均分=%.2f,最高分=%.2f,最低分=%.2f\n",aver,max,min); 100 break; 101 case 3: 102 count(s,n); 103 break; 104 case 4: 105 sort(s,n); 106 output; 107 break; 108 case 0:break; 109 } 110 }while(choice!=0); 111 return 0; 112 },要求如下: 113 //(1)從鍵盤輸入N名同學的成績 114 //(2)求其平均分、最高分、最低分 115 //(3)並統計各分數段人數和及格率 116 //(4)對學生成績進行降序排序 117 //(5)使用菜單完成各功能 118 119 input(float s[],int n) 120 { 121 int i; 122 printf("請輸入%d名學生的成績:\n",n); 123 for(i=0;i<n;i++) 124 scanf("%f",&s[i]); 125 } 126 127 count(float s[],int n) 128 { 129 int i,j,b[10]={0,0,0,0,0,0,0,0,0,0}; 130 int failure=0; 131 for(i=0;i<n;i++) 132 { 133 j=s[i]/10; 134 b[j]++; 135 } 136 printf(" 0-9 ,10-19,20-29,30-39,40-49,50-59,60-69,70-79,80-89,90-100\n"); 137 for(i=0;i<10;i++) 138 printf(" %-4d",b[i]); 139 for(i=0;i<6;i++) 140 failure+=b[i]; 141 printf("\n及格率:%2.f%%\n",(n-failure)/n*100); 142 } 143 144 avemaxmin(float s[],int n,float *aver,float *max,float *min) 145 { 146 int i; 147 float sum; 148 for(i=0;i<n;i++) 149 sum+=s[i]; 150 *min=s[0]; 151 *max=s[0]; 152 for(i=0;i<n;i++) 153 if(s[i]<s[0]) 154 *min=s[i]; 155 if(s[i]>s[0]) 156 *max=s[i+1]; 157 *aver=sum/n; 158 } 159 160 sort(float s[],int n) 161 { 162 int i,j,t; 163 for(i=0;i<n;i++) 164 for(j=0;j<n-i-1;j++) 165 if(s[j]<s[j+1]) 166 { 167 t=s[j]; 168 s[j]=s[j+1]; 169 s[j+1]=t; 170 } 171 } 172 173 output(float s[],int n) 174 { 175 int i; 176 printf("排序後的成績為:\n"); 177 for(i=0;i<n;i++) 178 printf("%.2f ",s[i]); 179 printf("\n"); 180 } 181 182 int main() 183 { 184 int choice,n; 185 float s[N],aver,max,min; 186 do 187 { 188 printf("1.輸入N名同學成績(必須先輸入成績)\n"); 189 printf("2.求平均分、最高分、最低分\n"); 190 printf("3.分段統計人數和及格率\n"); 191 printf("4.排序\n"); 192 printf("0.退出系統\n"); 193 printf("請選擇(0~4):請輸入選擇:"); 194 scanf("%d",&choice); 195 switch(choice) 196 { 197 case 1: 198 printf("請輸入學生人數:"); 199 scanf("%d",&n); 200 input(s,n); 201 break; 202 case 2: 203 avemaxmin(s,n,&aver,&max,&min); 204 printf("平均分=%.2f,最高分=%.2f,最低分=%.2f\n",aver,max,min); 205 break; 206 case 3: 207 count(s,n); 208 break; 209 case 4: 210 sort(s,n); 211 output; 212 break; 213 case 0:break; 214 } 215 }while(choice!=0); 216 return 0; 217 } 8.30 一個單科成績分析統計程序

 

1 #include <stdio.h> 2 3 //通過調用一個函數,將整型數組的所有元素都加3 4 5 void add(int b[],int n) 6 { 7 int i; 8 for(i=0;i<n;i++) 9 b[i]+=3; 10 } 11 12 int main() 13 { 14 int i,a[8]={1,2,3,4,5,6,7,8}; 15 add(a,8); 16 for(i=0;i<8;i++) 17 printf("%4d",a[i]); 18 return 0; 19 } 8.31 通過調用一個函數,將整型數組的所有元素都加3

 

1 #include <stdio.h> 2 3 //利用插入排序法將10個字符從小到大進行排序 4 5 insert(char s[]) 6 { 7 int i,j,t; 8 for(i=1;i<9;i++) 9 { 10 t=s[i]; 11 j=i-1; 12 while((j>=0)&&(t<s[j])) 13 { 14 s[j+1]=s[j]; 15 j--; 16 } 17 s[j+1]=t; 18 } 19 } 20 21 int main() 22 { 23 char a[11]; 24 int i; 25 printf("Input 10 character:"); 26 for(i=0;i<10;i++) 27 a[i]=getchar(); 28 a[i]='\0';/* 在10個字符後面加上'\0',形成字符串 */ 29 insert(a); 30 printf("Sorted character is:%s\n",a);/* 將已排序的10個字符輸出 */ 31 return 0; 32 } 8.32 利用插入排序法將10個字符從小到大進行排序

 

1 #include <stdio.h> 2 3 //十進制與其他進制(二至九進制)數間的互相轉換,程序能夠自動幫助用戶糾正輸入錯誤 4 5 long change(int a[],int len,int b) 6 /* 把輸入的字符數字轉換成十進制數字 */ 7 { 8 int i,k=1; 9 long num=0; 10 for(i=1;i<=len;i++) 11 { 12 num=num+a[i]*k; 13 k=k*b;/* k表示權值 */ 14 } 15 return num; 16 } 17 18 ten_to_oth()/* 十進制轉換為其他進制 */ 19 { 20 int sum,n,i=0,j,arr[80]; 21 printf("Please input a Dec_num:");/* 輸入10進制數 */ 22 scanf("%d",&sum); 23 printf("Please input the base:");/* 輸入想要轉換的進制 */ 24 scanf("%d",&n); 25 do 26 { 27 i++; 28 arr[i]=sum%n;/* 從下標1開始計數 */ 29 sum=sum/n; 30 if(i>=80) 31 printf("overflow"); 32 }while(sum!=0); 33 printf("The result is:"); 34 for(j=i;j>0;j--) 35 printf("%d",arr[j]); 36 printf("\n"); 37 } 38 39 oth_to_ten()/* 其他進制轉換為十進制 */ 40 { 41 int base,i,num,arr[80]; 42 long sum=0; 43 char ch; 44 /* 想將幾進制數轉換成十進制數,請輸入 */ 45 printf("Please input the base you want to change :"); 46 scanf("%d",&base); 47 /* 請輸入該數 */ 48 printf("Please input number:"); 49 scanf("%d",&num); 50 for(i=1;num!=0;i++) 51 { 52 arr[i]=num%10;/* 從下標1開始計數 */ 53 num=num/10; 54 } 55 sum=change(arr,i-1,base); 56 printf("The result is:%ld\n",sum); 57 } 58 59 int main() 60 { 61 int flag=1; 62 while(flag!=0) 63 { 64 printf("1:ten_to_oth\n"); 65 printf("2:oth_to_ten\n"); 66 printf("0:exit\n"); 67 printf("Enter a number:"); 68 scanf("%d",&flag); 69 switch(flag) 70 { 71 case 1:ten_to_oth();break;/* 其他進制轉換為十進制 */ 72 case 2:oth_to_ten();break;/* 十進制轉換為其他進制 */ 73 case 0:return 0; 74 } 75 } 76 return 0; 77 } 8.33進制轉換器

 

1 #include <stdio.h> 2 #include <math.h> 3 4 /*一個素數經過任意次調換位,任然為素數,則稱其為絕對素數, 5 例如,13(31)就是一個絕對素數。求兩位的所有絕對素數並輸出。*/ 6 7 int prime(int n)/* 判斷一個數是否是素數 */ 8 { 9 int i; 10 if(n<=1)/* 小於2不是素數 */ 11 return 0; 12 else if(n==2)/* 2是素數 */ 13 return 1; 14 else/* 大於2要判斷是不是 */ 15 { 16 for(i=2;i<sqrt(n);i++) 17 if(n%i==0)/* 一旦能整除i,則n不是素數 */ 18 return 0; 19 return 1;/* 如鼓苤蔥姓馓跤锞洌韓從來沒被i整除過,是素數 */ 20 } 21 } 22 23 int ab_prime(int m)/* 判斷一個位數是否是絕對素數 */ 24 { 25 int a; 26 a=(m%10)*10+m/10;/* 得到換位後的數 */ 27 if(prime(m)&&prime(a))/* m和a都是素數,則m為絕對素數,否則不是 */ 28 return 1; 29 else 30 return 0; 31 } 32 33 int main() 34 { 35 int i; 36 for(i=10;i<100;i++) 37 if(ab_prime(i))/* 循環從10到99找絕對素數 */ 38 printf("%d,",i);/* 是絕對素數則輸出 */ 39 return 0; 40 } 8.34 絕對素數的判斷

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved