C語言程序小練習
1、用C語言設計程序算出1-1/2+1/3-14+1/5。。。+1/99-1/100的值
#include<stdio.h> int main() { int i=1; double a=1.0,b=2.0,sum; while(b<=100) { i=-i; sum=i/b; a=a+sum; b=b+1; } printf("%f\n",a); return 0; }
2、用C語言設計程序算出1x2x3x4x5的值
1 #include<stdio.h> 2 int main() 3 { 4 int t,i; 5 t=1; 6 i=1; 7 while(i<=5) 8 { 9 t=t*i; 10 i=i+1; 11 } 12 printf("%d\n",t); 13 return 0; 14 }
1 #include<stdio.h> 2 int main() 3 { 4 int i,s=1; 5 for(i=1;i<6;i++) 6 { 7 s=s*i; 8 } 9 printf("%d\n",s); 10 return 0; 11 }
3,、用C語言設計程序算出兩個數的最大值
1 //第一種 2 #include<stdio.h> 3 int main() 4 { 5 int a,b; 6 scanf("%d,%d",&a,&b); 7 if(a<b)a=b; 8 printf("%d\n",a); 9 return 0; 10 } 11 12 13 //第二種 14 #include<stdio.h> 15 int main() 16 { 17 int max(int x,int y);//聲明max函數 18 int a,b,c; 19 scanf("%d,%d",&a,&b); 20 c=max(a,b);//調用下面定義的max函數 21 printf("%d\n",c); 22 return 0; 23 } 24 25 int max(int x,int y) 26 { 27 if(x>y)return(x); 28 else return(y); 29 }
4、用C語言設計程序算出三個數中的最大值
1 //第一種 2 #include<stdio.h> 3 int main() 4 { 5 int a,b,c; 6 scanf("%d,%d,%d",&a,&b,&c); 7 if(a<b)a=b; 8 if(a<c)a=c; 9 printf("%d\n",a); 10 return 0; 11 } 12 13 14 //第二種 15 #include<stdio.h> 16 int main() 17 { 18 int max(int x,int y,int z); 19 int a,b,c; 20 scanf("%d,%d,%d",&a,&b,&c); 21 int temp=max(a,b,c); 22 printf("%d\n",temp); 23 return 0; 24 } 25 int max(int a,int b,int c) 26 { 27 int max2(int x,int y); 28 int num=max2(a,b); 29 int result=max2(num,c); 30 return(result); 31 } 32 int max2(int x,int y) 33 { 34 if(x>y)return(x); 35 else return(y); 36 } 37 38 39 //第三種 40 #include<stdio.h> 41 int main() 42 { 43 int a,b,c; 44 scanf("%d,%d,%d",&a,&b,&c); 45 if(a>b) 46 { 47 if(a<c)a=c; 48 } 49 else 50 { 51 if(b>c)a=b; 52 else a=c; 53 } 54 printf("%d\n",a); 55 return 0; 56 } 57 //還有很多。。。
5、用C語言設計程序算出1到12之間奇數的乘積
1 #include<stdio.h> 2 int main() 3 { 4 int i,s=1; 5 for(i=1;i<12;i++) 6 { 7 if(i%2!=0)//取模(余數),不為零i為奇數不能被整除,否則能被整除為偶數 8 s=s*i; 9 else 10 continue; 11 12 } 13 printf("%d\n",s); 14 return 0; 15 }
1 #include<stdio.h> 2 int main() 3 { 4 int t,i; 5 t=1; 6 i=1; 7 while(i<13) 8 { 9 if(i%2!=0) 10 t=t*i; 11 i=i+1; 12 } 13 printf("%d\n",t); 14 return 0; 15 }
課后習題P36
8.1、輸出1900——2000年中是閏年的年份,符合下面兩個條件之一的年份是閏年
1)能被4整除,但不能被100整除;
2)能被100整除,且能被400整除。
1 #include<stdio.h> 2 int main() 3 { 4 int i; 5 for(i=1900;i<=2000;i++) 6 { 7 if((i%4==0 && i%100!=0)|| i%400==0) //閏年的經典判斷條件 8 printf("%d is a leap year!\n",i); 9 else 10 printf("%d is not a leap year!\n",i); 11 12 } 13 return 0; 14 }
4.1、兩數互換
1 //互換值的位置 2 #include<stdio.h> 3 int main() 4 { 5 int a,b,c; 6 printf("輸入兩個值並互換>>: \n"); 7 scanf("%d,%d",&a,&b); 8 c=a; 9 a=b; 10 b=c; 11 printf("%d %d\n",a,b); 12 return 0; 13 } 14 15 16 //經典互換,把大的值放第一位 17 #include<stdio.h> 18 int main() 19 { 20 int a,b,c; 21 printf("請輸入兩個值並互換>>: \n"); 22 scanf("%d,%d",&a,&b); 23 if(a<b) 24 { 25 c=b; 26 b=a; 27 a=c; 28 } 29 printf("%d %d\n",a,b); 30 return 0; 31 }
4.2、依次將10個數輸入,要求輸出其中最大的數。
1 #include<stdio.h> 2 int main() 3 { 4 int i,a[10],s=0; 5 printf("請輸入10個數字>>: \n"); 6 for(i=0;i<=9;i++) 7 { 8 scanf("%d",&a[i]); 9 } 10 for(i=0;i<=9;i++) 11 { 12 if(s<a[i]) 13 s=a[i]; 14 } 15 printf("最大的數是: %d\n",s); 16 return 0; 17 }
4.3、按大小順序輸出一些數
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,a[3],s=0; 5 printf("請輸入三個整數>>: \n"); 6 for(i=0;i<3;i++) 7 { 8 scanf("%d",&a[i]);//存儲輸入數值 9 } 10 for(i=0;i<2;i++) //雙循環 11 { 12 for(j=i+1;j<3;j++)//第二個循環到n-1,第二個循環到n, 13 if(a[i]<a[j])//每次拿前面的數與后面的數比較,即把小的數值與下一個數比較 14 //小於號表示從大到小,大於號表示從小到大排列 15 { 16 s=a[i]; 17 a[i]=a[j]; 18 a[j]=s; 19 } 20 } 21 for(i=0;i<3;i++)//重新定義循環輸出數組中新排列的數 22 printf("%d-",a[i]); 23 return 0; 24 }
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,a[5],s=0; 5 printf("請輸入三個整數>>: \n"); 6 for(i=0;i<5;i++) 7 { 8 scanf("%d",&a[i]);//存儲輸入數值 9 } 10 for(i=0;i<4;i++) //雙循環 11 { 12 for(j=i+1;j<5;j++)//第二個循環到n-1,第二個循環到n, 13 if(a[i]<a[j])//每次拿前面的數與后面的數比較,即把小的數值與下一個數比較 14 //小於號表示從大到小,大於號表示從小到大排列 15 { 16 s=a[i]; 17 a[i]=a[j]; 18 a[j]=s; 19 } 20 } 21 for(i=0;i<5;i++)//重新定義循環輸出數組中新排列的數 22 printf("%d-",a[i]); 23 return 0; 24 }
4.4、求1+2+3+4+5+···+100。
1 #include<stdio.h> 2 int main() 3 { 4 int i=0,t=0; 5 while(i<100) 6 { 7 i=i+1;//最后一個數99+1=100 8 t=t+i; 9 } 10 printf("sum is %d\n",t); 11 return 0; 12 }
1 #include<stdio.h> 2 int main() 3 { 4 int i,sum=0; 5 for(i=0;i<=100;i++) 6 sum=sum+i; 7 printf("sum is %d\n",sum); 8 return 0; 9 }
4.5、判斷一個數n能否同時被3和5整除。
1 #include<stdio.h> 2 int main() 3 { 4 int n; 5 printf("輸入一個整數能被3和5整除返回TRUE否則返回FALSE!\n"); 6 printf("輸入>>: "); 7 scanf("%d",&n); 8 if(n%3==0&&n%5==0) 9 printf("TRUE\n"); 10 else 11 printf("FALSE!\n"); 12 return 0; 13 }
4.6、將100~~200之間的素數輸出。
1 #include<stdio.h> //采用調用函數和求根取素. 2 #include<math.h> //下面用到sqrt,所以需要包含數據函數.sqrt是求根,屬數學函數. 3 4 int main() 5 { 6 int prime_number(int m);//要先聲明 7 int i; 8 for (i=100; i<=200; i++) //指定區間 9 { 10 if(prime_number(i) == 1) //i是實參,傳入形參m中進行運算,然后再由形參j帶出返回 11 printf("%d \n ",i); 12 } 13 return 0; 14 } 15 int prime_number(int m) //m是形參,用於接收實參i給的值 16 { 17 int j,k; 18 k=(int)sqrt(m); //求根,(int)是強制轉換,求根里要是浮點型. 19 for(j=2;j<=k;j++) 20 { 21 if(m%j==0) 22 return 0; //返回值,0為不是素數,1是素數 23 } 24 return 1; 25 }
4.7、求兩個數m和n的最大公約數。
1 #include<stdio.h> 2 int main() 3 { 4 int m,n,c; 5 int gcd(int x,int y); 6 printf("請輸入兩個數>>: \n"); 7 scanf("%d,%d",&m,&n); 8 c=gcd(m,n); //獲取最大公約數 9 printf("%d 和 %d 的最大公約數是:%d\n",m,n,c); 10 return 0; 11 } 12 int gcd(int x,int y) 13 { 14 int temp; 15 while(x%y!=0) 16 { 17 temp=y; 18 y=x%y; 19 x=temp; 20 } 21 return y; 22 } 23 24 最大公約數
補充:最小公倍數
1 #include<stdio.h> 2 int main() 3 { 4 int lcm(int x,int y); 5 int m,n,c; 6 printf("請輸入兩個數>>: \n"); 7 scanf("%d,%d",&m,&n); 8 c=lcm(m,n); 9 printf("最小公倍數是: %d\n",c); 10 return 0; 11 } 12 int lcm(int x,int y) 13 { 14 int i,temp; 15 if(x<y) //保證x,y中較大的數在x上,小的數在y上,小於號降序,大於號升序。 16 { //下面三行是經典代碼,實現兩個數互換 17 temp=x; 18 x=y; 19 y=temp; 20 } 21 for(i=1;i<=y;i++)//設定一個區間,從1到小的數之間的循環 22 { 23 if(!((x*i)%y)) //反復運算,直到取模無余數,那么小的數x乘以區間當前的i值,就是最小公倍數 24 { 25 return x*i; 26 } 27 } 28 } 29 30 最小公倍數
1 #include<stdio.h> 2 int main() 3 { 4 int gcd(int x,int y); 5 int lcm(int x,int y); 6 int m,n,c,d; 7 printf("輸入兩個數字: \n"); 8 scanf("%d,%d",&m,&n); 9 c=gcd(m,n); 10 d=lcm(m,n); 11 printf("最大公約數是: %d\n",c); 12 printf("最小公倍數是: %d\n",d); 13 return 0; 14 } 15 int gcd(int x,int y) 16 { 17 int temp; 18 while(x%y!=0) 19 { 20 temp=y; 21 y=x%y; 22 x=temp; 23 } 24 return y; 25 } 26 int lcm(int x,int y) 27 { 28 int i,temp; 29 if(x<y) 30 { 31 temp=y; 32 y=x; 33 x=temp; 34 } 35 for(i=2;i<=y;i++) 36 { 37 if(!((x*i)%y)) 38 { 39 return x*i; 40 } 41 } 42 }
