定义一个3行3列的二维数组,然后对各元素进行赋值,给元素值为自身下标之和,如a[2][2]=4;

定义一个3行3列的二维数组,然后对各元素进行赋值,给元素值为自身下标之和,如a[2][2]=4;,第1张

先定义int a(3)(3);

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

for(int j=0;j<3;j++)

a(i)(j)=i+j;

我用的是手机没办法帮你写标准写全你就自己把过程完善一下吧!

#include <stdioh>//N皇后问题

#include <

stdlibh

>

#include <stdioh>

#include <

iostreamh

>

#include <

timeh

>

#include <dosh>

#include<malloch>

typedef struct {

int elem;

int length;

int listsize;

}Sqlist;

int InitList(Sqlist & L){//初始化

Lelem=(int )malloc(100sizeof(int));

if(!Lelem)

return 0;

Llength=0;

Llistsize=100;

return 1;

}

int Insert(Sqlist & L,int e){//插入

int m=0,i=0; 

int p=&Lelem[0],j=&Lelem[0];

if(Llength==0)

{ p=e; Llength++;return 1;}

for(i;i<Llength;i++)

if(e>=(p+i))

m=i+1;

for(i=Llength;i>m;i--)

(j+i)=(j+i-1);

Lelem[m]=e;

Llength++;

return 1;

}

void Print(Sqlist &L,int n){//

遍历

打印输出

int k=1,i=0; intp=&Lelem[0];

for(i=0;i<nn;i++,k++){

printf("%d ",(p+i));

if(k==n){k=0;printf("\n");}}

printf("\n\n\n\n\n\n\n");

}

int ReturnK(Sqlist &L,int k){//返回第K个元素的值

intp=&Lelem[0];

return (p+k-1); 

}

void FuK(Sqlist &L,int k,int e){//将第k个元素赋值为e

int p=&Lelem[0];

(p+k-1)=e;

}

int TiaoJian(Sqlist L,int n,int &e){//是否满足皇后问题判断

int b[100];

int m=0,h=2n;

for(int k=0;k<2n;k++) b[k]=0; 

for(int i=1;i<=nn;i++)

if(ReturnK(L,i)==1)

{b[m]=(i-1)/n+1;m++;b[m]=i-(b[m-1]-1)n;m++;}

for(int c=0;c<2n;c++)

if(b[c]==0) {h=c;break;} 

for( c=0;c<h-2;c=c+2)

for(int d=c+2;d<h;d=d+2)

if(b[c]==b[d]||b[c+1]==b[d+1]||b[d+1]-b[c+1]==b[d]-b[c]||b[d+1]-b[c+1]==b[c]-b[d])

return 0;

if(h==2n){

printf("\n\n%d皇后问题第%d个排列!\n\n",n,e);e++;

}

return 1; 

}

void Trial(Sqlist &L,int i,int n,int &e){//皇后问题

int j;

if(i>n){Print(L,n);}

else for(j=1;j<=n;j++){

FuK(L,ni-n+j,1);

if(TiaoJian(L,n,e)==1)

Trial(L,i+1,n,e);

FuK(L,ni-n+j,0);

}

}

void main(){

int k,i=0; 

printf("\n\n请输入要n皇后问题个数:\n");

scanf("%d",&k);

time_t rawtime;

struct tm

 timeinfo;

time ( &rawtime );

timeinfo = localtime ( &rawtime );

Sqlist L1;

InitList(L1); 

for(i=0;i<kk;i++)

Insert(L1,0);

int e=1;

Trial(L1,1,k,e);

printf ( "The current date/time is: %s", asctime (timeinfo) );

time ( &rawtime );

timeinfo = localtime ( &rawtime );

printf ( "The current date/time is: %s", asctime (timeinfo) );

printf("哈哈哈哈\(^o^)/~\n");

system("pause");

}

算术表达式求值演示

一、概述

数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机 *** 作等基本技能和科学作风方面受到比较系统和严格的训练。

