口袋金钱问题

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 35
void print(int [][N]);//输出函数

void movepla(int [][N]);//$移动函数
void setting(void);//设置函数
void menu(void);//菜单函数

int scr[22][N]={0},pl=9,width=24,speed=3,density=30,death=0;//全局变量:界面、#位置、界面宽度、$速度、$密度、得分、

main(void)
{
    menu();
    
int i=0,j=0;
    scr[21][pl]=1;
    scr[0][5]=3;
    
    while(1)
    {
  if(kbhit())
  switch(getch())//控制左右移动和进入菜单
      {
      case 'a':case 'A':
       if(pl>0)
      scr[21][pl]=0,scr[21][--pl]=1;
   break;
          case 'd':case 'D':
       if(pl<width-2)
      scr[21][pl]=0,scr[21][++pl]=1;
               break;
  case 27 :
      setting();
              break;
      }
      
  if(++j%density==0)//控制生产$的速度
      {
     j=0;srand(time(NULL));
         scr[0][rand()%width]=3;
      }
      if(++i%speed==0)
         movepla(scr);
      
      
      print(scr);
      if(i==30000)
     i=0;
      
   }
  
}

void print(int a[][N])
{
   system("cls");
   int i,j;
   for(i=0;i<22;i++)
   {
     a[i][width-1]=4;
     for(j=0;j<width;j++)
 {
   if(a[i][j]==0)
      printf(" ");
       if(a[i][j]==1)
          printf("#");

       if(a[i][j]==3)
      printf("$"); 
       if(a[i][j]==4)
      printf("&");
       
       if(i==1&&j==width-1)
      printf("获得:%d¥",death);
       if(i==2&&j==width-1)
      printf("设置:Esc");
       if(i==3&&j==width-1)
      printf("感谢游玩,请五星好评哦!亲!");
      	if(i==4&&j==width-1)  
      printf("说明:按A D 控制口袋左右移动");
	  	if(i==5&&j==width-1)  
      printf("");
     }
     printf("\n");
  }
}


void movepla(int a[][N])//金钱移动函数
{
    int i,j;
    for(i=21;i>=0;i--)
        for(j=0;j<width;j++)
        {
           if(i==21&&a[i][j]==3)
      a[i][j]=0;
           if(a[i][j]==3)
      a[i][j]=0,a[i+1][j]=3;
        }
    if(a[20][pl]==3&&a[21][pl]==1)
  death++;
}

void setting(void)//设置函数
{
     int sw=0,i,j;
     system("cls");
     do{sw=0;printf("\n 游戏界面的大小:1.大2.小>> ");
     switch(getche())
     {
         case '1':
    width=34;
break;
         case '2':
    width=24;
break;
         default:
     printf("\n 错误,请重新选择...\n");
         sw=1;
     }
   }
    while(sw);
    do
    {
      sw=0;
      printf("\n 请选择金钱密度:1.大2.中3.小>> ");
      switch(getche())
      {
          case '0':
     density=10;
             break;
          case '1':
     density=20;
             break;
 case '2':
     density=30;
             break;
 case '3':
     density=40;
 break;
         default:
     printf("\n 错误,请重新选择...\n");
         sw=1;
     }
  }while(sw);
  do
  {
     sw=0;
     printf("\n 金钱的飞行速度:1.快2.中3.慢>> ");
     switch(getche())
     {
       case '1':
  speed=2;
          break;
       case '2':
     speed=3;
         break;
       case '3':
     speed=4;
         break;
       default:
     printf("\n 错误,请重新选择...\n");
       sw=1;
    }
  }while(sw);
  for(i=0;i<22;i++)
     for(j=0;j<45;j++)
       scr[i][j]=0;
   scr[21][pl=9]=1;
   printf("\n 按任意键保存...");
   getch();
}

