1、根据输入年份判断是否为闰年
闰年:四年一闰,百年不闰,四百年在闰
int a;
printf("输入年份:");
scanf("%d",&a);
if ((a%4==0 && a%100 !=0) || a%400 == 0){
printf("%d 是闰年",a);
}else{
printf("%d 不是闰年",a);
}
2、判断输入字符是否为字母
字母:a-z或者A-Z
char c;
printf("输入一个字符: ");
scanf("%c",&c);
if( (c>='a' && c<='z') || (c>='A' && c<='Z'))
printf("%c 是字母",c);
else
printf("%c 不是字母",c);
3、输出9x9乘法表
乘法表:每两个乘法之间空格,每行输出玩换行
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
printf("%d*%d=%d\t",j,i,j*i);
}
printf("\n");
}
4、输出指定数量的斐波那契数列
斐波那契数列:数列从第三项开始,每个数都等于前两个数之和
int n;
printf("输出几项:");
scanf("%d",&n);
int t0=0,t1=1;
int temp;
for (int i=0;i
printf("%d ",t1);
temp = t0+t1;
t0 = t1;
t1 = temp;
}
5、求两数最大公约数
公约数:同时可以整除两个数的最大数
int a,b,temp;
printf("输入两个数:");
scanf("%d,%d",&a,&b);
if (a>b){
temp = b
}else{
temp = a;
}
for(int i=temp;i>1;i--){
if (a%i==0 && b%i==0){
// 是公约数
printf("%d,%d的最大公约数为%d:",a,b,i);
break;
}
}
最小公倍数=(a*b)/最大公约数
6、求输入一个数的阶乘
一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。
n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
int n, i;
int factorial = 1;
printf("输入一个整数: ");
scanf("%d",&n);
// 如果输入是负数,显示错误
if (n < 0)
printf("Error! 负数没有阶乘jiechen");
else
{
for(i=1; i<=n; ++i)
{
factorial *= i; // factorial = factorial*i;
}
printf("%d! = %d", n, factorial);
}
7、输出26个字母
char c;
for(c = 'A'; c <= 'Z'; ++c)
printf("%c ", c);
8、计算一个数的n次方
int base, exponent;
long long result = 1;
printf("基数: ");
scanf("%d", &base);
printf("指数: ");
scanf("%d", &exponent);
while (exponent != 0)
{
result *= base;
--exponent;
}
printf("结果:%lld", result);
也可以使用pow()函数,需要引入math.h头文件
9、判断回文数
回文数:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数;
char n[10];
printf("输入字符串数字: ");
scanf("%s", n);
// 获取字符串长度
int len = strlen(n);
char nn[10];
for (int i=0; i
nn[len-1-i] = n[i];
}
printf("%s",nn);
10、判断素数
素数:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数
int n, i, flag = 0;
printf("输入一个正整数: ");
scanf("%d",&n);
for(i=2; i<=n/2; ++i)
{
// 符合该条件不是素数
if(n%i==0)
{
flag=1;
break;
}
}
if (flag==0)
printf("%d 是素数",n);
else
printf("%d 不是素数",n);
11、判断一个数是否为两个素数的和
int checkPrime(int n);
int main()
{
int n, i, flag = 0;
printf("输入正整数: ");
scanf("%d", &n);
for(i = 2; i <= n/2; ++i)
{
// 检测判断
if (checkPrime(i) == 1)
{
if (checkPrime(n-i) == 1)
{
printf("%d = %d + %d\n", n, i, n - i);
flag = 1;
}
}
}
if (flag == 0)
printf("%d 不能分解为两个素数。", n);
return 0;
}
// 判断素数
int checkPrime(int n)
{
int i, isPrime = 1;
for(i = 2; i <= n/2; ++i)
{
if(n % i == 0)
{
isPrime = 0;
break;
}
}
return isPrime;
}
12、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
int i,j,k;
for(i=1;i<5;i++) { // 以下为三重循环
for(j=1;j<5;j++) {
for (k=1;k<5;k++) { // 确保i、j、k三位互不相同
if (i!=k&&i!=j&&j!=k) {
printf("%d,%d,%d\n",i,j,k);
}
}
}
}
13、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
分析:利用while语句,条件为输入的字符不为'\n'。
char c;
int letters=0,spaces=0,digits=0,others=0;
printf("请输入一些字母:\n");
while((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letters++;
else if(c>='0'&&c<='9')
digits++;
else if(c==' ')
spaces++;
else
others++;
}
printf("字母=%d,数字=%d,空格=%d,其他=%d\n",letters,digits,spaces,others);
14、编程找出1000以内的所有完数。
分析:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3
int i,j,k,n,sum;
int a[256];
for(i=2;i<=N;i++)
{
sum=a[0]=1;
k=0;
for(j=2;j<=(i/2);j++)
{
if(i%j==0)
{
sum+=j;
a[++k]=j;
}
}
if(i==sum)
{
printf("%d=%d",i,a[0]);
for(n=1;n<=k;n++)
printf("+%d",a[n]);
printf("\n");
}
}