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 }