void menu(void)//菜单函数
{
   printf("说明:按A D 控制口袋左右移动拾取金钱。\n 设置:请按Esc\n 开始游戏:任意键\n      ");
   if(getch()==27)
   setting();
}

1. (二维数组)矩阵转置。
代码:
#include <stdio.h>

int main()

{

	int a[2][3] = { {1,2,3} , {4,5,6}};

	int b[3][2];

	for(int i = 0 ; i < 2 ; i++){

		for(int k = 0 ; k < 3 ; k++){

			printf("%6d",a[i][k]);

		}

		printf("\n"); 

	} 

	for(int i = 0 ; i < 2 ; i++){

		for(int k = 0 ; k < 3 ; k++){

			b[k][i] = a[i][k];	

		}

	}

	printf("转置后的数组");

	puts(""); 

	for(int i = 0 ; i < 3 ; i++){

		for(int k = 0 ; k < 2 ; k++){

			printf("%6d",b[i][k]);

		}

		printf("\n"); 

	} 

 } 

2. (一维数组)数组交换元素
代码:
#include<stdio.h>
int main()
{
    int arr1[] = { 1,3,5,7,9 };
    int arr2[] = { 2,4,6,8,0 };
    int i = 0;
    int tmp = 0;
    int sz = sizeof(arr1) / sizeof(arr1[0]);
    for (i = 0; i < sz; i++)
    {
        tmp = arr1[i];
        arr1[i] = arr2[i];
        arr2[i] = tmp;
    }
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr1[i]);
    }
    printf("\n");
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr2[i]);
    }
    return 0;
}
3.约瑟夫环数组版
代码:#include<stdio.h>
int main() {
	int i,j=0,k=0,a[100]= {0},n,m;
	printf("请输入人数:");
	scanf("%d",&n);
	printf("请输入序号:");
	scanf("%d",&m);
	printf("杀人顺序为:");
	for(i=0; i<=n-1; i++)
		a[i]=i+1;
	for(i=0; k!=n-1; i++) { 
		if(i>n-1)i=i-n;
		if(a[i]!=0)j++;
		else  continue;
		if(j%m==0) {
			printf("%d ",i+1);
			a[i]=0;    
			k++;
		}
	}
	for(i=0; i<=n-1; i++)
		if(a[i]!=0)
			printf("\n幸存者序号:%d",a[i]);

}
4.求第几大数
代码:#include<stdio.h>
int main()
{
    int a[10]={25,45,98,66,54,89,47,22,99,87};
    int n,count,i,j;
    printf("您要查询第几大数:");
    scanf("%d",&n);
    for(i=0;i<10;i++)
    {
        count=0;
        for(j=0;j<10;j++)
        {
            if(a[j]>a[i])
                count ++;
        }
        if(count==n-1)
            printf("第%d大数为%d\n",n,a[i]);
    }
        return 0;
}


5.投票程序
代码:#include "stdio.h" 
#include "string.h"
#define N 3             
#define M 6             
struct stduent{			
        char name[20];  
        int num;        
} stu[N - 1];

int main(void)
{
        int i, j;
        char temp[10];

        for (i = 0; i < N; i++)
        {
                printf("请输入第%d个候选人姓名:", i + 1);
                scanf("%s", stu[i].name);
        }
        
        for (i = 0; i < M; i++)
        {
                printf("请第%d个学生输入投票结果:", i+1);
                scanf("%s", temp);

                for (j = 0; j < N; j++)
                        if (strcmp(stu[j].name, temp) == 0)
                        {
                                stu[j].num++;
                                break;
                        }
        }

        struct stduent t;
        for (i = 1; i < N; i++)
                for (j = N - 1; j >= i; j--)
                {
                        if (stu[j - 1].num < stu[j].num)
                        {
                                t = stu[j - 1];
                                stu[j - 1] = stu[j];
                                stu[j] = t;
                        }
                }

        printf("\n投票排名:\n");
        for (i = 0; i < N; i++)
                printf("%s的票数是%d\n", stu[i].name, stu[i].num);

        return 0;
}

