C基础案例
案例1,水仙花数
输出0-1000以内的水仙花数,水仙花算法:一个数=它的各位的立方和,例如:153=1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3. 提示:for循环取余(%),取整(/)运算符;
for (int i = 0; i < 1000; i++) {
int baiWeiShu = i / 100 %10; //百位数
int geWeiShu = i/1 % 10; //个位数
int shiWeiShu = i / 10 %10 ; //十位数
int resault = baiWeiShu * baiWeiShu * baiWeiShu + shiWeiShu * shiWeiShu * shiWeiShu + geWeiShu * geWeiShu * geWeiShu;
if (i == resault) {
printf("水仙花数:%d\n", i);
}
}
设一个数为n,则在C语言中其个位、十位、百位、千位依次这样计算:
n/1%10,n/10%10,n/100%10,n/1000%10
代码如下:
#include<stdio.h>
int main(){
int n = 123456;
int unitPlace = n / 1 % 10;
int tenPlace = n / 10 % 10;
int hundredPlace = n / 100 % 10;
int thousandPlace = n / 1000 % 10;
printf("个位:%d\n十位:%d\n百位:%d\n千位:%d\n", unitPlace, tenPlace, hundredPlace, thousandPlace);
getchar();
return 0;
}
案例2,数组翻转
将int类型的数组进行翻转操作
//数组翻转,两头堵模型
int array[] = { 3, 7, 79, 465, 2, 65, -346, 798, 1, 0 };
int size = sizeof(array) / sizeof(array[0]);
for (int i = 0; i < size / 2; i++) {
int temp = array[i];
array[i] = array[size - 1 - i];
array[size - 1 - i] = temp;
}
for (int i = 0; i < size; i++) {
printf("%d\n", array[i]);
}
案例3,冒泡排序
void BubblingSorting()
{
//冒泡排序
int array[] = { 7, 79, 465, 65, -345, -346, 798, 1, 0, 45 };
int size = sizeof(array) / sizeof(array[0]);
// 在 for (int x = 0; x < size; x++) 中,可以取出所有的值,但是比较是可以少取一次的
// 因为 array[x]取出当前的一个值,array[x+1]取出下一个值,这样取值,for循环中必须少循环一次
// 必须写成 for (int x = 0; x < size -1 ; x++) 才可以正常使用array[x+1]取出下一个值
// 第一次相邻的2个数字循环比较完成之后,数组的最后一个值必定是当前数组中的最大或者最小的值,
// 第二次相邻的2个数字循环比较完成之后,数组的倒数第二个值必定是当前数组中的最大或者最小的值,
// 第三次相邻的2个数字循环比较完成之后,数组的倒数第三个值必定是当前数组中的最大或者最小的值,
// ...
// 所以每次执行完一个比较循环之后,数组的倒数的值就不必要参与比较循环中,即如果共有10个数
// 第n次比较(外层循环) 遍历的比较循环 倒数第x个值不参与比较 比较的下标从 i 到 j(内层循环)
// 1(0) 9 无 0 9
// 2(1) 8 1 0 8
// 3(2) 7 2 0 7
// 4(3) 6 3 0 6
// 5(4) 5 4 0 5
// 6(5) 4 5 0 4
// 7(6) 3 6 0 3
// 8(7) 2 7 0 2
// 9(8) 1 8 0 1
int count = 0;
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
printf("%d %d\n", j, j + 1);
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
count++;
printf("=================%d\n", i);
}
printf("=================count = %d\n", count);
for (int i = 0; i < size; i++) {
printf("%d\n", array[i]);
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1487842110@qq.com
Title:C基础案例
文章字数:773
Author:诸子百家-谁的天下?
Created At:2020-05-08, 11:41:32
Updated At:2021-03-28, 02:59:27
Url:http://yoursite.com/2020/05/08/algorithm/%E6%A1%88%E4%BE%8B/Copyright: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。