1.输出 "Hello, World!"
#include <stdio.h> int main() { printf("Hello, World!"); //printf()中的字符串需要引号 return 0; }
输出结果:
Hello, World!
2.输出整数
#include <stdio.h>
int main()
{
int number;
// printf() 输出字符串
printf("输入一个整数: ");
// scanf() 格式化输入
scanf("%d", &number);
// printf() 显示格式化输入
printf("你输入的整数是: %d", number);
return 0;
}
输出结果:
输入一个整数: 16
你输入的整数是: 16
3.输出单个字符
#include <stdio.h>
int main() {
char c; // 声明 char 变量
c = 'F'; // 定义 char 变量
printf("c 的值为 %c", c);
return 0;
}
输出结果:
c 的值为 F
4.输出浮点数
#include <stdio.h>
int main() {
float f; // 声明浮点数变量
f = 16.001314; // 定义浮点数变量
printf("f 的值为 %f", f);
return 0;
}
输出结果:
f 的值为 16.001314
5.输出双精度(double)数
#include <stdio.h>
int main() {
double d; // 声明双精度变量
d = 52.001314; // 定义双精度变量
printf("d 的值为 %le", d);
return 0;
}
输出结果:
d 的值为 5.200131e+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;
}
输出结果:
输入两个数(以空格分割): 4 6
4 + 6 = 10
7.两个浮点数相乘
#include <stdio.h>
int main() {
float num1, num2, product;
printf("请输入第一个浮点数: ");
scanf("%f", &num1);
printf("请输入第二个浮点数: ");
scanf("%f", &num2);
product = num1 * num2;
printf("%.2f 乘于 %.2f 等于 %.2f\n", num1, num2, product);
return 0;
}
输出结果:
请输入第一个浮点数: 2.8
请输入第二个浮点数: 7.9
2.80 乘于 7.90 等于 22.12
8.字符转 ASCII 码
ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 空格(space) 64 @ 96 `(反引号) 1 SOH 33 ! 65 A 97 a 2 STX 34 " 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100 d 5 ENQ 37 % 69 E 101 e 6 ACK 38 & 70 F 102 f 7 BEL 39 ' 71 G 103 g 8 BS 40 ( 72 H 104 h 9 HT 41 ) 73 I 105 i 10 LF 42 * 74 J 106 j 11 VT 43 + 75 K 107 k 12 FF 44 , 76 L 108 l 13 CR 45 - 77 M 109 m 14 SO 46 . 78 N 110 n 15 SI 47 / 79 O 111 o 16 DLE 48 0 80 P 112 p 17 DCI 49 1 81 Q 113 q 18 DC2 50 2 82 R 114 r 19 DC3 51 3 83 S 115 s 20 DC4 52 4 84 T 116 t 21 NAK 53 5 85 U 117 u 22 SYN 54 6 86 V 118 v 23 TB 55 7 87 W 119 w 24 CAN 56 8 88 X 120 x 25 EM 57 9 89 Y 121 y 26 SUB 58 : 90 Z 122 z 27 ESC 59 ; 91 [ 123 { 28 FS 60 < 92 \ 124 | 29 GS 61 = 93 ] 125 } 30 RS 62 > 94 ^ 126 ~ 31 US 63 ? 95 _ 127 DEL
#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;
}
输出结果:
输入被除数: 7
输入除数: 2
商 = 3
余数 = 1
10.数值比较
#include <stdio.h>
int main() {
int a, b;
a = 4;
b = 16;
// 也可以通过以下代码实现让用户在终端输入两个数
// printf("输入第一个值:");
// scanf("%d", &a);
// printf("输入第二个值:");
// scanf("%d", &b);
if(a > b)
printf("a 大于 b");
else
printf("a 小于等于 b");
return 0;
}
输出结果:
a 小于等于 b
11.计算 int, float, double 和 char 字节大小
#include <stdio.h>
int main()
{
/*使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。
sizeof 是 C 语言的一种单目操作符,如C语言的其他操作符++、--等,它并不是函数。
sizeof 操作符以字节形式给出了其操作数的存储大小。*/
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
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;
}
输出结果:
输入第一个数字: 4
输入第二个数字: 16交换后, firstNumber = 16.00
交换后, secondNumber = 4.00
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;
}
输出结果:
请输入一个整数: 7
7 是奇数。
14.循环区间范围内的奇数/偶数
#include <stdio.h>
int main() {
int i;
for(i = 1; i <= 10; i++) {
if(i%2 == 0)
printf(" %2d\n", i);//输出偶数
}
for(i = 1; i <= 10; i++) {
if(i%2 != 0)
printf("%d\n", i)//输出奇数
}
return 0;
}
输出结果:
2
4
6
8
101
3
5
7
9
15.判断元音/辅音
#include <stdio.h>
int main()
{
/*英语有26个字母,元音只包括 a、e、i、o、u 这五个字母,其余的都为辅音。y是半元音、半辅音字母,但在英语中都把他当作辅音。*/
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;
}
运行结果:
输入一个字母: A A 是元音
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;
}
运行结果:
请输入三个数,以空格分隔: 5 4 16 16.00 是最大数。
17. 一元二次方程
#include <stdio.h>
#include <math.h>
int main()
{
/*求一元二次方程:ax2+bx+c=0 的根。输入三个实数a,b,c的值,且a不等于0。*/
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;
}
运行结果:
输入一个数字: 16 你输入的是正数。
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;
}
运行结果:
输入一个字符: ! !不是字母
21.计算自然数的和
#include <stdio.h>
int main()
{
/*自然数是指表示物体个数的数,即由0开始,0,1,2,3,4,……一个接一个,组成一个无穷的集体,即指非负整数。*/
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;
}
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.斐波那契数列
#include <stdio.h>
int main()
{
/*斐波那契数列指的是这样一个数列 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项开始,每一项都等于前两项之和。*/
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.求两数的最大公约数
#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;
}
运行结果:
输入两个正整数,以空格分隔: 9 15 9 和 15 的最大公约数是 3
25.求两数最小公倍数
#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;
}
运行结果:
输入两个正整数: 9 15 9 和 15 的最小公倍数为 45
26.阶乘
#include <stdio.h>
int main()
{
/*一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且 0 的阶乘为 1。
自然数 n 的阶乘写作 n!。
n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,1!=1,n!=(n-1)!×n。*/
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
27.循环输出26个字母
#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);
}
运行结果:
输入一个整数: 1314 数字是 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;
}
运行结果:
基数: 3 指数: 3 结果:27
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.判断素数
质数(prime number)又称素数,有无限个。质数定义为在大于 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(n <=1 ) {
flag=1; // 1 和 0 不是素数
}
if (flag==0)
printf("%d 是素数",n);
else
printf("%d 不是素数",n);
return 0;
}
运行结果:
输入一个正整数: 30 30 不是素数
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
33.求一个整数的所有因数
假如a*b=c(a、b、c都是整数),那么我们称a和b就是c的因数。
#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, 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 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
35.表格形式输出数据
等差数列输出 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
36.实现简单的计算器
# include <stdio.h>
int main() {
char operator;
double firstNumber,secondNumber;
printf("输入操作符 (+, -, *, /): ");
scanf("%c", &operator);
printf("输入两个数字: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
switch(operator)
{
case '+':
printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber + secondNumber);
break;
case '-':
printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber - secondNumber);
break;
case '*':
printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber * secondNumber);
break;
case '/':
printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber / secondNumber);
break;
// operator doesn't match any case constant (+, -, *, /)
default:
printf("Error! operator is not correct");
}
return 0;
}
输出结果为:
输入操作符 (+, -, *, /): * 输入两个数字: 4 5 4.0 * 5.0 = 20.0
37.计算一个数是否可为两个素数之和
#include <stdio.h>
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;
}
输出结果为:
输入正整数: 34 34 = 3 + 31 34 = 5 + 29 34 = 11 + 23 34 = 17 + 17
38.二进制与十进制相互转换
#include <stdio.h>
#include <math.h>
int convertBinaryToDecimal(long long n);
int main()
{
long long n;
printf("输入一个二进制数: ");
scanf("%lld", &n);
printf("二进制数 %lld 转换为十进制为 %d", n, convertBinaryToDecimal(n));
return 0;
}
int convertBinaryToDecimal(long long n)
{
int decimalNumber = 0, i = 0, remainder;
while (n!=0)
{
remainder = n%10;
n /= 10;
decimalNumber += remainder*pow(2,i);
++i;
}
return decimalNumber;
}
输出结果为:
输入一个二进制数: 110110111 二进制数 110110111 转换为十进制为 439
#include <stdio.h>
#include <math.h>
long long convertDecimalToBinary(int n);
int main()
{
int n;
printf("输入一个十进制数: ");
scanf("%d", &n);
printf("十进制数 %d 转换为二进制位 %lld", n, convertDecimalToBinary(n));
return 0;
}
long long convertDecimalToBinary(int n)
{
long long binaryNumber = 0;
int remainder, i = 1, step = 1;
while (n!=0)
{
remainder = n%2;
printf("Step %d: %d/2, 余数 = %d, 商 = %d\n", step++, n, remainder, n/2);
n /= 2;
binaryNumber += remainder*i;
i *= 10;
}
return binaryNumber;
}
输出结果为:
输入一个十进制数: 100 Step 1: 100/2, 余数 = 0, 商 = 50 Step 2: 50/2, 余数 = 0, 商 = 25 Step 3: 25/2, 余数 = 1, 商 = 12 Step 4: 12/2, 余数 = 0, 商 = 6 Step 5: 6/2, 余数 = 0, 商 = 3 Step 6: 3/2, 余数 = 1, 商 = 1 Step 7: 1/2, 余数 = 1, 商 = 0 十进制数 100 转换为二进制位 1100100
39.八进制与十进制相互转换
#include <stdio.h>
#include <math.h>
int convertDecimalToOctal(int decimalNumber);
int main()
{
int decimalNumber;
printf("输入一个十进制数: ");
scanf("%d", &decimalNumber);
printf("十进制数 %d 转换为八进制为 %d", decimalNumber, convertDecimalToOctal(decimalNumber));
return 0;
}
int convertDecimalToOctal(int decimalNumber)
{
int octalNumber = 0, i = 1;
while (decimalNumber != 0)
{
octalNumber += (decimalNumber % 8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
输出结果为:
输入一个十进制数: 78 十进制数 78 转换为八进制为 116
#include <stdio.h>
#include <math.h>
long long convertOctalToDecimal(int octalNumber);
int main()
{
int octalNumber;
printf("输入一个八进制数: ");
scanf("%d", &octalNumber);
printf("八进制数 %d 转换为十进制为 %lld", octalNumber, convertOctalToDecimal(octalNumber));
return 0;
}
long long convertOctalToDecimal(int octalNumber)
{
int decimalNumber = 0, i = 0;
while(octalNumber != 0)
{
decimalNumber += (octalNumber%10) * pow(8,i);
++i;
octalNumber/=10;
}
i = 1;
return decimalNumber;
}
输出结果为:
输入一个八进制数: 116 八进制数 116 转换为十进制为 78
40.八进制与二进制相互转换
#include <stdio.h>
#include <math.h>
int convertBinarytoOctal(long long binaryNumber);
int main()
{
long long binaryNumber;
printf("输入一个二进制数: ");
scanf("%lld", &binaryNumber);
printf("二进制数 %lld 转换为八进制为 %d", binaryNumber, convertBinarytoOctal(binaryNumber));
return 0;
}
int convertBinarytoOctal(long long binaryNumber)
{
int octalNumber = 0, decimalNumber = 0, i = 0;
while(binaryNumber != 0)
{
decimalNumber += (binaryNumber%10) * pow(2,i);
++i;
binaryNumber/=10;
}
i = 1;
while (decimalNumber != 0)
{
octalNumber += (decimalNumber % 8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
输出结果为:
输入一个二进制数: 101001 二进制数 101001 转换为八进制为 51
#include <stdio.h>
#include <math.h>
long long convertOctalToBinary(int octalNumber);
int main()
{
int octalNumber;
printf("输入一个八进制数: ");
scanf("%d", &octalNumber);
printf("八进制数 %d 转二进制为 %lld", octalNumber, convertOctalToBinary(octalNumber));
return 0;
}
long long convertOctalToBinary(int octalNumber)
{
int decimalNumber = 0, i = 0;
long long binaryNumber = 0;
while(octalNumber != 0)
{
decimalNumber += (octalNumber%10) * pow(8,i);
++i;
octalNumber/=10;
}
i = 1;
while (decimalNumber != 0)
{
binaryNumber += (decimalNumber % 2) * i;
decimalNumber /= 2;
i *= 10;
}
return binaryNumber;
}
输出结果为:
输入一个八进制数: 51 八进制数 51 转二进制为 101001
41.字符串翻转
#include <stdio.h>
void reverseSentence();
int main()
{
printf("输入一个字符串: ");
reverseSentence();
return 0;
}
void reverseSentence()
{
char c;
scanf("%c", &c);
if( c != '\n')
{
reverseSentence();
printf("%c",c);
}
}
输出结果为:
输入一个字符串: China anihC
42.计算数组元素平均值
#include <stdio.h>
int main()
{
int n, i;
float num[100], sum = 0.0, average;
printf("输入元素个数: ");
scanf("%d", &n);
while (n > 100 || n <= 0)
{
printf("Error! 数字需要在1 到 100 之间。\n");
printf("再次输入: ");
scanf("%d", &n);
}
for(i = 0; i < n; ++i)
{
printf("%d. 输入数字: ", i+1);
scanf("%f", &num[i]);
sum += num[i];
}
average = sum / n;
printf("平均值 = %.2f", average);
return 0;
}
输出结果为:
输入元素个数: 4 1. 输入数字: 1 2. 输入数字: 2 3. 输入数字: 4 4. 输入数字: 8 平均值 = 3.75
43.输出数组
#include <stdio.h>
int main() {
int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int loop;
for(loop = 0; loop < 10; loop++)
printf("%d ", array[loop]);
return 0;
}
输出结果为:
1 2 3 4 5 6 7 8 9 0
44.计算数组元素之和
#include <stdio.h>
int main() {
int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int sum, loop;
sum = 0;
for(loop = 9; loop >= 0; loop--) {
sum = sum + array[loop];
}
printf("元素和为:%d", sum);
return 0;
}
输出结果为:
元素和为:45
45.查找数组中最大的元素值
#include <stdio.h>
int main()
{
int i, n;
float arr[100];
printf("输入元素个数(0~100): ");
scanf("%d", &n);
printf("\n");
// 接收用户输入
for(i = 0; i < n; ++i)
{
printf("输入数字 %d: ", i+1);
scanf("%f", &arr[i]);
}
// 循环,并将最大元素存储到 arr[0]
for(i = 1; i < n; ++i)
{
// 如果要查找最小值可以将 < 换成 >
if(arr[0] < arr[i])
arr[0] = arr[i];
}
printf("最大元素为 = %.2f", arr[0]);
return 0;
}
输出结果为:
输入元素个数(0~100): 4 输入数字 1: 12 输入数字 2: 23 输入数字 3: 1 输入数字 4: 3 最大元素为 = 23.00
46. 查找数组中最小的元素
#include <stdio.h>
int main() {
int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int loop, smallest;
smallest = array[0];
for(loop = 1; loop < 10; loop++) {
if( smallest > array[loop] )
smallest = array[loop];
}
printf("最小元素为 %d", smallest);
return 0;
}
输出结果为:
最小元素为 0
47.数组拆分与合并
#include <stdio.h>
int main() {
int array[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int even[10], odd[10];
int loop, e, d;
e = d = 0;
for(loop = 0; loop < 10; loop++) {
if(array[loop]%2 == 0) {
even[e] = array[loop];
e++;
}else {
odd[d] = array[loop];
d++;
}
}
printf(" 原始数组 -> ");
for(loop = 0; loop < 10; loop++)
printf(" %d", array[loop]);
printf("\n 偶数 -> ");
for(loop = 0; loop < e; loop++)
printf(" %d", even[loop]);
printf("\n 奇数 -> ");
for(loop = 0; loop < d; loop++)
printf(" %d", odd[loop]);
return 0;
}
输出结果为:
原始数组 -> 0 1 2 3 4 5 6 7 8 9 偶数 -> 0 2 4 6 8 奇数 -> 1 3 5 7 9
48.数组拷贝
#include <stdio.h>
int main() {
int original[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int copied[10];
int loop;
for(loop = 0; loop < 10; loop++) {
copied[loop] = original[loop];
}
printf("元素数组 -> 拷贝后的数组 \n");
for(loop = 0; loop < 10; loop++) {
printf(" %2d %2d\n", original[loop], copied[loop]);
}
return 0;
}
输出结果为:
元素数组 -> 拷贝后的数组 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 0 0
49.计算标准偏差
#include <stdio.h>
#include <math.h>
float calculateSD(float data[]);
int main()
{
int i;
float data[10];
printf("输入10个元素: ");
for(i=0; i < 10; ++i)
scanf("%f", &data[i]);
printf("\n标准偏差 = %.6f", calculateSD(data));
return 0;
}
float calculateSD(float data[])
{
float sum = 0.0, mean, standardDeviation = 0.0;
int i;
for(i=0; i<10; ++i)
{
sum += data[i];
}
mean = sum/10;
for(i=0; i<10; ++i)
standardDeviation += pow(data[i] - mean, 2);
return sqrt(standardDeviation/10);
}
输出结果为:
输入10个元素: 1 2 3 4 5 6 7 8 9 10 标准偏差 = 2.872281
50.两个矩阵相加
#include <stdio.h>
int main(){
int r, c, a[100][100], b[100][100], sum[100][100], i, j;
printf("输入行数 ( 1 ~ 100): ");
scanf("%d", &r);
printf("输入列数 ( 1 ~ 100): ");
scanf("%d", &c);
printf("\n输入第一维数组的元素:\n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("输入元素 a%d%d: ",i+1,j+1);
scanf("%d",&a[i][j]);
}
printf("输入第二维数组的元素:\n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("输入元素 a%d%d: ",i+1, j+1);
scanf("%d", &b[i][j]);
}
// 相加
for(i=0;i<r;++i)
for(j=0;j<c;++j)
{
sum[i][j]=a[i][j]+b[i][j];
}
// 显示结果
printf("\n二维数组相加结果: \n\n");
for(i=0;i<r;++i)
for(j=0;j<c;++j)
{
printf("%d ",sum[i][j]);
if(j==c-1)
{
printf("\n\n");
}
}
return 0;
}
输出结果为:
输入行数 ( 1 ~ 100): 2 输入列数 ( 1 ~ 100): 3 输入第一维数组的元素: 输入元素 a11: 2 输入元素 a12: 3 输入元素 a13: 4 输入元素 a21: 5 输入元素 a22: 2 输入元素 a23: 3 输入第二维数组的元素: 输入元素 a11: -4 输入元素 a12: 5 输入元素 a13: 3 输入元素 a21: 5 输入元素 a22: 6 输入元素 a23: 3 二维数组相加结果: -2 8 7 10 8 6
51.矩阵转换
#include <stdio.h>
int main()
{
int a[10][10], transpose[10][10], r, c, i, j;
printf("输入矩阵的行与列: ");
scanf("%d %d", &r, &c);
// 存储矩阵的元素
printf("\n输入矩阵元素:\n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("输入元素 a%d%d: ",i+1, j+1);
scanf("%d", &a[i][j]);
}
// 显示矩阵 a[][] */
printf("\n输入矩阵: \n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("%d ", a[i][j]);
if (j == c-1)
printf("\n\n");
}
// 转换
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
transpose[j][i] = a[i][j];
}
// 显示转换后的矩阵 a
printf("\n转换后矩阵:\n");
for(i=0; i<c; ++i)
for(j=0; j<r; ++j)
{
printf("%d ",transpose[i][j]);
if(j==r-1)
printf("\n\n");
}
return 0;
}
输出结果为:
输入矩阵的行与列: 2 3 输入矩阵元素: 输入元素 a11: 2 输入元素 a12: 3 输入元素 a13: 4 输入元素 a21: 5 输入元素 a22: 6 输入元素 a23: 4 输入矩阵: 2 3 4 5 6 4 转换后矩阵: 2 5 3 6 4 4
52.使用指针访问数组元素
#include <stdio.h>
int main()
{
int data[5], i;
printf("输入元素: ");
for(i = 0; i < 5; ++i)
scanf("%d", data + i);
printf("你输入的是: \n");
for(i = 0; i < 5; ++i)
printf("%d\n", *(data + i));
return 0;
}
输出结果为:
输入元素: 1 2 3 5 4 你输入的是: 1 2 3 5 4
53.使用引用循环替换数值
#include<stdio.h>
void cyclicSwap(int *a,int *b,int *c);
int main()
{
int a, b, c;
printf("输入 a, b 和 c 的值: ");
scanf("%d %d %d",&a,&b,&c);
printf("交换前:\n");
printf("a = %d \nb = %d \nc = %d\n",a,b,c);
cyclicSwap(&a, &b, &c);
printf("交换后:\n");
printf("a = %d \nb = %d \nc = %d",a, b, c);
return 0;
}
void cyclicSwap(int *a,int *b,int *c)
{
int temp;
// 交换
temp = *b;
*b = *a;
*a = *c;
*c = temp;
}
输出结果为:
输入 a, b 和 c 的值: 1 2 3 交换前: a = 1 b = 2 c = 3 交换后: a = 3 b = 1 c = 2
54. 判断最大值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, num;
float *data;
printf("输入元素个数(1 ~ 100): ");
scanf("%d", &num);
// 为 'num' 元素分配内存
data = (float*) calloc(num, sizeof(float));
if(data == NULL)
{
printf("Error!!! 内存没有分配。");
exit(0);
}
printf("\n");
// 用户输入
for(i = 0; i < num; ++i)
{
printf("输入数字 %d: ", i + 1);
scanf("%f", data + i);
}
// 循环找出最大值
for(i = 1; i < num; ++i)
{
// 如果需要找出最小值可以将 < 改为 >
if(*data < *(data + i))
*data = *(data + i);
}
printf("最大元素 = %.2f", *data);
return 0;
}
输出结果为:
输入元素个数(1 ~ 100): 5 输入数字 1: 12 输入数字 2: 32 输入数字 3: 6 输入数字 4: 56 输入数字 5: 21 最大元素 = 56.00
55.删除字符串中的特殊字符
#include<stdio.h>
int main()
{
char line[150];
int i, j;
printf("输入一个字符串: ");
fgets(line, (sizeof line / sizeof line[0]), stdin);
for(i = 0; line[i] != '\0'; ++i)
{
while (!( (line[i] >= 'a' && line[i] <= 'z') || (line[i] >= 'A' && line[i] <= 'Z') || line[i] == '\0') )
{
for(j = i; line[j] != '\0'; ++j)
{
line[j] = line[j+1];
}
line[j] = '\0';
}
}
printf("输出: ");
puts(line);
return 0;
}
输出结果为:
输入一个字符串: llz4#$1oo 输出: llzoo
56.连接字符串
#include <stdio.h>
int main()
{
char s1[100], s2[100], i, j;
printf("输入第一个字符串: ");
scanf("%s", s1);
printf("输入第二个字符串: ");
scanf("%s", s2);
// 计算字符串 s1 长度
for(i = 0; s1[i] != '\0'; ++i);
for(j = 0; s2[j] != '\0'; ++j, ++i)
{
s1[i] = s2[j];
}
s1[i] = '\0';
printf("连接后: %s", s1);
return 0;
}
输出结果为:
输入第一个字符串: mcs 输入第二个字符串: zll 连接后: mcszll
57.计算字符串长度
#include <stdio.h>
#include <string.h>
int main()
{
char s[1000];
int len;
printf("输入字符串: ");
scanf("%s", s);
len = strlen(s);
printf("字符串长度: %d", len);
return 0;
}
输出结果为:
输入字符串: mcszll 字符串长度: 6
58.查找字符在字符串中出现的次数
#include <stdio.h>
int main()
{
char str[1000], ch;
int i, frequency = 0;
printf("输入字符串: ");
fgets(str, (sizeof str / sizeof str[0]), stdin);
printf("输入要查找的字符: ");
scanf("%c",&ch);
for(i = 0; str[i] != '\0'; ++i)
{
if(ch == str[i])
++frequency;
}
printf("字符 %c 在字符串中出现的次数为 %d", ch, frequency);
return 0;
}
输出结果为:
输入字符串:mcszll 输入要查找的字符: l 字符 l 在字符串中出现的次数为 2
59.字符串中各种字符计算
#include <stdio.h>
int main()
{
char line[150];
int i, vowels, consonants, digits, spaces;
vowels = consonants = digits = spaces = 0;
printf("输入一个字符串: ");
scanf("%[^\n]", line);
for(i=0; line[i]!='\0'; ++i)
{
if(line[i]=='a' || line[i]=='e' || line[i]=='i' ||
line[i]=='o' || line[i]=='u' || line[i]=='A' ||
line[i]=='E' || line[i]=='I' || line[i]=='O' ||
line[i]=='U')
{
++vowels;
}
else if((line[i]>='a'&& line[i]<='z') || (line[i]>='A'&& line[i]<='Z'))
{
++consonants;
}
else if(line[i]>='0' && line[i]<='9')
{
++digits;
}
else if (line[i]==' ')
{
++spaces;
}
}
printf("元音: %d",vowels);
printf("\n辅音: %d",consonants);
printf("\n数字: %d",digits);
printf("\n空白符: %d", spaces);
return 0;
}
输出结果为:
输入一个字符串: lulaab123 erkcomsww dfzusiib 元音: 8 辅音: 15 数字: 3 空白符: 2
60.字符串复制
#include <stdio.h>
#include <string.h>
int main()
{
char src[40];
char dest[100];
memset(dest, '\0', sizeof(dest));
strcpy(src, "This is mcszlll.com");
strcpy(dest, src);
printf("最终的目标字符串: %s\n", dest);
return(0);
}
输出结果为:
最终的目标字符串: This is mcszlll.com
61.字符串排序
#include<stdio.h>
#include <string.h>
int main()
{
int i, j;
char str[10][50], temp[50];
printf("输入10个单词:\n");
for(i=0; i<10; ++i) {
scanf("%s[^\n]",str[i]);
}
for(i=0; i<9; ++i) {
for(j=i+1; j<10 ; ++j)
{
if(strcmp(str[i], str[j])>0)
{
strcpy(temp, str[i]);
strcpy(str[i], str[j]);
strcpy(str[j], temp);
}
}
}
printf("\n排序后: \n");
for(i=0; i<10; ++i)
{
puts(str[i]);
}
return 0;
}
输出结果为:
输入10个单词: C C++ Java PHP Python Perl Ruby R JavaScript PHP 排序后: C C++ Java JavaScript PHP PHP Perl Python R Ruby
62.使用结构体(struct)
#include <stdio.h>
struct student
{
char name[50];
int roll;
float marks;
} s;
int main()
{
printf("输入信息:\n");
printf("名字: ");
scanf("%s", s.name);
printf("编号: ");
scanf("%d", &s.roll);
printf("成绩: ");
scanf("%f", &s.marks);
printf("显示信息:\n");
printf("名字: ");
puts(s.name);
printf("编号: %d\n",s.roll);
printf("成绩: %.1f\n", s.marks);
return 0;
}
输出结果为:
输入信息: 名字: zll 编号: 123 成绩: 89 显示信息: 名字: zll 编号: 123 成绩: 89.0
63.复数相加
#include <stdio.h>
typedef struct complex
{
float real;
float imag;
} complex;
complex add(complex n1,complex n2);
int main()
{
complex n1, n2, temp;
printf("第一个复数 \n");
printf("输入实部和虚部:\n");
scanf("%f %f", &n1.real, &n1.imag);
printf("\n第二个复数 \n");
printf("输入实部和虚部:\n");
scanf("%f %f", &n2.real, &n2.imag);
temp = add(n1, n2);
printf("Sum = %.1f + %.1fi", temp.real, temp.imag);
return 0;
}
complex add(complex n1, complex n2)
{
complex temp;
temp.real = n1.real + n2.real;
temp.imag = n1.imag + n2.imag;
return(temp);
}
输出结果为:
第一个复数 输入实部和虚部: 2.3 4.5 第二个复数 输入实部和虚部: 3.4 5 Sum = 5.7 + 9.5i
64.计算两个时间段的差值
#include <stdio.h>
struct TIME
{
int seconds;
int minutes;
int hours;
};
void differenceBetweenTimePeriod(struct TIME t1, struct TIME t2, struct TIME *diff);
int main()
{
struct TIME startTime, stopTime, diff;
printf("输入开始时间: \n");
printf("输入小时、分钟、秒:");
scanf("%d %d %d", &startTime.hours, &startTime.minutes, &startTime.seconds);
printf("输入停止时间: \n");
printf("输入小时、分钟、秒: ");
scanf("%d %d %d", &stopTime.hours, &stopTime.minutes, &stopTime.seconds);
// 计算差值
differenceBetweenTimePeriod(startTime, stopTime, &diff);
printf("\n差值: %d:%d:%d - ", startTime.hours, startTime.minutes, startTime.seconds);
printf("%d:%d:%d ", stopTime.hours, stopTime.minutes, stopTime.seconds);
printf("= %d:%d:%d\n", diff.hours, diff.minutes, diff.seconds);
return 0;
}
void differenceBetweenTimePeriod(struct TIME start, struct TIME stop, struct TIME *diff)
{
if(stop.seconds > start.seconds){
--start.minutes;
start.seconds += 60;
}
diff->seconds = start.seconds - stop.seconds;
if(stop.minutes > start.minutes){
--start.hours;
start.minutes += 60;
}
diff->minutes = start.minutes - stop.minutes;
diff->hours = start.hours - stop.hours;
}
输出结果为:
输入开始时间: 输入小时、分钟、秒:12 34 55 输入停止时间: 输入小时、分钟、秒: 8 12 5 差值: 12:34:55 - 8:12:5 = 4:22:50
65.将字符串写入文件
#include <stdio.h>
#include <stdlib.h> /* exit() 函数 */
int main()
{
char sentence[1000];
FILE *fptr;
fptr = fopen("test.txt", "w");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
printf("输入字符串:\n");
fgets(sentence, (sizeof sentence / sizeof sentence[0]), stdin);
fprintf(fptr,"%s", sentence);
fclose(fptr);
return 0;
}
输出结果为:
输入字符串: mcszll.com 打开文件 test.txt: $ cat test.txt mcszll.com
66.从文件中读取一行
从文件中读取一行。
文件 file.txt 内容:
$ cat file.txt
www.com
google.com
#include <stdio.h>
#include <stdlib.h> // exit() 函数
int main()
{
char c[1000];
FILE *fptr;
if ((fptr = fopen("file.txt", "r")) == NULL)
{
printf("Error! opening file");
// 文件指针返回 NULL 则退出
exit(1);
}
// 读取文本,直到碰到新的一行开始
fscanf(fptr,"%[^\n]", c);
printf("读取内容:\n%s", c);
fclose(fptr);
return 0;
}
输出结果为:
读取内容: www.com
67.输出当前文件执行代码
#include <stdio.h>
int main() {
FILE *fp;
char c;
fp = fopen(__FILE__,"r");
do {
c = getc(fp);
putchar(c);
}
while(c != EOF);
fclose(fp);
return 0;
}
输出结果为:
#include <stdio.h> int main() { FILE *fp; char c; fp = fopen(__FILE__,"r"); do { c = getc(fp); putchar(c); } while(c != EOF); fclose(fp); return 0; }
68.约瑟夫生者死者小游戏
30 个人在一条船上,超载,需要 15 人下船。
于是人们排成一队,排队的位置即为他们的编号。
报数,从 1 开始,数到 9 的人下船。
如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
#include<stdio.h>
int c = 0;
int i = 1;
int j = 0;
int a[30] = { 0 };
int b[30] = { 0 };
int main() {
while (i<=31) {
if (i == 31) {
i = 1;
} else if (c == 15) {
break;
} else {
if (b[i] != 0) {
i++;
continue;
} else {
j++;
if (j != 9) {
i++;
continue;
} else {
b[i] = 1;
a[i] = j;
j = 0;
printf("第%d号下船了\n", i);
i++;
c++;
}
}
}
}
}
执行以上实例,输出结果为:
第9号下船了 第18号下船了 第27号下船了 第6号下船了 第16号下船了 第26号下船了 第7号下船了 第19号下船了 第30号下船了 第12号下船了 第24号下船了 第8号下船了 第22号下船了 第5号下船了 第23号下船了
69.五人分鱼
A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。
C、D、E依次醒来,也按同样的方法拿鱼。
问他们台伙至少捕了多少条鱼?以及每个人醒来时见到了多少鱼?
#include <stdio.h>
int main(){
int n,x,j,k,l,m;
for(n=5;;n++){
j=4*(n-1)/5;
k=4*(j-1)/5;
l=4*(k-1)/5;
m=4*(l-1)/5;
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;
}
}
return 0;
}
以上实例输出结果为:
至少合伙捕鱼:3121条 分别见到鱼的条数:2496 1996 1596 1276
70. 无重复数字的三位数
题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。
#include<stdio.h>
int main()
{
int i,j,k;
printf("\n");
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);
}
}
}
}
}
以上实例输出结果为:
1,2,3 1,2,4 1,3,2 1,3,4 1,4,2 1,4,3 2,1,3 2,1,4 2,3,1 2,3,4 2,4,1 2,4,3 3,1,2 3,1,4 3,2,1 3,2,4 3,4,1 3,4,2 4,1,2 4,1,3 4,2,1 4,2,3 4,3,1 4,3,2
71.企业发放的奖金根据利润提成。
题目:企业发放的奖金根据利润提成。
- 利润(I)低于或等于10万元时,奖金可提10%;
- 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
- 20万到40万之间时,高于20万元的部分,可提成5%;
- 40万到60万之间时高于40万元的部分,可提成3%;
- 60万到100万之间时,高于60万元的部分,可提成1.5%;
- 高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润I,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成双精度浮点(double)型。
#include<stdio.h>
int main()
{
double i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
printf("你的净利润是:\n");
scanf("%lf",&i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if(i<=100000) {
bonus=i*0.1;
} else if(i<=200000) {
bonus=bonus1+(i-100000)*0.075;
} else if(i<=400000) {
bonus=bonus2+(i-200000)*0.05;
} else if(i<=600000) {
bonus=bonus4+(i-400000)*0.03;
} else if(i<=1000000) {
bonus=bonus6+(i-600000)*0.015;
} else if(i>1000000) {
bonus=bonus10+(i-1000000)*0.01;
}
printf("提成为:bonus=%lf",bonus);
printf("\n");
}
以上实例输出结果为:
你的净利润是: 120000 提成为:bonus=11500.000000