当前位置:首页 » 编程软件 » c趣味编程

c趣味编程

发布时间: 2022-06-04 07:52:17

⑴ 教你如何使用c语言编写简单小游戏

编写程序,实现如下表所示的5-魔方阵。
17

24

1

8

15

23

5

7

14

16

4

6

13

20

22

10

12

19

21

3

11

18

25

2

9

5-魔方阵
问题分析
所谓“n-魔方阵”,指的是使用1〜n2共n2个自然数排列成一个n×n的方阵,其中n为奇数;该方阵的每行、每列及对角线元素之和都相等,并为一个只与n有关的常数,该常数为n×(n2+1)/2。
例如5-魔方阵,其第一行、第一列及主对角线上各元素之和如下:
第一行元素之和:17+24+1+8+15=65
第一列元素之和:17+23+4+10+11=65
主对角线上元素之和:17+5+13+21+9=65

n×(n2+1)/2=5×(52+1)/2=65
可以验证,5-魔方阵中其余各行、各列及副对角线上的元素之和也都为65。
假定阵列的行列下标都从0开始,则魔方阵的生成方法为:在第0行中间置1,对从2开始的其余n2-1个数依次按下列规则存放:
(1)
假定当前数的下标为(i,j),则下一个数的放置位置为当前位置的右上方,即下标为(i-1,j+1)的位置。
(2)
如果当前数在第0行,即i-1小于0,则将下一个数放在最后一行的下一列上,即下标为(n-1,j+1)的位置。
(3)
如果当前数在最后一列上,即j+1大于n-1,则将下一个数放在上一行的第一列上,即下标为(i-1,0)的位置。
(4)
如果当前数是n的倍数,则将下一个数直接放在当前位置的正下方,即下标为(i+1,j)的位置。
算法设计
在设计算法时釆用了下面一些方法:
定义array()函数,array()函数的根据输入的n值,生成并显示一个魔方阵,当发现n不是奇数时,就加1使之成为奇数。
使用动态内存分配与释放函数malloc()与free(),在程序执行过程中动态分配与释放内存,这样做的好处是使代码具有通用性,同时提高内存的使用率。
在分配内存时还要注意,由于一个整型数要占用两个内存,因此,如果魔方阵中要存放的数有max个,则分配内存时要分配2*max个单元,从而有malloc(max+max)。在malloc()函数中使用max+max而不是2*max是考虑了程序运行的性能。
显然应该使用二维数组来表示魔方阵,但虽然数组是二维形式的,而由于内存是一维线性的,因此在存取数组元素时,要将双下标转换为单个索引编号。在程序中直接定义了指针变量来指向数组空间,即使用malloc()函数分配的内存。

⑵ C语言趣味编程高分求救,进来帮帮我啊

http://..com/question/94074300.html

⑶ c/c++/c#趣味编程题

不太明白 占楼学习之~

我的想法:5层循环 最内层用离散把这几个条件都化简了...或者不化简应该也可以 符合条件的输出...

⑷ 趣味编程学什么

小学生学习培训编程自身具备局限,专业知识方面的限定,让孩子思索范畴比较有限。但这并不是危害孩子学习培训编程,由于中小学趣味编程关键以塑造孩子编程兴趣爱好为本,不用孩子有着丰富多彩的英文词汇量及计算机技能。学少儿编程可以提高孩子逻辑思维、专注力

中小学趣味编程关键以趣味性主导,以编程手机游戏为例,吸引住孩子集中注意力。比如,去年杭州市某院校就将Scratch趣味编程搬进课堂教学,孩子在课堂教学上开展愤怒小鸟游戏制作。一开始的情况下,孩子觉得既奇特又疑惑,伴随着时间的变化与老师的教育,孩子迅速寻找实际操作的规律性。表层上孩子滞留在姿势和外型上,对编程命令都是模模糊糊,可是根据教师一节课的正确引导及协助,绝大多数孩子都掌握制作游戏的方式,明白编程专用工具的操作步骤。

想让孩子学编程,可以了解一下童程童美。童程童美依托集团公司19年编程教学经验,专注3-18 岁少儿编程教育及效劳,构成为一体的少儿教育平台。强调综合才能的培育和实践解决问题才能的提升,在兴味激起和思想锤炼的才能。2018年,童程童美推出“童程在线”学习平台,打造线上线下一体化的OMO教育模式,为学员提供更丰富的学习场景和更沉浸的学习体验。目前,童程童美在读学员数超过13万名。。目前童程童美有少儿编程体验课,点击可免费报名试听

⑸ c语言趣味编程100例 怎么样

还算不错。。。

⑹ C/C++编程趣味题

