1.使用 printf() 输出 “Hello, World!”。
#include <stdio.h>
int main()
{
// printf() 中字符串需要引号
printf("Hello, World!");
return 0;
}
结果:
Hello, World!
2.输出整数
#include <stdio.h>
int main()
{
int number;
// printf() 输出字符串
printf("输入一个整数: ");
// scanf() 格式化输入
scanf("%d", &number);
// printf() 显示格式化输入
printf("你输入的整数是: %d", number);
return 0;
}
结果:
输入一个整数: 45
你输入的整数是: 45
3.输出单个字符
#include <stdio.h>
int main() {
char c; // 声明 char 变量
c = 'A'; // 定义 char 变量
printf("c 的值为 %c", c);
return 0;
}
结果:
c 的值为 A
4.输出浮点数
#include <stdio.h>
int main() {
float f; // 声明浮点数变量
f = 12.001234; // 定义浮点数变量
printf("f 的值为 %f", f);
return 0;
}
结果:
f 的值为 12.001234
5.输出双精度(double)数
#include <stdio.h>
int main() {
double d; // 声明双精度变量
d = 12.001234; // 定义双精度变量
printf("d 的值为 %le", d);
return 0;
}
结果:
d 的值为 1.200123e+01
6.两个整数相加
#include <stdio.h>
int main()
{
int firstNumber, secondNumber, sumOfTwoNumbers;
printf("输入两个数(以空格分割): ");
// 通过 scanf() 函数接收用户输入的两个整数
scanf("%d %d", &firstNumber, &secondNumber);
// 两个数字相加
sumOfTwoNumbers = firstNumber + secondNumber;
// 输出结果
printf("%d + %d = %d", firstNumber, secondNumber, sumOfTwoNumbers);
return 0;
}
结果:
输入两个数(以空格分割): 1 2
1 + 2 = 3
7.两个浮点数相乘
#include <stdio.h>
int main()
{
double firstNumber, secondNumber, product;
printf("输入两个浮点数: ");
// 用户输入两个浮点数
scanf("%lf %lf", &firstNumber, &secondNumber);
// 两个浮点数相乘
product = firstNumber * secondNumber;
// 输出结果, %.2lf 保留两个小数点
printf("结果 = %.2lf", product);
return 0;
}
结果:
输入两个浮点数: 1.2 2.345
结果 = 2.81
8.字符转 ASCII 码(A是65,a是97)
#include <stdio.h>
int main()
{
char c;
printf("输入一个字符: ");
// 读取用户输入
scanf("%c", &c);
// %d 显示整数
// %c 显示对应字符
printf("%c 的 ASCII 为 %d", c, c);
return 0;
}
结果:
输入一个字符: a
a 的 ASCII 为 97
9.两数相除,如果有余数,输出余数。
#include <stdio.h>
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;
}
结果:
输入被除数: 5
输入除数: 2
商 = 2
余数 = 1
10.数值比较
#include <stdio.h>
int main() {
int a, b;
a = 11;
b = 99;
// 也可以通过以下代码实现让用户在终端输入两个数
// printf("输入第一个值:");
// scanf("%d", &a);
// printf("输入第二个值:");
// scanf("%d", &b);
if(a > b)
printf("a 大于 b");
else
printf("a 小于等于 b");
return 0;
}
结果:
a 小于等于 b
#include <stdio.h>
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;
}
结果:
33 最大
11.使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。
#include <stdio.h>
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;
}
结果:
Size of int: 4 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of char: 1 byte
计算 long long, long double 字节大小。
#include <stdio.h>
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;
}
结果:
Size of int = 4 bytes
Size of long = 8 bytes
Size of long long = 8 bytes
Size of double = 8 bytes
Size of long double = 16 bytes
12.交换两个数的值(使用临时变量)
#include <stdio.h>
int main()
{
double firstNumber, secondNumber, temporaryVariable;
printf("输入第一个数字: ");
scanf("%lf", &firstNumber);
printf("输入第二个数字: ");
scanf("%lf",&secondNumber);
// 将第一个数的值赋值给 temporaryVariable
temporaryVariable = firstNumber;
// 第二个数的值赋值给 firstNumber
firstNumber = secondNumber;
// 将 temporaryVariable 赋值给 secondNumber
secondNumber = temporaryVariable;
printf("\n交换后, firstNumber = %.2lf\n", firstNumber);
printf("交换后, secondNumber = %.2lf", secondNumber);
return 0;
}
结果:
输入第一个数字: 1
输入第二个数字: 2
交换后, firstNumber = 2.00
交换后, secondNumber = 1.00
不使用临时变量:
#include <stdio.h>
int main() {
int a, b;
a = 11;
b = 99;
printf("交换之前 - \n a = %d, b = %d \n\n", a, b);
a = a + b; // ( 11 + 99 = 110) 此时 a 的变量为两数之和,b 未改变
b = a - b; // ( 110 - 99 = 11)
a = a - b; // ( 110 - 11 = 99)
printf("交换后 - \n a = %d, b = %d \n", a, b);
}
结果:
交换之前 -
a = 11, b = 99
交换后 -
a = 99, b = 11
13.判断奇数/偶数
#include <stdio.h>
int main()
{
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
// 判断这个数除以 2 的余数
if(number % 2 == 0)
printf("%d 是偶数。", number);
else
printf("%d 是奇数。", number);
return 0;
}
结果:
请输入一个整数: 5
5 是奇数。
14.循环区间范围内的奇数/偶数
通过循环输出指定区间范围的偶数:
#include <stdio.h>
int main() {
int i;
for(i = 1; i <= 10; i++) {
if(i%2 == 0)
printf(" %2d\n", i);
}
return 0;
}
结果:
2
4
6
8
10
通过循环输出指定区间范围的奇数。
#include <stdio.h>
int main() {
int i;
for(i = 1; i <= 10; i++) {
if(i%2 != 0)
printf("%d\n", i);
}
return 0;
}
结果:
1
3
5
7
9
15.判断输入的字母是元音,还是辅音。
英语有26个字母,元音只包括 a、e、i、o、u 这五个字母,其余的都为辅音。y是半元音、半辅音字母,但在英语中都把他当作辅音。
#include <stdio.h>
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 语句判断
if (isLowercaseVowel || isUppercaseVowel)
printf("%c 是元音", c);
else
printf("%c 是辅音", c);
return 0;
}
结果:
输入一个字母: G
G 是辅音
16.通过屏幕我们输入三个数字,并找出最大的数。
#include <stdio.h>
int main()
{
double n1, n2, n3;
printf("请输入三个数,以空格分隔: ");
scanf("%lf %lf %lf", &n1, &n2, &n3);
if( n1>=n2 && n1>=n3 )
printf("%.2f 是最大数。", n1);
if( n2>=n1 && n2>=n3 )
printf("%.2f 是最大数。", n2);
if( n3>=n1 && n3>=n2 )
printf("%.2f 是最大数。", n3);
return 0;
}
结果:
请输入三个数,以空格分隔: 1 2 3
3.00 是最大数。
17.求一元二次方程:ax2+bx+c=0 的根。
输入三个实数a,b,c的值,且a不等于0。
#include <stdio.h>
#include <math.h>
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;
}
结果:
输入方程的三个系数:1 2 1
-1.00 -1.00
18.判断闰年
用户输入年份,判断该年份是否为闰年。
#include <stdio.h>
int main()
{
int year;
printf("输入年份: ");
scanf("%d",&year);
if(year%4 == 0)
{
if( year%100 == 0)
{
// 这里如果被 400 整数是闰年
if ( year%400 == 0)
printf("%d 是闰年", year);
else
printf("%d 不是闰年", year);
}
else
printf("%d 是闰年", year );
}
else
printf("%d 不是闰年", year);
return 0;
}
结果:
输入年份: 1990
1990 不是闰
19.用户输入一个数字,判断该数字是正数还是负数或是零。
#include <stdio.h>
int main()
{
double number;
printf("输入一个数字: ");
scanf("%lf", &number);
if (number <= 0.0)
{
if (number == 0.0)
printf("你输入的是 0。");
else
printf("你输入的是负数。");
}
else
printf("你输入的是正数。");
return 0;
}
结果:
输入一个数字: 9
你输入的是正数。
20.用户输入一个字符,判断该字符是否为一个字母。
#include <stdio.h>
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;
}
结果:
输入一个字符: a
a 是字母
21.计算自然数的和
自然数是指表示物体个数的数,即由0开始,0,1,2,3,4,……一个接一个,组成一个无穷的集体,即指非负整数。
使用 for:
#include <stdio.h>
int main()
{
int n, i, sum = 0;
printf("输入一个正整数: ");
scanf("%d",&n);
for(i=1; i <= n; ++i)
{
sum += i; // sum = sum+i;
}
printf("Sum = %d",sum);
return 0;
}
使用 while:
#include <stdio.h>
int main()
{
int n, i, sum = 0;
printf("输入一个正整数: ");
scanf("%d",&n);
i = 1;
while ( i <=n )
{
sum += i;
++i;
}
printf("Sum = %d",sum);
return 0;
}
使用递归:
#include <stdio.h>
int addNumbers(int n);
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;
}
结果:
输入一个正整数: 100
Sum = 5050
22.输出九九乘法口诀表
#include<stdio.h>
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");
}
}
结果:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
23.斐波那契数列
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
这个数列从第3项开始,每一项都等于前两项之和。
输出指定数量的斐波那契数列:
#include <stdio.h>
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;
}
结果:
输出几项: 10
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
输出指定数字前的斐波那契数列:
#include <stdio.h>
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;
}
结果:
输入一个正数: 100
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
24.求两数的最大公约数
用户输入两个数,求这两个数的最大公约数。
使用 for 和 if:
#include <stdio.h>
int main()
{
int n1, n2, i, gcd;
printf("输入两个正整数,以空格分隔: ");
scanf("%d %d", &n1, &n2);
for(i=1; i <= n1 && i <= n2; ++i)
{
// 判断 i 是否为最大公约数
if(n1%i==0 && n2%i==0)
gcd = i;
}
printf("%d 和 %d 的最大公约数是 %d", n1, n2, gcd);
return 0;
}
结果:
输入两个正整数,以空格分隔: 81 153
81 和 153 的最大公约数是 9
使用 while 和 if:
#include <stdio.h>
int main()
{
int n1, n2;
printf("输入两个数,以空格分隔: ");
scanf("%d %d",&n1,&n2);
while(n1!=n2)
{
if(n1 > n2)
n1 -= n2;
else
n2 -= n1;
}
printf("GCD = %d",n1);
return 0;
}
结果:
输入两个数,以空格分隔: 81 153
GCD = 9
适用正数和负数:
#include <stdio.h>
int main()
{
int n1, n2;
printf("输入两个数,以空格分隔: ");
scanf("%d %d",&n1,&n2);
// 如果输入的是负数,将其转换为正数
n1 = ( n1 > 0) ? n1 : -n1;
n2 = ( n2 > 0) ? n2 : -n2;
while(n1!=n2)
{
if(n1 > n2)
n1 -= n2;
else
n2 -= n1;
}
printf("GCD = %d",n1);
return 0;
}
结果:
输入两个数,以空格分隔: 81 -153
GCD = 9
25.求两数最小公倍数
用户输入两个数,求这两个数的最小公倍数。
使用 while 和 if:
#include <stdio.h>
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;
}
结果:
输入两个正整数: 72 120
72 和 120 的最小公倍数为 360
通过最大公约数计算:
#include <stdio.h>
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;
}
结果:
输入两个正整数: 72 120
72 和 120 的最小公倍数为 360
26.阶乘
一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且 0 的阶乘为 1。自然数 n 的阶乘写作 n!。n!=1×2×3×…×n。阶乘亦可以递归方式定义:0!=1,1!=1,n!=(n-1)!×n。
#include <stdio.h>
int main()
{
int n, i;
unsigned long long 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! = %llu", n, factorial);
}
return 0;
}
结果:
输入一个整数: 10
10! = 3628800
使用递归:
#include <stdio.h>
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);
else
return 1;
}
27.循环输出26个字母
#include <stdio.h>
int main()
{
char c;
for(c = 'A'; c <= 'Z'; ++c)
printf("%c ", c);
return 0;
}
结果:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
输出大写或小写字母:
#include <stdio.h>
int main()
{
char c;
printf("输入 u 显示大写字母,输入 l 显示小写字母: ");
scanf("%c", &c);
if(c== 'U' || c== 'u')
{
for(c = 'A'; c <= 'Z'; ++c)
printf("%c ", c);
}
else if (c == 'L' || c == 'l')
{
for(c = 'a'; c <= 'z'; ++c)
printf("%c ", c);
}
else
printf("Error! 输入非法字符。");
return 0;
}
结果:
输入 u 显示大写字母,输入 l 显示小写字母: l
a b c d e f g h i j k l m n o p q r s t u v w x y z
28.判断数字为几位数
#include <stdio.h>
int main()
{
long long n;
int count = 0;
printf("输入一个整数: ");
scanf("%lld", &n);
while(n != 0)
{
// n = n/10
n /= 10;
++count;
}
printf("数字是 %d 位数。", count);
}
结果:
输入一个整数: 2345
数字是 4 位数。
29.计算一个数的 n 次方
#include <stdio.h>
int main()
{
int base, exponent;
long long result = 1;
printf("基数: ");
scanf("%d", &base);
printf("指数: ");
scanf("%d", &exponent);
while (exponent != 0)
{
result *= base;
--exponent;
}
printf("结果:%lld", result);
return 0;
}
结果:
基数: 2
指数: 3
结果:8
使用 pow() 函数:
#include <stdio.h>
#include <math.h>
int main()
{
double base, exponent, result;
printf("基数: ");
scanf("%lf", &base);
printf("指数: ");
scanf("%lf", &exponent);
// 计算结果
result = pow(base, exponent);
printf("%.1lf^%.1lf = %.2lf", base, exponent, result);
return 0;
}
结果:
基数: 2
指数: 3
2.0^3.0 = 8.00
30.判断回文数
判断一个数是否为回文数。设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数
#include <stdio.h>
int main()
{
int n, reversedInteger = 0, remainder, originalInteger;
printf("输入一个整数: ");
scanf("%d", &n);
originalInteger = n;
// 翻转
while( n!=0 )
{
remainder = n%10;
reversedInteger = reversedInteger*10 + remainder;
n /= 10;
}
// 判断
if (originalInteger == reversedInteger)
printf("%d 是回文数。", originalInteger);
else
printf("%d 不是回文数。", originalInteger);
return 0;
}
结果:
输入一个整数: 12321
12321 是回文数
31.判断素数
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。
#include <stdio.h>
int main()
{
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);
return 0;
}
结果:
输入一个正整数: 29
29 是素数
判断两个数之间的素数:
#include <stdio.h>
int main()
{
int low, high, i, flag;
printf("输入两个整数: ");
scanf("%d %d", &low, &high);
printf("%d 与 %d 之间的素数为: ", low, high);
while (low < high)
{
flag = 0;
for(i = 2; i <= low/2; ++i)
{
if(low % i == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
printf("%d ", low);
++low;
}
return 0;
}
结果:
输入两个整数: 100 200
100 与 200 之间的素数为: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
使用函数判断两数间的素数:
#include <stdio.h>
int checkPrimeNumber(int n);
int main()
{
int n1, n2, i, flag;
printf("输入两个正整数: ");
scanf("%d %d", &n1, &n2);
printf("%d 和 %d 间的素数为: ", n1, n2);
for(i=n1+1; i<n2; ++i)
{
// 判断是否为素数
flag = checkPrimeNumber(i);
if(flag == 1)
printf("%d ",i);
}
return 0;
}
// 函数定义
int checkPrimeNumber(int n)
{
int j, flag = 1;
for(j=2; j <= n/2; ++j)
{
if (n%j == 0)
{
flag =0;
break;
}
}
return flag;
}
结果:
输入两个正整数: 10 30
10 和 30 间的素数为: 11 13 17 19 23 29
32.判断Armstrong数(阿姆斯壮数)
Armstrong 数,就是n位数的各位数的n次方之和等于该数,如:
153=1^3+5^3+3^3
1634=1^4+6^4+3^4+4^4
#include <stdio.h>
int main()
{
int number, originalNumber, remainder, result = 0;
printf("输入三位数: ");
scanf("%d", &number);
originalNumber = number;
while (originalNumber != 0)
{
remainder = originalNumber%10;
result += remainder*remainder*remainder;
originalNumber /= 10;
}
if(result == number)
printf("%d 是 Armstrong 数",number);
else
printf("%d 不是 Armstrong 数",number);
return 0;
}
结果:
输入三位数: 371
371 是 Armstrong
两数之间的 Armstrong 数:
#include <stdio.h>
#include <math.h>
int main()
{
int low, high, i, temp1, temp2, remainder, n = 0, result = 0;
printf("输入两个整数: ");
scanf("%d %d", &low, &high);
printf("%d 和 %d 之间的 Armstrong 数为: ", low, high);
for(i = low + 1; i < high; ++i)
{
temp2 = i;
temp1 = i;
// 计算
while (temp1 != 0)
{
temp1 /= 10;
++n;
}
while (temp2 != 0)
{
remainder = temp2 % 10;
result += pow(remainder, n);
temp2 /= 10;
}
if (result == i) {
printf("%d ", i);
}
n = 0;
result = 0;
}
return 0;
}
结果:
输入两个整数: 100 1000
100 和 1000 之间的 Armstrong 数为: 153 370 371 407
使用函数判断Armstrong 数:
#include <stdio.h>
#include <math.h>
int checkPrimeNumber(int n);
int checkArmstrongNumber(int n);
int main()
{
int n, flag;
printf("输入正整数: ");
scanf("%d", &n);
// 检测素数
flag = checkPrimeNumber(n);
if (flag == 1)
printf("%d 是素数。\n", n);
else
printf("%d 不是素数\n", n);
// 检测 Armstrong 数
flag = checkArmstrongNumber(n);
if (flag == 1)
printf("%d 是 Armstrong 数。", n);
else
printf("%d 不是 Armstrong 数。",n);
return 0;
}
int checkPrimeNumber(int n)
{
int i, flag = 1;
for(i=2; i<=n/2; ++i)
{
// 非素数条件
if(n%i == 0)
{
flag = 0;
break;
}
}
return flag;
}
int checkArmstrongNumber(int number)
{
int originalNumber, remainder, result = 0, n = 0, flag;
originalNumber = number;
while (originalNumber != 0)
{
originalNumber /= 10;
++n;
}
originalNumber = number;
while (originalNumber != 0)
{
remainder = originalNumber%10;
result += pow(remainder, n);
originalNumber /= 10;
}
// 判断条件
if(result == number)
flag = 1;
else
flag = 0;
return flag;
}
结果:
输入正整数: 371
371 不是素数
371 是 Armstrong 数。
33.求一个整数的所有因数
#include <stdio.h>
int main()
{
int number, i;
printf("输入一个整数: ");
scanf("%d",&number);
printf("%d 的因数有: ", number);
for(i=1; i <= number; ++i)
{
if (number%i == 0)
{
printf("%d ",i);
}
}
return 0;
}
结果:
输入一个整数: 60
60 的因数有: 1 2 3 4 5 6 10 12 15 20 30 60
34.创建各类三角形图案
#include <stdio.h>
int main()
{
int i, j, rows;
printf("行数: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i)
{
for(j=1; j<=i; ++j)
{
printf("* ");
}
printf("\n");
}
return 0;
}
结果:
*
* *
* * *
* * * *
* * * * *
使用数字:
#include <stdio.h>
int main()
{
int i, j, rows;
printf("行数: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i)
{
for(j=1; j<=i; ++j)
{
printf("%d ",j);
}
printf("\n");
}
return 0;
}
结果:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
使用字母:
#include <stdio.h>
int main()
{
int i, j;
char input, alphabet = 'A';
printf("输入大写字母: ");
scanf("%c",&input);
for(i=1; i <= (input-'A'+1); ++i)
{
for(j=1;j<=i;++j)
{
printf("%c", alphabet);
}
++alphabet;
printf("\n");
}
return 0;
}
结果:
A
B B
C C C
D D D D
E E E E E
倒三角形:
#include <stdio.h>
int main()
{
int i, j, rows;
printf("行数: ");
scanf("%d",&rows);
for(i=rows; i>=1; --i)
{
for(j=1; j<=i; ++j)
{
printf("* ");
}
printf("\n");
}
return 0;
}
结果:
* * * * *
* * * *
* * *
* *
*
倒三角形数字:
#include <stdio.h>
int main()
{
int i, j, rows;
printf("行数: ");
scanf("%d",&rows);
for(i=rows; i>=1; --i)
{
for(j=1; j<=i; ++j)
{
printf("%d ",j);
}
printf("\n");
}
return 0;
}
结果:
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
金字塔:
#include <stdio.h>
int main()
{
int i, space, rows, k=0;
printf("Enter number of rows: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i, k=0)
{
for(space=1; space<=rows-i; ++space)
{
printf(" ");
}
while(k != 2*i-1)
{
printf("* ");
++k;
}
printf("\n");
}
return 0;
}
结果:
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
数字金字塔:
#include <stdio.h>
int main()
{
int i, space, rows, k=0, count = 0, count1 = 0;
printf("行数: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i)
{
for(space=1; space <= rows-i; ++space)
{
printf(" ");
++count;
}
while(k != 2*i-1)
{
if (count <= rows-1)
{
printf("%d ", i+k);
++count;
}
else
{
++count1;
printf("%d ", (i+k-2*count1));
}
++k;
}
count1 = count = k = 0;
printf("\n");
}
return 0;
}
结果:
1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
倒金字塔:
#include<stdio.h>
int main()
{
int rows, i, j, space;
printf("行数: ");
scanf("%d",&rows);
for(i=rows; i>=1; --i)
{
for(space=0; space < rows-i; ++space)
printf(" ");
for(j=i; j <= 2*i-1; ++j)
printf("* ");
for(j=0; j < i-1; ++j)
printf("* ");
printf("\n");
}
return 0;
}
结果:
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
杨辉三角:
#include <stdio.h>
int main()
{
int rows, coef = 1, space, i, j;
printf("行数: ");
scanf("%d",&rows);
for(i=0; i<rows; i++)
{
for(space=1; space <= rows-i; space++)
printf(" ");
for(j=0; j <= i; j++)
{
if (j==0 || i==0)
coef = 1;
else
coef = coef*(i-j+1)/j;
printf("%4d", coef);
}
printf("\n");
}
return 0;
}
结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
弗洛伊德三角形:
#include <stdio.h>
#define N 10
int main()
{
int i,j,l;
for(i=1,j=1;i<=N;i++)
{
for(l=1;l<=i;l++,j++)
printf("%5d",j);
printf("\n");
}
return 0;
}
结果:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54 55
35.表格形式输出数据
将 1~100 的数据以 10x10 矩阵格式输出。
#include <stdio.h>
int main() {
int i, j, count;
for(i = 1; i <= 10; i++) {
for(j = i; j <=100; j += 10 )
printf(" %3d", j);
printf("\n");
}
return 0;
}
结果:
1 11 21 31 41 51 61 71 81 91
2 12 22 32 42 52 62 72 82 92
3 13 23 33 43 53 63 73 83 93
4 14 24 34 44 54 64 74 84 94
5 15 25 35 45 55 65 75 85 95
6 16 26 36 46 56 66 76 86 96
7 17 27 37 47 57 67 77 87 97
8 18 28 38 48 58 68 78 88 98
9 19 29 39 49 59 69 79 89 99
10 20 30 40 50 60 70 80 90 100
等差数列输出 10x10 矩阵格式:
#include <stdio.h>
int main() {
int i, j, count;
int start, end;
start = 2, end = 10;
for(i = start; i <= end; i++) {
count = i;
for(j = 1; j <= 10; j++) {
printf(" %3d", count*j);
}
printf("\n");
}
return 0;
}
结果:
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
乘法运算格式:
#include <stdio.h>
int main() {
int i, j, n;
n = 3;
j = 1;
for(i = n; i <= (n*10); i+=n) {
printf("%3d x %2d = %3d\n", n, j, i);
j++;
}
return 0;
}
结果:
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
3 x 10 = 30