最新在菜鸟教程学习C语言,在里面的例程代码中做一些注释,供学习使用。
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include
int main()
{
printf("Hello, World!");
return 0;
}
#include
int main()
{
int number;
printf("输入一个整数:");
scanf("%d",&number); //&是取地址符, %d是格式转换符
printf("你输入的整数是:%d", number);//%d是整型输出 int型
return 0;
}
#include
int main() {
char c; //定义性声明,定义变量c为char型,分配存储空间
c = 'A'; //C语言中字符用单引号引用 ,如 'A'
printf("c的值为 %c", c);
return 0;
}
#include
int main() {
float f; //声明 浮点型变量f,占4个字节
f = 12.001234; //定义 变量f的值
printf("f 的值为 %f", f); // %f为浮点型 格式输出符
return 0; //函数返回值为0;
}
#include
int main() {
double d; //声明双精度浮点型变量,占8个字节
d = 12.001234; //赋值
printf("d 的值为 %le", d); //输出格式为%le,用科学计数法作输出格式
return 0;
}
#include
int main()
{
int firstNumber, secondNumber, sumOfTwoNumbers;
printf("输入两个数(以空格分隔): ");
scanf("%d %d", &firstNumber, &secondNumber);//通过scanf函数输入这两个数的值
sumOfTwoNumbers = firstNumber + secondNumber;
printf("%d + %d = %d", firstNumber, secondNumber, sumOfTwoNumbers);
//%d 为整型输出
return 0;
#include
int main()
{
double firstNumber, secondNumber, product;
printf("输入两个浮点数: ");
scanf("%lf %lf", &firstNumber, &secondNumber);
//%lf代表双精度浮点型数据,double型
product = firstNumber * secondNumber;
printf("结果 = %.15lf", product);
// %.2lf 小数点后保留两位有效数字,double型最多15位.
return 0;
}
#include
int main()
{
char c;
printf("输入一个字符: ");
scanf("%c", &c);
// %d 为有符号10进制整数
// %c 为输出单个字符
printf("%c 的 ASCII 为 %d", c, c);
return 0;
}
#include
int main()
{
char n;
printf("输入单个字符\n");
scanf("%c", &n);
printf("输出的字符是:%c", n);
return 0;
}
#include
int main(){
int dividend, divisor, quotient, remainder;
printf("输入被除数:");
scanf("%d", ÷nd);
printf("输入除数: ");
scanf("%d", &divisor);
// 计算商
quotient = dividend / divisor;
// 计算余数
remainder = dividend % divisor;
printf("商 = %d\n", quotient);
printf("余数 = %d", remainder);
return 0;
}
#include
int main() {
int a, b;
a = 11;
b = 99;
if (a > b)
printf("a 大于 b");
else
printf("a 小于等于 b");
return 0;
}
#include
int main() {
int a, b;
printf("输入第一个值");
scanf("%d", &a);//&是取地址符
printf("输入第二个值");
scanf("%d", &b);//由 键盘 给变量b所在的内存地址赋值
if (a > b)
printf("a>b\n");
else if (a == b)
printf("a=b\n");
else
printf("a);
return 0;
}
#include
int main() {
int a, b, c;
a = 11;
b = 22;
c = 33;
if (a > b&& a > c)
printf("%d 最大", a);
else if (b > a&& b > c)
printf("%d 最大", b);
else if (c > a&& c > b)
printf("%d 最大", c);
else
printf("有两个或三个数值相等");
return 0;
}
#include
int main() {
int integerType;
float floatType;
double doubleType;
char charType;
//sizeof() 用于计算变量的字节大小
printf("Size of int : %ld bytes\n", sizeof(integerType));
printf("Size of float: %ld bytes\n", sizeof(floatType));
printf("Size of double: %ld bytes\n", sizeof(doubleType));
printf("Size of char: %ld byte\n", sizeof(charType));
return 0;
}
#include
int main() {
int a;
long b;
long long c;
double e;
long double f;
printf("Size of int = %ld bytes \n", sizeof(a));
printf("Size of long = %ld bytes\n", sizeof(b));
printf("Size of long long = %ld bytes\n", sizeof(c));
printf("Size of double = %ld bytes\n", sizeof(e));
printf("Size of long double = %ld bytes\n", sizeof(f));
return 0;
}
#include
int main() {
double firstNumber, secondNumber, temporarVariable;
printf("输入第一个数字:");
scanf("%lf", &firstNumber);
printf("输入第二个数字:");
scanf("%lf", &secondNumber);
temporarVariable = firstNumber;
firstNumber = secondNumber ;
secondNumber = temporarVariable;
printf("\n交换后,firstNumber = %.21f\n", firstNumber);
printf("\n交换后,secondNumber = %.21f\n", secondNumber);
return 0;
}
#include
int main() {
int a, b;
a = 11;
b = 99;
printf("交换之前 - \n a = %d, b = %d \n\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("交换后 - \n a = %d, b = %d \n", a, b);
}
#include
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
if (number % 2 == 0)
printf("%d是偶数.", number);
else
printf("%d是奇数.", number);
return 0;
}
奇偶数判断其实有个更简单高效的办法,
我们的整数,在计算机中存储的都是二进制,
奇数的最后一位必是1,所以我们可以这样写:
#include
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
if (number & 1) // &是 按位与 操作符
printf("%d是奇数", number);
else
printf("%d是偶数", number);
return 0;
}
//输出10以内的自然数数的奇偶性
#include
int main() {
int i=0;
while(i<=10){
i++;
if (i % 2 == 0)
printf("%d是偶数\n", i);
else
printf("%d是奇数\n", i);
}
return 0;
}
//通过循环输出指定区间范围的偶数
#include
int main() {
int i;
for (i = 1; i <= 10; i++) {
if (i % 2 == 0)
printf(" %2d\n", i);
//% 2d是将数字按宽度为2,采用右对齐方式输出,如果数据位数不到2位,则左边补空格。
}
return 0;
}
//通过循环输出指定区间范围的奇数
#include
int main() {
int i;
for (i = 1; i <= 10; i++) {
if ( i%2 != 0) // != 是"不等于"的意思
printf("%2d\n", i);
}
return 0;
}
#include
int main()
{
char c;
int isLowercaseVowel, isUppercaseVowel;
printf("输入一个字母:");
scanf("%c", &c);
isLowercaseVowel = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
isUppercaseVowel = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');
if (isLowercaseVowel || isUppercaseVowel)
printf("%c 是元音", c);
else
printf("%c 是辅音", c);
return 0;
}
#include
int main()
{
double n1, n2, n3;
printf("请输入三个数,以空格分隔: ");
scanf("%lf %lf %lf", &n1, &n2, &n3);
if (n1 >= n2 && n1 >= n3)
printf("%.2f 是最大数。", n1); //%.2f 意思是小数点后保留两位数字
if (n2 >= n1 && n2 >= n3)
printf("%.2f 是最大数。", n2);
if (n3 >= n1 && n3 >= n2)
printf("%.2f 是最大数。", n3);
return 0;
}
//判断三个整数中的最大数 MIKU
#include
int main() {
int a, b, c;
printf("请输入要比较的三个整数,以空格键分割:\n");
scanf("%d %d %d", &a, &b, &c);
if (a >= b && a >= c)
printf("三个数中最大的是%d", a);
else if (b >= a && b >= c)
printf("三个数中最大的是%d", b);
else (c >= a && c >= b)
printf("三个数中最大的是%d", c);
return 0;
}
C语言中输出函数printf的格式控制符中,可以加一些附加格式字符
假设w,h都是整数
那么格式控制符可以这现这种形式:
%w.h f
表示输出的总宽度是w小数点后保留h位
如果实际长度大于他想控制输出的长度w,则还是按实际长度输出
比如:
#include "stdio.h"
void main()
{
float a=12.123;
printf("%0.2f",a);
}
输出就是12.12
对应上面的表述,w0,h2
大概就是这样了。
//求一元二次方程:ax2+bx+c=0 的根
//输入三个实数a, b, c的值,且a不等于0
#include
#include
int main() {
float a, b, c, x1, x2, d;
printf("输入方程的三个系数:");
scanf("%f %f %f", &a, &b, &c);
if (a != 0)
{
d = sqrt(b * b - 4 * a * c);
x1 = (-b + d) / (2 * a);
x2 = (-b - d) / (2 * a);
if (x1 < x2)
printf("%0.2f %0.2f\n", x2, x1);
else
printf("%0.2f %0.2f\n", x1, x2);
}
return 0;
}
//用户输入年份,判断该年是否位闰年
//(四年一闰,百年不闰) || 四百年在闰年
#include
int main() {
int year;
printf("输入年份:");
scanf("%d", &year);
if (year % 4 == 0)
{
if (year % 100 == 0)
{
if (year % 400 == 0)
printf("%d是闰年", year);
else
printf("%d不是闰年", year);
}
else
printf("%d是闰年", year);
}
else
printf("%d不是闰年", year);
return 0;
}
#include
int main()
{
double number;
printf("输入一个数字:");
scanf("%lf", &number);
if (number <= 0.0)
{
if (number == 0.0)
printf("你输入的是 0");
else
printf("你输入的是负数");
}
else
printf("你输入的是正数");
return 0;
}
用户输入一个字符,判断该字符是否为一个字母。
#include
int main() {
char c;
printf("输入一个字符:");
scanf("%c", &c);
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
printf("%c是字母", c);
else
printf("%c不是字母", c);
return 0;
}
//使用for
#include
int main()
{
int n, i, sum = 0;
printf("输入一个正整数:");
scanf("%d", &n);
for (i = 1; i < n; i++)
{
sum += i;
}
printf("Sum = %d", sum);
return 0;
}
//使用while
#include
int main()
{
int n, i=1, sum = 0;
printf("输入一个正整数:");
scanf("%d", &n);
while(i<=n)
{
sum += i;
++i;//https://www.zhihu.com/question/19811087,
//++i可以作为左值,i++则不可以
}
printf("Sum = %d", sum);
return 0;
}
#include
int main() {
int num;
printf("输入一个整数: ");
scanf("%d", &num);
printf("Sum = %d", addNumbers(num));
return 0;
}
int addNumbers(int n) {
if (n != 0)
return n + addNumbers(n - 1);
else
return n;
}
#include
int main() {
int i = 0;//外层循环变量,控制行
int j = 0;//内层循环变量,控制列
for (i = 1; i <= 9; i++) {
for (j = 1; j <= i; j++) {
printf("%dx%d=%d\t", j, i, i * j);
}
printf("\n");//每执行完一列后换行
}
}
//输出指定数量的斐波那契数列
#include
int main() {
int i, n, t1 = 0, t2 = 1, nextTerm;
printf("输出几项:");
scanf("%d", &n);
printf("斐波那契数列:");
for (i = 1; i <= n; ++i) {
printf("%d,", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm;
}
return 0;
}
//输出指定数字前的斐波那契数列---------MIKU
#include
int main() {
int i, n, t1 = 0, t2 = 1, nextTerm;
printf("输入一个正数:");
scanf("%d", &n);
printf("斐波那契数列:");
for (i = 1; t1 <= n; ++i) {
printf("%d,", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm;
}
return 0;
}
//输出指定数字前的斐波那契数列
#include
int main()
{
int t1 = 0, t2 = 1, nextTerm = 0, n;
printf("输入一个正数: ");
scanf("%d", &n);
// 显示前两项
printf("斐波那契数列: %d, %d, ", t1, t2);
nextTerm = t1 + t2;
while(nextTerm <= n)
{
printf("%d, ",nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}
return 0;
}
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include
int main()//求两数的最大公约数
{
int n1, n2;
printf("输入两个数,以空格分隔: ");
scanf("%d %d", &n1, &n2);
while (n1 != n2) //当两数不相等时,执行while循环
{
if (n1 > n2) //若n1更大
n1 -= n2; //则两数差值赋给n1
else
n2 -= n1; //否则将差值赋值给n2,
//执行下一轮循环,直到两数值相等
}
printf("GCD = %d", n1);//greatest common divisor,最大公约数
//此外,还有一种欧几里得算法也可以求最大公约数,也叫辗转相除法,有百度下来
return 0;
}
#include //MIKU版本,错误
int main() {
int a, b, c = 1, m = 1;
printf("请输入两个数,用空格间隔:");
scanf("%d %d", &a, &b);
//求最大公约数,这个数
while(c!=a && c!=b){
if (a / c == 0 || b / c == 0)
m = c;
else
c++;
break;
}
printf("最大公约数是:%d", m);
return 0;
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
//求两数的最小公倍数------by 银河 MIKU
#include
int main() {
int num1, num2, num3;
printf("Please enter two positive integers: ");
scanf("%d %d", &num1, &num2); //输入两个数给变量赋值
if (num1 > num2)
num3 = num1 % num2;
else
num3 = num2 % num1;
while (1) { //若两数不相等,执行循环
if (num1 > num2) //若num1大于num2
if (!num3) //若 余数num3为零,则值为真
break;
else if (!(num1 % num3 && num2 % num3)) { //若num1和num2都可整除他们的余数num3,则为真
num1 = num2 * (num1 / num3); //这是有公约数时求最小公倍数的公式
break;
}
else {
num1 = num1 * num2;//这是无公约数时求最小公倍数的公式
break;
}
else
if (!num3) { //若 余数num3为零,则值为真
num1 = num2;
break;
}
else if (!(num1 % num3 && num2 % num3)) { //若num1和num2都可整除他们的余数num3,则为真
num1 = num1 * (num2 / num3);
break;
}
else {
num1 = num1 * num2;
break;
}
}
printf("最小公倍数是:%d", num1);
return 0;
}
#include
int main()
{
int n1, n2, i, gcd, lcm;
printf("输入两个正整数: ");
scanf("%d %d",&n1,&n2);
for(i=1; i <= n1 && i <= n2; ++i)
{
// 判断最大公约数
if(n1%i==0 && n2%i==0)
gcd = i;
}
lcm = (n1*n2)/gcd;
printf("%d 和 %d 的最小公倍数为 %d", n1, n2, lcm);
return 0;
}
//by 菜鸟教程网站(www.runoob.com)
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include
int main()
{
int n1, n2, minMultiple;
printf("输入两个正整数: ");
scanf("%d %d", &n1, &n2);
// 判断两数较大的值,并赋值给 minMultiple
minMultiple = (n1 > n2) ? n1 : n2;
// 条件为 true
while (1)
{
if (minMultiple % n1 == 0 && minMultiple % n2 == 0)
{
printf("%d 和 %d 的最小公倍数为 %d", n1, n2, minMultiple);
break;
}
++minMultiple;
}
return 0;
}
//by 银河MIKU
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
//一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
#include
int main() {
int i, s = 1; //此处 i,s 为全局变量
printf("请输入一个正整数:");
scanf("%d", &i);
if (i < 0)
printf("wrong\n");
else {
for (int n = 1; n <= i; n++) { //这里所定义的n是局部变量
s *= n;
} //阶乘运算
}
printf("%d的阶乘是%d", i, s); //这里的i,s 也为全局变量
return 0;
}
//小结 : for循环的语法,
//for(0;1;3){2} 0为初始化赋值,只执行一次,
//1是条件判断,为真则执行循环主体;2为循环主体;3为更新循环变量
//by www.runoob.com
#include
int main()
{
int n, i;
unsigned long long factorial = 1; //unsigned long long factorial,max:1844674407370955161
printf("输入一个整数: ");
scanf("%d",&n); //&是取地址符,给n所在地址 赋值 格式 为 %d整型,
// 如果输入是负数,显示错误
if (n < 0)
printf("Error! 负数没有阶乘");
else
{
for(i=1; i<=n; ++i)
{
factorial *= i; // factorial = factorial*i; 阶乘factorial
}
printf("%d! = %llu", n, factorial); // %llu,占8字节(byte),即2^8=64位 无符号长整型数???
}
return 0;
}
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include //使用递归求阶乘 by菜鸟教程
long int multiplyNumbers(int n);
int main()
{
int n;
printf("输入一个整数: ");
scanf("%d", &n);
printf("%d! = %ld", n, multiplyNumbers(n));
return 0;
}
long int multiplyNumbers(int n) //递归
{
if (n >= 1)
return n * multiplyNumbers(n - 1); //相当于返回了n! = n*(n-1)*(n-1-1)*...*1
else
return 1;
}
//循环输出26个字母 by 银河MIKU
#include
int main() {
//
int i = 65; //字母 a 的 ASCII码为65
while (i < 91) { //字母 z 的 ASCII码为90
printf("%c", i);
i++; //先判断,再自增
}
return 0;
}
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include //by 银河MIKU
//用除余法:判断数字为几位数HCS08A-FAMILY-AC-32\AC-60>P&E
int main() {
long long n;
int a,i=1;
printf("请输入一个数字:\n");
scanf("%d", &n);
a = n / 10;
for(i = 1; a > 1; i++){
a = a / 10;
}
printf("n是%d位数", i);
return 0;
//只输出一位
}
#include //by 菜鸟教程
int main()
{
long long n;
int count = 0;
printf("输入一个整数: ");
scanf("%lld", &n);
while(n != 0)
{
// n = n/10
n /= 10;
++count;
}
printf("数字是 %d 位数。", count);
}
#pragma warning(disable:4996)
//计算一个数的n次方
#include
int main() { //by 银河MIKU
int num, num_n=1, n, i;
printf("请输入基数:\n");
scanf("%d", &num);
printf("请输入指数:\n");
scanf("%d", &n);
for(i=0;i<n;i++){
num_n *= num;
}
printf("%d的%d次幂是%d", num, n, num_n);
return 0;
}
#pragma warning(disable:4996)
#include //by www.runoob.com
int main()
{
int base, exponent;
long long result = 1; //变量为长整型时 应该用%lld 格式输出符 输出
printf("基数: ");
scanf("%d", &base);
printf("指数: ");
scanf("%d", &exponent);
while (exponent != 0) //若指数exponent 不为零,则进行循环
{
result *= base; //计算结果:result = 1*base*base*...*base
--exponent; //指数标志自减,来控制结果乘的次数
}
printf("结果:%lld", result);
return 0;
}
#pragma warning(disable:4996)
#include
#include
int main() //by 菜鸟教程
{
double base, exponent, result; //double代表双精度浮点型数据,保证15位(16位)最大有效数字 用%lf代替
//float代表单精度,保证6位(7位)最大有效数字,用 %f代替
printf("基数: ");
scanf("%lf", &base); //%lf输出double型变量,可以解释为 long float(实际上并没有,这么比较好理解)
printf("指数: ");
scanf("%lf", &exponent);
// 计算结果
result = pow(base, exponent); //pow()函数会直接计算出?指数幂?的结果
printf("%.1lf^%.1lf = %.2lf", base, exponent, result); //小数点后分别保留 1位,1位,2位数字
return 0;
}
就是多了个函数封装吗?
#pragma warning(disable:4996)
#include
int power(int n1, int n2);
int main() //by 菜鸟教程
{
int base, powerRaised, result;
printf("基数: ");
scanf("%d", &base);
printf("指数(正整数): ");
scanf("%d", &powerRaised);
result = power(base, powerRaised);
printf("%d^%d = %d", base, powerRaised, result);
return 0;
}
int power(int base, int powerRaised)//一个函数只有一个返回值,这两个是形参
{
if (powerRaised != 0)
return (base * power(base, powerRaised - 1));
else
return 1; //指数为0时的返回值
}
#pragma warning(disable:4996)
#include
int main() { //by 银河MIKU
int num, i, count;
int getter1();
int DigitNum();
printf("请输入要判断的数字:");
scanf("%d", &num);
i = DigitNum(num);
count = getter1(num);
printf("%d\n", count);
//1.判断位数
//2.定义一个数组,分别存储欲判断数组的各个位上的数
//3.进行比较
//*0.1就是去除了倒数第一个数,再乘以10就中间变量,用原数减去中间变量就得到了倒数第一个数
//
//*0.01就是正数第二书
//int number[] = count;
//for (i = 1;;) {}
//但个数=num/总位数
return 0;
}
/*分割数字算法1*/
int getter1(int num) {
int a, b, c, d, e, f;
a = num * 0.1;//这里a为整型,只保留整数部分,去掉了最后一位
printf("拿掉最后一位剩的值%d\n", a);
b = num - a * 10; //这里得到了num的最后一位数字
printf("最后一位的值%d\n", b);
c = num * 0.01;//这里a为整型,只保留整数部分,去掉了后2位
printf("拿掉最后2位剩的值%d\n", c);
d = num - c * 100; //这里得到了num的后2位数字
printf("最后2位的值%d\n", d);
e = d - b;
e *= 0.1;
printf("倒数第2位的值:%d\n", e);
e = e ^ 3;
printf("测试值:%d\n", e);
return e;
}
/*分割数字算法2*/
int getter2(int num) {
int a, b;
a = num % 10;
printf("最后1位的值%d\n", a);
b = num % 100;
printf("最后2位的值%d\n", b);
//a = (c-a)*0.1;//这里a为整型,只保留整数部分,去掉了后2位
//printf("倒数第2位的值%d\n", c);
//d = (d-b)*0.1;
//printf("倒数第2位的值%d\n", d);
b = b - a;
b *= 0.1;
printf("倒数第2位的值:%d\n", b);
return a;
}
/*判断数字的位数*/
int DigitNum(int num) {
int i;
for (i = 0; num >= 0; i++) {
num *= 0.1;
}
printf("%d", i);
return i;
}
/*分割数字算法3*/
int getter3(int num) {
int a, b;
a = num % 10;
printf("最后1位的值%d\n", a);
b = num % 100;
printf("最后2位的值%d\n", b);
//a = (c-a)*0.1;//这里a为整型,只保留整数部分,去掉了后2位
//printf("倒数第2位的值%d\n", c);
//d = (d-b)*0.1;
//printf("倒数第2位的值%d\n", d);
b = b - a;
b *= 0.1;
printf("倒数第2位的值:%d\n", b);
return a;
}
/**将一个数反转过来后,判断是否和原数字相等,相等的话就是回文数**/
```c
#include
int main(){ //by www.runoob.com
int n, reversedInteger = 0, remainder, originalInteger;
printf("Enter an integer: ");
scanf("%d", &n);
originalInteger = n;
/********************Flip the whole number*********************/
while( n != 0){
remainder = n%10; //Divide n by 10 to get the remainder to get the last digit
reversedInteger = reversedInteger*10 +remainder; //The remainder starts to move forward
n /= 10; //Remove the remainder generated just now to get a new number
}
/**************Determine whether two numbers are equal***************/
if (originalInteger == reversedInteger)
printf("%d is a palindrome.", originalInteger);
else
printf("%d isn't a palindrome.", originalInteger);
return 0;
}
/*
敲代码的时候,**scanf()** 函数忘记加 **取地址符&**,然后编译器没有报错,
导致控制台小黑框一直没有输出,一度以为是CodeBlocks的问题,
一顿百度,最后又又又检查了一遍代码,才发现是我的错!啊啊啊!
*/
#include
//by 银河MIKU
/*****Judging prime numbers******/
int main(){
int i=1,num,rem=1; // num:number; rem: remainder;
printf("Please enter a number:");
scanf("%d", &num);
while (1){
if (num == 2){
printf("2 is a prime number");
break;
}
else{
for(i = 2; i < num; i++ ){
rem = num % i; //取余数
if (rem == 0){
printf("%d isn't a prime number", num);
i=0;
break; //这里的break只能跳出for循环
}
}
if (i == 0){
break;
}
else{
printf("%d is a prime number", num);
break;
}
}
}
return 0;
}
#include
#include
int main(){ //by 银河MIKU
int num, sum=0, nums=1, i, j;
printf("Please enter a number:");
scanf("%d", &num);
int num0 = num;
i = 0.1*num;
/*************判断是几位数***************/
for(i = 0; num != 0; i++){
num *= 0.1;
}
/*************判断是几位数***************/
num = num0;
while(1){
for(j = 1;num != 0;j++){
nums = num %10; //取最后一个数
sum = sum + pow(nums,i); //乘方后求和
num *= 0.1; //去掉最后一位
}
if (sum == num0 ){
printf("It's a Armstrong number");
}
else{
printf("It's not a Armstrong number");
}
break; //跳出循环
}
return 0;
}
#include
int main() {
//查找2到100中的所有质数
//局部变量定义
int i, j, counts=0;
//i 从2到100自增
for (i = 2; i <= 100; i++) {
//j 从2到i自增
for (j = 2; j <=i; j++) {
//判断i是否可以被i整除
if (i % j == 0 && i != 2) {//
counts = 0; //可以整除,则计数为0
break; //退出本层循环
}
else if (i == 2){
counts = 1;
break;
}
else
counts = 1; //不可整除,计数为1,继续循环
//continue;
}
if (counts == 1) //若 记数为1,则说明是质数
printf("%d 是质数\n", i);
//continue;
}
return 0;
}
//不正确
#include
int main()
{
//局部变量定义
int i, j;
for (i = 2; i < 100; i++) {
for (j = 2; j < i; j++)
if (!(i % j))
break; // 如果找到,则不是质数
if (j==i)
printf("%d 是质数\n", i);
}
return 0;
}
/*A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。
日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。
C、D、E依次醒来,也按同样的方法拿鱼。
问他们台伙至少捕了多少条鱼 ? 以及每个人醒来时见到了多少鱼?
*/
#include //by 菜鸟教程
int main() {
int n, x, j, k, l, m;
for (n = 5;; n++) { //n为最小捕鱼数,也时第一个人看到的鱼数量
j = 4 * (n - 1) / 5; //上一个人A扔掉1条鱼( n-1 )后,分成5份( /5 ),剩下4份,j为第二个人醒来看到的鱼
k = 4 * (j - 1) / 5; //上一个人B扔掉1条鱼( n-1 )后,分成5份( /5 ),剩下4份,k为第三个人醒来看到的鱼
l = 4 * (k - 1) / 5; //上一个人C扔掉1条鱼( n-1 )后,分成5份( /5 ),剩下4份,l为第四个人醒来看到的鱼
m = 4 * (l - 1) / 5; //上一个人D扔掉1条鱼( n-1 )后,分成5份( /5 ),剩下4份,m为第五个人醒来看到的鱼
//若所有人醒来看到的鱼数量 除以5后均余1,则为真,否则n++,继续循环
if (n % 5 == 1 && j % 5 == 1 && k % 5 == 1 && l % 5 == 1 && m % 5 == 1) { // && 为 逻辑与 运算
printf("至少合伙捕鱼:%d条\n", n);
printf("分别见到鱼的条数:%d %d %d %d\n", j, k, l, m);
break; //条件若为真,跳出for循环,结束程序
}
}
return 0;
}