大部分我都是基于for循环做的,有少许while
1、计算n以内所有正奇数的和 ? n值通过键盘输入
有很多方法,我列了2种,看自己的想法,最终实现结果就好。
/*1、计算n以内所有正奇数的和 ? n值通过键盘输入*/
#include
int main(void)
{
int n,i,sum = 0;
printf("请输入一个正整数n:");
scanf("%d",&n);
if(n <= 0)
{
printf("输入的不是正整数,请重新输入。\n");
return 1;
}
/* for(i = 1;i <= n;i += 2)
{
sum += i;
} */
for(i = 1;i <= n;i++)
{
if(i % 2 != 0)
{
sum += i;
}
}
printf("%d以内的所有正奇数的和是:%d\n",n,sum);
return 0;
}
2、计算 1 + 1/(2 * 3) + 1/(3 * 4) + ...+ 1/(n * (n + 1)) = ?直到最后一项值小于0.00001为至。
/*2、计算 1 + 1/(2 * 3) + 1/(3 * 4) + ...+ 1/(n * (n + 1)) = ?直到最后一项值小于0.00001*/
#include
int main(void)
{
float term = 1.0,sum = 1.0;
int n = 2;
/* while(term >= 1.0e-5)
{
term = 1.0 / (n * (n + 1));
sum += term;
n++;
} */
for(n = 2;term >= 1.0e-5;n++) //若值小于1.0e-5循环结束输出值
{
term = 1.0 / (n * (n +1));
sum += term;
}
printf("数之和为:%f\n",sum);
return 0;
3.打印输出所有的水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)
/*3.打印输出所有的水仙花数,三位数,1^3 + 5^3+ 3^3 = 153)*/
#include
int main(void)
{
int num;
int hunds,tens,ones;
for(num = 100;num <= 999;num++)
{
hunds = num / 100; //比如100 / 100 = 1拿到百位上的数
tens = (num % 100) / 10; //这里要先对100求余,比如71 % 100 = 71,71 / 10拿到十位上数
ones = num % 10; //这里要个位对10取余拿到个位上数
if(num == (hunds * hunds * hunds) + (tens * tens * tens) + (ones * ones * ones))
{
printf("水仙花数: %d\n",num);
}
}
return 0;
}
4. 打印乘法表
/*4.打印乘法表*/
#include
int main(void)
{
int r,c;
printf("请输入乘法表的行数:");
scanf("%d",&r);
printf("请输入乘法表的列数:");
scanf("%d",&c);
if(r <= 0 || c <= 0)
{
printf("输入的不是正整数,请重新输入!\n");
}
int i,j;
for(i =1;i <= r;i++)
{
for(j = 1;j <= c;j++)
{
printf("%d*%d=%-3d",i,j,i*j);
}
printf("\n");
}
return 0;
}
5.判断一个数是不是回文数。(回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。)
例如 12321 是一个回文数。
C语言判断回文数的几种方法。_c语言回文数判断-CSDN博客
这个我不是原创,好像是这么注明原创的,应该是这样弄得吧,我觉得他的逻辑思维好厉害
(只能用来确定整数)
任何一个数除以10的余数就是该数最后一位
任何一个数除以10的商就是排除掉最后一位后的数
新数=新数*10+余数
经过循环后,我们得到新数
如果是回文,那么新数应该等于原数,否则不是回文
假如有一个数字121
第一轮循环:
sum=0*10+121%10=1
temp=121/10=12
第二轮循环
sum=1*10+12%10=12
temp=12/10=1
第三轮循环
sum=12*10+1%10=121
temp=1/10=0
第四轮循环判断
temp=0 退出循环
最后判断 121=121是回文
若有个数字是123
第一轮循环:
sum=0*10+123%10=3
temp=123/10=12
第二轮循环:
sum=3*10+12%10=32
temp=12/10=1
第三轮循环:
sum=32*10+1%10=321
temp=1/10=0
第四轮循环判断
temp=0退出循环
321!=123不是回文
/*5.判断一个数是不是回文数。例如 12321 是一个回文数。*/
#include
int main(void)
{
int num,temp,sum = 0; //定义变量num,temp,sum;sum用于存储反转后的数
printf("请输入一个正整数:");
scanf("%d",&num);
temp = num; //将用户输入的整数赋值给临时变量temp
while(temp > 0)
{
sum = sum * 10 + temp % 10; //将temp对10取余的结果加到sum上,并*10,实现反转
temp = temp / 10; //去掉temp的最低位数字
}
if(sum == num) //如果反转后的数 sum 等于原数num,则说明num是回文数
{
printf("%d是一个回文数\n",num);
}
else
{
printf("%d不是一个回文数:\n",num);
}
return 0;
}
1.24 1.计算n的阶乘 ? n! = 1*2*3.....*n n值通过键盘输入
/*1,计算n的阶乘 ? ?n! = 1*2*3.....*n ?n值通过键盘输入*/
#include
int main(void)
{
int n;
printf("请输入一个整数来计算其阶乘:");
scanf("%d",&n);
if(n < 0)
{
printf("阶乘不适用于负数,请输入一个非负整数!\n");
return 1;
}
else if(n == 0)
{
printf("0的阶乘是1\n");
return 0;
}
int i;
int fact = 1;
for(i = 1;i <= n;i++)
{
fact *= i; //fact *= i就等于fact * i = fact
}
printf("%d的阶乘是: %d\n",n,fact);
return 0;
}