6.病人排队
代码:#include<stdio.h>
struct patient
{
    int age;
    char id[10];
}s[100],t;
int main()
{
    int n;
    printf("请输入病人个数:");
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%s %d",s[i].id,&s[i].age);
    }
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            if(s[j].age<s[j+1].age&&s[j+1].age>=60)
            {
                t=s[j];
                s[j]=s[j+1];
                s[j+1]=t;
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        printf("%s %d\n",s[i].id,s[i].age);
    }
    return 0;
}
7.不高兴的津津
代码:#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,e,a,b,class[7][2];
    printf("请输入小时:\n");
    for(i=0,j=0,e=1;i<7;i++) 
     scanf("%d%d",&class[i][j],&class[i][e]);
    for(i=0;i<7;i++)
    {
        if(class[i][1]+class[i][0]>8)
        if(class[i][1]+class[i][0]>j)
        {
            j=class[i][1]+class[i][0];
            e=i;
        }
        
    }
    printf("津津周%d最不开心",e+1);
    return 0; 
}

8.成绩排序
代码:#include<stdio.h>
#include<string.h>
struct grd
{
    int sc;
    char name[21];
    
};
int main()
{
    int n,a,b,c,d=0,e;
    printf("请输入一共有多少人:");
    scanf("%d",&n);
    struct grd stu[n],stu1[n],*p=stu;
    for(a=0;a<n;a++,p++)
    {
 printf("请输入第%d个学习的姓名和成绩:",a+1);
      scanf("%s%d",p->name,&(*p).sc);
    }
    for(a=0;a<n;a++)
    {
      for(b=a;b<n;b++)
      {
          if(stu[a].sc<stu[b].sc)    
           {
             stu1[a]=stu[b];
            stu[b]=stu[a];
            stu[a]=stu1[a];
            }
           stu1[a]=stu[a];   
      }
    }
    stu1[n-1]=stu[n-1];
    p=stu1;
    for(a=0;a<n;a++,p++)
    {
  printf("%s  %d\n",(*p).name,(*p).sc);
    
    }
    return 0;
}

9.分解质因数
代码:#include <stdio.h>
int main(){
    int n;  
    int i;  
    printf("输入一个整数:");
    scanf("%d",&n);
    printf("%d=",n);
  
    for(i=2; i<=n; i++){
        while(n!=i){
            if(n%i==0){
                printf("%d*",i);
                n=n/i;
            }else
                break;
        }
    }
    printf("%d\n",n);
    return 0;
}

10.甲流病人初筛
代码:
#include<stdio.h>
int main()
{
    int x,y = 0;
    char name[200][9];
    float tw[200];
    int ks[200];
    printf("请输入就诊病人数:");
    scanf("%d",&n);
    printf("请输入病人信息:\n");
    for(int i = 0;i<n;i++)
    {
        scanf("%s %f %d",name[i],&tw[i],&ks[200]);
    }
    for(int i = 0;i<x;i++)
    {
        if(tw[i]>=37.5 && ks[200]==1)
        {
            printf("%s\n",name[i]);
            y++;
        }
    }
    printf("%d\x",y);
    return 0;
}
11.日期合法性
代码:#include <stdio.h>

int main(){
int y,m,d;
Printf(“输入年月日”);
scanf("%d  %d  %d",&y,&m,&d);

if(m<1||m>12){
    printf("NO");

    }else if(m==2){
        if((y%100!=0&&y%4==0)||y%400==0){
            if(d<=29)printf("YES");

            else printf("NO");

            }else{
                if(d<=28)printf("YES");

                else printf("NO");

            }

            }else if(d<30&&(m==4||m==6||m==9||m==11)){
                printf("YES");

            }else if(d<=31&&(m==1||m==3||m==5||m==7||m==8||m==10||m==12)){
                printf("YES");

            }else{
                printf("NO");

            }

    return 0;

}



