#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;
}
口袋金钱问题
最新推荐文章于 2025-05-18 19:14:41 发布