1、有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换.
#include<stdio.h>
int main()
{
int a=5,b=6,c;
c=a;
a=b;
b=c;
printf("%d\t%d",a,b);
return 0;
}
2、一次将10个数输入,要求输出其中最大的数.
#include<stdio.h>
int main()
{
int a[10];
int max=0,i=0;
for (i;i<10;i++)
{
scanf("%d",&a[i]);
if(i>=1)
{
if((a[i-1]<a[i]))
{
max = a[i];
}
}
}
printf("%d",max);
return 0;
}
3、有3个数a,b,c,要求按照大小顺序把它们输出.
#include<stdio.h>
int main()
{
int a,b,c,max,min,middle;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
if(a>c)
{
max=a;
middle=(b>c)?b:c;
min=(b>c)?c:b;
}
else
{
max=c;
middle=a;
min=b;
}
}
else
{
if(b>c)
{
max=b;
middle=(a>c)?a:c;
min=(a>c)?c:a;
}
else
{
max=c;
middle=b;
min=a;
}
}
printf("%d\t%d\t%d",max,middle,min);
return 0;
}
4、求1+2+3+...+100.
#include<stdio.h>
int main()
{
int i = 1,total=0;
for(i;i<=100;i++)
{
total+=i;
}
printf("%d",total);
return 0;
}
5、判断一个数n能否同时被3和5整除.
#include<stdio.h>
int main()
{
int num,result;
scanf("%d",&num);
if((num%3==0)&&(num%5)==0)
{
result = 0;
}else
{
result = 1;
}
printf("%d",result);
return 0;
}
6、将100~200之间的素数输出.
素数:除了1和本身之外不能被其他数整除
#include<stdio.h>
#include<math.h>
/*
判断是不是素数 ,判断能不能被2~sqrt(m)整除
*/
void Judge(int num)
{
int i=2,t=0;
// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型
int k = (int)sqrt((double)num);
for(i;i<=k;i++)
{
if(num%i==0)
{
break;
}
}
// 如果完成所有循环,那么m为素数
// 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k
if(i>k)
printf("%d是素数\n",num);
/*else
printf("%d不是素数\n",num);*/
}
int main()
{
int i;
for(i=100;i<=200;i++)
Judge(i);
return 0;
}
7、求两个数m和n的最大公约数.
#include<stdio.h>
/*
求两个数的最大公约数
按照从大(两个整数中较小的数)到小(到最小的整数1)的顺序求出第一个能
同时整除两个整数的自然数,即为所求。
两个数的最大公约数有可能是其中的小数,所以在按从大到小顺序找寻最大公约
数时,循环变量i的初值从小数n开始依次递减,去寻找第一个能同时整除两整数
的自然数,并将其输出。需要注意的是,虽然判定条件是i>0,但在找到第一个
满足条件的i值后,循环没必要继续下去,如,25和15,最大公约数是5,对于后
面的4、3、2、1没必要再去执行,但此时判定条件仍然成立,要结束循环只能借
助break语句。
*/
int main()
{
int m,n,a=0;
scanf("%d%d",&m,&n);
if(m<n)
{
a = m;
m = n;
n = a;
}
int i;
for(i=n;i>0;i--)
{
if((m%i==0)&&(n%i==0))
{
printf("%d",i);
break;
}
}
return 0;
}
8、求两个数m和n的最小公倍数.
/*
/*
对于输入的两个正整数m和n每次输入的大小顺序可能不同,为了使程序具有一般性,
首先对整数所m和n进行大小排序,规定变量m中存储大数、变量n中存储小数。
输入的两个数,大数m是小数n的倍数,那么大数m即为所求的最小公倍数;若大数m不能
被小数n整除则需要寻找一个能同时被两数整除的自然数。从大数m开始依次向
后递增直到找到第一个能同时被两数整除的数为止,所以循环变量i的初值为寻找第一个
能同时被两整数整除的自然数,并将其输出。需要注意的是,在找到第一个满足条件的i
值后,循环没必要继续下去,所以用break来结束循环。
在上面的分析过程中没有提到循环变量的终止条件,因i的最大值不能确定,像这种终止
条件不确定的情况如何来表示?方法有两种,第一,可以把判定条件表示成循环变量满足
的基本条件,如本例终止条件可表示成i>0;第二,终止条件省略不写,利用循环体中的
语句结束循环,如在找到第一个满足条件的自然数时利用break语句结束循环。
*/
*/
int main()
{
int m,n,a=0;
scanf("%d%d",&m,&n);
if(m<n)
{
a = m;
m = n;
n = a;
}
int i;
for(i=m;i>0;i++)
{
if((i%m==0)&&(i%n==0))
{
printf("%d",i);
break;
}
}
return 0;
}
/*
最小公倍数等于两个数的乘积除以最大公因数
*/
int main()
{
int m,n,a=0,num;
scanf("%d%d",&m,&n);
if(m<n)
{
a = m;
m = n;
n = a;
}
int i;
for(i=n;i>0;i--)
{
if((m%i==0)&&(n%i==0))
{
num = i;
break;
}
}
printf("%d",m*n/num);
return 0;
}
9、求方程式ax2+bx+c=0的根。分别考虑:
- 有两个不等的实根
- 有两个相等的实根
#include<stdio.h>
#include<math.h>
/*
有两个不等的实根即▲=b*b-4*a*c > 0
有两个相等的实根即▲=b*b-4*a*c = 0
*/
int main()
{
int a,b,c,d,q,x1,x2;
scanf("%d%d%d",&a,&b,&c);
d = b*b-4*a*c;
q = sqrt(d);
if(d>0)
{
x1 = ((-1)*b+q)/2*a;
x2 = ((-1)*b-q)/2*a;
printf("x1=%d\tx2=%d",x1,x2);
}else if(d == 0)
{
x1 = ((-1)*b+q)/2*a;
printf("x1=x2=%d",x1);
}else
{
printf("没有实数根!");
}
return 0;
}
10、输出1900-2000年中是闰年的年份,符合下面两个条件之一的年份是闰年:
- 能被4整除但不能被100整除
- 能被100整除但不能被400整除
#include<stdio.h>
int main()
{
int i=1900;
for(i;i<=2000;i++)
{
if((i%4==0)&&(i%100!=0)||(i%100==0)&&(i%400!=0))
{
printf("%d\n",i);
}
}
return 0;
}
求ax2+bx+c=0的根。分别考虑d=b2-4ac大于0、等于0和小于0这三种情况。
#include<stdio.h>
#include<math.h>
/*
有两个不等的实根即▲=b*b-4*a*c > 0
有两个相等的实根即▲=b*b-4*a*c = 0
*/
int main()
{
int a,b,c,d,q,x1,x2;
scanf("%d%d%d",&a,&b,&c);
d = b*b-4*a*c;
q = sqrt(d);
if(d>0)
{
x1 = ((-1)*b+q)/2*a;
x2 = ((-1)*b-q)/2*a;
printf("x1=%d\tx2=%d",x1,x2);
}else if(d == 0)
{
x1 = ((-1)*b+q)/2*a;
printf("x1=x2=%d",x1);
}else
{
printf("没有实数根!");
}
return 0;
}
11、输入10个数,输出其中最大的一个数。
#include<stdio.h>
int main()
{
int a[10];
int i,max=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(i==0)
{
max = a[i];
}
if(i>0)
{
if(max<a[i])
{
max=a[i];
}
}
}
printf("%d",max);
return 0;
}