#include<iostream.h>
void main()
{
int d[8]={0},b[9]={1,2,3,4,5,6,7,8,9};
long A[9],B[8];
int i,j,k,lenb,lend;
for(d[0]=0; d[0]<3; d[0]++)//1 2间的运算符
for(d[1]=0; d[1]<3; d[1]++)//2 3间的运算符
for(d[2]=0; d[2]<3; d[2]++)//3 4间的运算符
for(d[3]=0; d[3]<3; d[3]++)//4 5间的运算符
for(d[4]=0; d[4]<3; d[4]++)//5 6间的运算符
for(d[5]=0; d[5]<3; d[5]++)//6 7间的运算符
for(d[6]=0; d[6]<3; d[6]++)//7 8间的运算符
for(d[7]=0; d[7]<3; d[7]++)//8 9间的运算符
{
j=0,k=0, A[0]=b[0];
for(i=0;i<8;i++){
if(d[i]!=0){
j++;
A[j]=b[i+1];
}
if(d[i]==0)
A[j]=10*A[j]+b[i+1];//A存放数据
else if(d[i]==1)
B[k++]=1; //B存放运算符
else
B[k++]=2;
}
lenb=j;
lend=k;
char c[8];long sum=A[0];
for(i=0;i<lend;i++){
if(B[i]==1){
sum=sum+A[i+1];
c[i]='+';
}
else if(B[i]==2){
sum=sum-A[i+1];
c[i]='-';
}
}
if(sum==100){
for(j=0;j<lend;j++)
cout<<A[j]<<c[j];
cout<<A[j]<<'='<<sum<<endl;
}

}
}

正如楼主所说,生成运算符的数组是非常麻烦的,希望有人能够解决.
由运算符生成数据的算法我自认为还可以,有什么问题希望能够讨论!

不好意思,未加注释,读起来可能会痛苦

绝对支持此类问题

注:借鉴一楼

我们的算法大都一样,用1代表+,用2代表-,没有运算符就用0来替代
所以就可以把所有可能的运算符数组用 (如果有n种运算可视为n+1进制的数) 3进制的整数替代,工有3^8种组合;
即可以把for 循环中的d[8]改为
d[8]={0}; //初始化全为0
for(int i=0;i<3^8;i++){ //3的8次方用函数可求
int n=8;
do
d[--n]=i%3;
while(i=i/3);
}
虽然在算法的复杂度上没什么提高,但书写起来就要方便很多

⑺ C\C++ 趣味编程题目

include <iostream>
using namespace std;
void main(){
int pirate[30];
int i,j,survived;
for(i=0;i<30;i++)
pirate[i]=0;
i=0;j=0;
for(survived=30;survived>1;){
if(pirate[i]==0){
j++;
if(j%7==0){
pirate[i]=1;
cout<<"No."<<i+1<<" private jump"<<endl;
survived-=1;
}
}
i=(i+1)%30;
}
for(i=0;i<30;i++)
if(pirate[i]==0)
cout<<"No."<<i+1<<" private survive"<<endl;
}
这个程序得到的答案是23号海盗生存,不知是否符合楼主的要求,呵呵

⑻ 趣味C语言小编程

题眼就是求出2~10的最小公倍数,然后减一。
模拟排队的算法是可行的,但不是最优的。

#include <stdio.h>
int od(int x,int n) //x是否能被n整除,是返回1,否返回0
{
if (x%n) return 0;
return 1;
}

int gbs(int a[],int n) //求a[n]内所有元素的最小公倍数
{
int i,j,k,o,m=0;
int b[20],c[100];
for (i=0;i<n;i++)
{
if(m<a[i]) m=a[i];
b[i]=a[i];
}
j=2; o=0;
while (j<=m)
{
k=0;
for (i=0;i<n;i++){
if (od(b[i],j)) k++;
if (k>1) break;
}
if(k>1)
{
c[o++]=j;
for (i=0;i<n;i++)
if (od(b[i],j)) b[i]=b[i]/j;
m=0;
for (i=0;i<n;i++)
if(m<b[i]) m=b[i];
}
else
j++;
}
k=1;
for(i=0;i<o;i++)
{
k*=c[i];
}
for (i=0;i<n;i++)
{
k*=b[i];
}
return k;
}

main()
{
int a[10];
for(int i=1;i<=10;i++)
a[i-1]=i;
printf("count=%d\n",gbs(a,10)-1);
getchar();
return 0;
}

⑼ c语言趣味编程:话说有一只狗熊到玉米地里掰玉米,一边掰,一边吃,第一天吃了一半,又拿走一个回去喂小狗

#include<stdio.h>
void main()
{
int day, x1, x2;
printf("狗熊到玉米地吃了包谷");
printf("第一天吃了一半又拿走一个回去喂小狗熊。\n");
printf("第二天又去吃了剩下的一半,走是任然带一个回去。/n");
printf("以后每天都吃前一天剩下的一半,拿走一个。/n");
printf("到了第十天时,地里只剩下一个包谷。求地里一共有多少包谷。/n");
day=10;
x2=1;
while (day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("包谷总数=%d\n",x1);
}

热点内容
一般电脑配置哪个好 发布:2025-05-20 10:40:58 浏览:602
我的世界撸树服务器 发布:2025-05-20 10:33:37 浏览:740
ftp搭建win7 发布:2025-05-20 10:06:06 浏览:82
访问坚果 发布:2025-05-20 10:06:02 浏览:394
ftpxlight 发布:2025-05-20 10:05:22 浏览:111
java的实验报告 发布:2025-05-20 10:02:06 浏览:528
豪华配置高电动轿车有哪些 发布:2025-05-20 10:01:59 浏览:487
哪些电脑配置低 发布:2025-05-20 09:34:16 浏览:955
地板网站源码 发布:2025-05-20 09:27:23 浏览:346
安卓视频转换器怎么使用 发布:2025-05-20 09:20:52 浏览:544