12.陶陶摘苹果
代码:
#include <stdio.h>
#include <math.h>
#define  H 30                             
int main() {
    int n=0;                              
    int num[10],maxHeight;                
    for(int i=0;i<10;i++){
        scanf("%d",&num[i]);
    }
    scanf("%d",&maxHeight);                
    for(int i=0;i<10;i++){
        if(maxHeight+H>=num[i]){           1
            n++;
        };
 
    }
    printf("%d\n",n);
    return 0;

}
输入100 200 150 140 129 134 167 198 200 111

.110



13.信息查询
代码:

typedef struct student{
	char num[5];
	char name[5];
	char sex[2];
	int score;
}Stu;

void input(Stu s[]){
	printf("下面初始化5位同学的信息\n");
	printf("----------------------------------\n");
	for(int i=0; i<5; i++){
		printf("请输入第%d位同学的学号:", i+1);
		scanf("%s", &s[i].num);
		printf("请输入第%d位同学的姓名:", i+1);
		scanf("%s", &s[i].name);
		printf("请输入第%d位同学的性别:", i+1);
		scanf("%s", &s[i].sex);
		printf("请输入第%d位同学的成绩:", i+1);
		scanf("%d", &s[i].score);
		printf("----------------------------------\n");
	}
}

void output(Stu s[]){
	for(int i=0; i<5; i++){
		printf("第%d个同学的学号%d-姓名%s-性别%s-成绩%d;\n", i+1, s[i].num, s[i].name, s[i].sex, s[i].score);
	}
}

int main()
{
	Stu s[5];
	input(s);
	output(s);
	return 0;
}

14.约瑟夫环问题循环链表版
代码:#include <stdio.h>
#include <stdlib.h>
typedef struct link {
	int id;
	struct link* next;
} LINK;
 
LINK* Creat(int n);
void YueSeFu(LINK* head, int n, int m, int* a);
void DisplyLINK (LINK *head);
 
int main(void) {
	int n, m;
	printf("总人数 出报数\n");
	scanf("%d%d", &n, &m);
	int a[n];
	LINK* tail = NULL;
	tail = Creat(n);
	YueSeFu(tail, n, m, a);
	for (int i = 0; i < n; i++) {
		printf("%d ", a[i]);
	}
}
 
LINK* Creat(int n) {
	LINK *head = NULL,*p = NULL, *pr = NULL;
	int i;
	for(i = 1;i <= n;i++)
	{
		p = (LINK*)malloc(sizeof(LINK));
		if(p == NULL)
		{
			printf("动态内存分配失败");
			return NULL;
		}
		p->id = i;
		if(head == NULL)
		{
			head = p;
		}
		else
		{
			pr->next = p;
		}
		pr = p;
	}
	p->next = head;
	return pr;
}
 
void YueSeFu(LINK* tail, int n, int m, int* a) {
	int count = 0, sum = 0;
	LINK* p = tail->next, *q = tail;
	while (sum < n - 1) {
		count++;
		if (count == m) {
			q->next = p->next;
			*a = p->id;
			free(p);
			p = q->next;
			count = 0;
			sum++;
			a++;
		} else {
			q=p;
			p=p->next;
		}
	}
	*a = p->id;
	free(p);

}

15.最大公约数
代码:#include<stdio.h>
int main()
{
    int a,b,c,i,t;
    printf("请输入有几行:\n");
    scanf("%d",&t);
    for(int j=1;j<=t;j++)
    {
        printf("请输入第%d行:\n",j);
        scanf("%d %d",&a,&b);
        if(y>a)
        {
            c=a;
            a=b;
            b=c;
        }
        i=a%b;
        while(i!=0)
        {
            a=b;
            b=i;
            i=a%b;
        }
        printf("最大公约数为:%d\n",b);
    }
    return 0;
}
        printf("%d\n",gys);
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值