💥杀人编号死亡游戏
#include<stdio.h>
#include<stdio.h>
#define KILLED -1//宏定义(取别名)
//1.增强阅读性
//2.可操作性
int main(){
int num[50]={};
int count;
int killnum;
printf("请输入参与人数:");
scanf("%d",&count);
for(int i=0;i<count;i++){
num[i]=i+1;
}
printf("请输入杀人编号:");
scanf("%d",&killnum);
int current=0;//记录当前报数的位置
int totalkilled=0;
for(int i=0;i<count;i++){
if(num[i]!=KILLED){
current++;
}
if(current==killnum){
printf("死亡编号%d\n",num[i]);
num[i]=KILLED;
current=0;
totalkilled++;
if(totalkilled==count-1){
break;
}
}
//判断是否到末尾
if(i==count-1) {
i=-1;
}
}
for(int i=0;i<count;i++){
printf("%d",num[i]);
}
return 0;
}
运行结果
排序:冒泡,选择,插入
冒泡排序
实现方式:每次遍历整个数组,找到最大的一个数沉底
如果数组有N个元素
第一次遍历N-1次
第二次遍历N-2次
代码如何实现:
两层循环
第一层循环需要控制总共遍历多少次
第二次循环控制每次需要多少次才能找到最大
每次从头i=0开始 让i和i+1进行比较 确保i+1最大
程序里面尽量做到循环层级少于等于2个
#include<stdio.h>
int main(){
int num[]={3,0,1,8,7,2,5,4,9,6};
for (int i=1;i<10;i++){//控制总共遍历数
for(int j=0;j<10-i;j++){//开始每一次遍历,找到一个最大的数沉底
if(num[j]>num[j+1]){
//让j和j+1的值进行比较
int temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
for(int i=0;i<10;i++){
printf("%d ",num[i]);
}
return 0;
}
选择排序
外层循环控制需要遍历多少次N-1
内层循环变量出当前最小的数
#include<stdio.h>
int main(){
int num[]={3,0,1,8,7,2,5,4,9,6};
for(int i=0;i<10-1;i++){//控制次数
//取出i对应的值,默认是最小的数
int temp=num[i];
//从i后面开始查找当前最小的数 放在i的位置
for(int j=i+1;j<10;j++){//让temp和后面的每个数进行比较
//temp始终保持最小的那个数
if(num[j]<temp){
int n=temp;
temp=num[j];
num[j]=n;
}
}
//当前的temp值是最小的,写入i对应的值
num[i]=temp;
}
//输出
for(int i=0;i<10;i++){
printf("%d ",num[i]);
}
return 0;
}
插入排序
插入排序法的原理是每插入一个数都要将它和之前的已经完成排序的序列进行重新排序,也就是要找到新插入的数对应原序列中的位置。
#include<stdio.h>
int main(){
int num[10]={3,0,1,8,7,2,5,4,9,6};
for(int i=0;i<10-1;i++){//控制次数
if(num[i]>num[i+1]){
//换位置
int temp=num[i];
num[i]=num[i+1];
num[i+1]=temp;
//让i对应的值和前面的所有值进行比较
for(int j=i;j>0;j--){
//j和j-1进行比较
if(num[j]>num[j-1]){//当前位置就是这个数字的位置
break;
}else{
int temp=num[j];
num[j]=num[j-1];
num[j-1]=temp;
}
}
}
}
//输出
for(int i=0;i<10;i++){
printf("%d ",num[i]);
}
return 0;
}
函数的使用
函数就是代码块{ }
一个功能对应一个函数
使用函数名调用函数
驼峰命名法:第一个单词小写,第二个单词首字母大写userInput
形式参数:代码块的局部变量
😉定义函数:
1,声明和实现一起
#include<stdio.h>
int add(int a,int b){
int sum=a+b;
return sum;
}
int main(){//函数调用
add(1,2);
add(4,5);
int result=add(5,6);
return 0;
}
2,先声明,后实现
#include<stdio.h>
int minus(int a,int b);
int main(){
minus(5,4);
return 0;
}
int minus(int a,int b){
return a-b;
}
😲猜数字游戏(排序随机数综合运用 )
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int org[4]={};
int input[4]={};
int aCount=0;
int bCount=0;
srand(time(NULL));
for(int i=0;i<4;i++){
int temp=rand()%9+1;
if(i==0){
org[i]=temp;
}else{
int j=0;
for(;j<i;j++){
if(temp==org[j]){
break;
}
}
if(i==j){
org[i]=temp;
}else{
i--;
}
}
}
for(int i=0;i<4-1;i++){
for(int j=0;j<4-i-1;j++){
if(org[j]>org[j+1]){
int temp=org[j];
org[j]=org[j+1];
org[j+1]=temp;
}
}
}
//for(int i=0;i<4;i++){
// printf("%d ",org[i]);
//}
while(1){
printf("请输入猜测的数字:");
for(int i=0;i<4;i++){
scanf("%d",&input[i]);
}
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(org[i]==input[j]){
if(i==j){
aCount++;
}else{
bCount++;
}
}
}
}
printf("%dA%dB",aCount,bCount);
if(aCount==4){
printf("全对!!!!\n");
break;
}else{
aCount=0;
bCount=0;
}
}
return 0;
}