在这次的课程设计中我选择的题目是算术表达式求值演示。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。

二、 系统分析

1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式。利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要 *** 作的变化过程。

2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存 *** 作数和运算结果。

3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。 4. 程序执行时的命令:

本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可。(要注意输入时格式,否者可能会引起一些错误) 5  测试数据。

2

算术表达式求值演示

一、概述

数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机 *** 作等基本技能和科学作风方面受到比较系统和严格的训练。

在这次的课程设计中我选择的题目是算术表达式求值演示。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。

二、 系统分析

1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式。利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要 *** 作的变化过程。

2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存 *** 作数和运算结果。

3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。 4. 程序执行时的命令:

本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可。(要注意输入时格式,否者可能会引起一些错误) 5  测试数据。

*** 作集合:

(1)void InitStack1(SqStack1 &S1);//声明栈建立函数 (2)void InitStack2(SqStack2 &S2);//声明栈建立函数

(3)void evaluate(SqStack1 &S1,SqStack2 &S2);//确定如何入栈函数 (4)void Push1(SqStack1 &S1,char e);//声明入栈函数 (5)void Push2(SqStack2 &S2,float e);//声明入压栈函数 (6)char GetTop1(SqStack1 &S1);//声明取栈顶元素函数 (7)float GetTop2(SqStack2 &S2);//声明取栈顶元素函数 (8)char Pop1(SqStack1 &S1);//声明出栈函数 (9)float Pop2(SqStack2 &S2);//声明出栈函数 (10)char Compare(char m,char n);//声明比较函数

(11)float Operate(float a,char rheta,float b);//声明运算函数 (12)void DispStack1(SqStack1 &S1);//从栈底到栈顶依次输出各元素 (13)void DispStack2(SqStack2 &S2);//从栈底到栈顶依次输出各元素         }ADT SqStack

结构分析:

栈中的数据节点是通过数组来存储的。因为在C语言中数组是用下标从零开始的,因此我

们在调用他们的数据是要特别注意。指针变量的值要么为空(NULL),不指向任何结点;要么其值为非空,即它的值是一个结点的存储地址。注意,当P为空值时,则它不指向任何结点,此时不能通过P来访问结点,否则会引起程序错误。如果输入的数字不符合题目要求,则会产生错误结果。

算法的时空分析:

时间和空间性能分析:时间上,对于含n个字符的表达式,无论是对其进行合法性检测还是对其进行入栈出栈 *** 作n次,因此其时间复杂度为O(n)。空间上,由于是用数组来存储输入的表达式,用栈来存储运算中的数据和运算符,而栈的本质也用到的数组,数组在定义时必须确定其大小。在不知表达式长度的情况下确定数组的长度确非易事,此时极易造成空间的浪费,因此空间性能不是很好。

#include<stdioh>

int main()

{ int a[10],i,sum=0;

for(i=0; i<10; i++)

{ scanf("%d",&a[i]);

  sum+=a[i];

}

printf("%d\n",sum);

return 0;

}

#include<stdioh>

void main()

{

    int a[3][4];

    int i,j;

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

        for(j=0;j<4;j++)

                {

                    printf("\nPlease input a[%d][%d]",i,j);

                    scanf("%d",&a[i][j]);

                }

        printf("\nOutput:\n");

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

            for(j=0;j<4;j++)

                {

                    printf("%d",a[2-i][3-j]);

                    if(3==j)printf("\n");

                } 

}

以上就是关于定义一个3行3列的二维数组,然后对各元素进行赋值,给元素值为自身下标之和,如a[2][2]=4;全部的内容,包括:定义一个3行3列的二维数组,然后对各元素进行赋值,给元素值为自身下标之和,如a[2][2]=4;、利用《数据结构》课程知识完成C语言程序设计“N皇后问题”(堆栈,一维数组,普通算法都可以,用C语言写、《数据结构 课程设计》表达式求值 实验报告等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9419156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存