C语言程序课程设计

C语言程序课程设计,第1张

#include <stdioh>

#define MAX 200

int main()

{

int a[MAX][MAX],n;

void initmatrix(int a[][MAX]);//初始化矩阵,将所有元素赋0

void creatematrix_2k1(int a[][MAX],int n);//生成2n+1阶幻方

void creatematrix_4k(int a[][MAX],int n);//生成4n阶幻方

void creatematrix_4k2(int a[][MAX],int n);//生成4n+2阶幻方

void outputmatrix(int a[][MAX],int n);//输出n阶幻方

initmatrix(a);

printf("please input a interger number:");

scanf("%d",&n);

if(n%2) creatematrix_2k1(a,(n-1)/2);

else {if(n%4==0) creatematrix_4k(a,n/4);

else creatematrix_4k2(a,(n-2)/4);}

outputmatrix(a,n);

return 0;

}

void initmatrix(int a[][MAX])

{

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

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

a[i][j]=0;

}

void outputmatrix(int a[][MAX],int n)

{

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

{

printf("第%-3d行的数依次为:",i+1);

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

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

printf("\n");

}

}

void creatematrix_2k1(int a[][MAX],int n)

{

int col=-1,row=-1;

int p,q;

p=&col,q=&row;

void fillmatrix(int a[][MAX],int p,int q,int n,int i);//将i填入2n+1阶幻方中

for(int i=1;i<=((2n+1)(2n+1));i++)

fillmatrix(a,p,q,n,i);

}

void fillmatrix(int a[][MAX],int p,int q,int n,int i)

{

if(i==1)

{

a[0][n]=i;

p=0,q=n;

}

else

{

if((p==0&&q==2n)||a[(p+2n)%(2n+1)][(q+1)%(2n+1)])

{

a[(p+1)%(2n+1)][q]=i;

p=(p+1)%(2n+1);}

else{a[(p+2n)%(2n+1)][(q+1)%(2n+1)]=i;

p=(p+2n)%(2n+1),q=(q+1)%(2n+1);}

}

}

void creatematrix_4k(int a[][MAX],int n)

{

int temp;

for(int i=0;i<4n;i++)

{ for(int j=0;j<4n;j++)

a[i][j]=4ni+j+1;}

for(i=0;i<4n;i++)

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

if((i>j)&&((i-j)%4==0||(i+j+1)%4==0))

{temp=a[i][j];

a[i][j]=a[4n-1-i][4n-1-j];

a[4n-1-i][4n-1-j]=temp;}

for(i=0;i<2n;i++)

{temp=a[i][i];

a[i][i]=a[4n-1-i][4n-1-i];

a[4n-1-i][4n-1-i]=temp;}

}

void creatematrix_4k2(int a[][MAX],int n)//构造4n+2阶幻方

{

int col=-1,row=-1,i;

int exn=(2n+1)(2n+1);

int p,q;

p=&col,q=&row;

void fillmatrix_2(int a[][MAX],int p,int q,int cs, int rs,int n,int i);/将i填入以a[cs][rs]为起始的2n+1阶幻方中,用p,q返回的i-1行列值/

for(i=1;i<=exn;i++)

fillmatrix_2(a,p,q,0,0,n,i);

for(i=exn+1;i<=exn2;i++)

fillmatrix_2(a,p,q,2n+1,2n+1,n,i);

for(i=2exn+1;i<=3exn;i++)

fillmatrix_2(a,p,q,0,2n+1,n,i);

for(i=3exn+1;i<=4exn;i++)

fillmatrix_2(a,p,q,2n+1,0,n,i);

void lastswap(int a[][MAX],int n);//对4n+2阶幻方做最后的变换

lastswap(a,n);

}

void fillmatrix_2(int a[][MAX],int p,int q,int cs, int rs,int n,int i)

{

int exn=(2n+1)(2n+1);

if(i%exn==1)

{

a[cs+0][rs+n]=i;

p=0,q=n;

}

else {if((p==0&&q==2n)||a[(p+2n)%(2n+1)+cs][(q+1)%(2n+1)+rs])

{

a[(p+1)%(2n+1)+cs][q+rs]=i;

p=(p+1)%(2n+1);

}

else{

a[(p+2n)%(2n+1)+cs][(q+1)%(2n+1)+rs]=i;

p=(p+2n)%(2n+1),q=(q+1)%(2n+1);

}

}

}

void lastswap(int a[][MAX],int n)

{

int temp,i,j;

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

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

{temp=a[i][j];

a[i][j]=a[2n+1+i][j];

a[2n+1+i][j]=temp;}

for(i=1;i<=n;i++)

{temp=a[n][i];

a[n][i]=a[3n+1][i];

a[3n+1][i]=temp;}

for(i=n+1;i<2n+1;i++)

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

{temp=a[i][j];

a[i][j]=a[2n+1+i][j];

a[2n+1+i][j]=temp;}

for(i=0;i<2n+1;i++)

for(j=4n+1;j>3n+2;j--)

{temp=a[i][j];

a[i][j]=a[2n+1+i][j];

a[2n+1+i][j]=temp;}

}

求幻方的程序

#include <stdioh>

#include <stdlibh>

#define IO "%d"//和下面一行共同扩展数据成员的格式

typedef int ElemType;//同上

typedef struct LinkNode

{

ElemType data;

struct LinkNode next;

}LinkNode,Link;

Link creat();//建立带头结点链表,并返回头指针

void print(Link);//输出链表所有结点

bool insert(Link,int ,ElemType);//向head为头指针的链表中插入元素e使之成为链表第i个元素成功返回TRUE否则FALSE

bool del(Link,int );//在head为头指针的链表中删除第i个结点,成功返回TRUE否则返回FALSE

void operate(Link);//在本程序中进行链表的插入,删除,输出 *** 作

Link creat()

{

Link head=(Link)malloc(sizeof(LinkNode));

Link pre=head,p;

int count=1;

char ch;

printf("是否终止建立链表(Y/N):");

scanf("%c",&ch);

while(ch=='n'||ch=='N')

{

p=(Link)malloc(sizeof(LinkNode));

printf("请输入第%d个结点内的数据:",count);

scanf(IO,&(p->data));

fflush(stdin);

pre->next=p;

pre=p;

printf("是否终止建立链表(Y/N):");

scanf("%c",&ch);

count++;

}

pre->next=NULL;

return head;

}

void print(Link head)

{

printf("链表目前情况为:\n");

Link p=head->next;

int count=1;

while(p)

{

printf("第%d个结点中数据为"IO" ",count,p->data);

p=p->next;

if((count++)%3==0)printf("\n");

}

if(count%3!=1)printf("\n");

}

bool insert(Link head,int i,ElemType e)

{

Link pre,p;

int k;

for(k=0,pre=head;k<i-1&&pre;k++,pre=pre->next);//寻找第i-1个元素的指针

if(k!=i-1||(!pre))return false;

p=(Link)malloc(sizeof(LinkNode));

p->data=e;

p->next=pre->next;

pre->next=p;

return true;

}

bool del(Link head,int i)

{ Link pre,p;

int k;

for(k=0,pre=head,p=head->next;k<i-1&&p;k++,pre=p,p=p->next);//寻找第i-1个元素的指针

if(k!=i-1||(!p))return false;

pre->next=p->next;

free(p);

return true;

}

void operate(Link head)

{

int n,i;

ElemType e;

do

{

printf("\n");

printf("请输入想进行何种 *** 作\n1============插入结点\n2============删除结点\n3============输出链表\n");

scanf("%d",&n);

switch(n)

{

case 1:printf("现在进行结点插入\n");

printf("请输入欲插入到何位置:");scanf("%d",&i);

printf("请输入欲插入的数据:");scanf(IO,&e);

if(insert(head,i,e))printf("插入成功!\n");else printf("插入失败!\n");

break;

case 2:printf("现在进行结点删除\n");

printf("请输入欲删除结点位置:");scanf("%d",&i);

if(del(head,i))printf("删除成功!\n");else printf("删除失败!\n");

break;

case 3:print(head);break;

default:break;

}

}while(n<4&&n>0);

}

int main()

{

Link head=creat();

operate(head);

return 0;

}

链表的 *** 作

#include <stdioh>

#include <mathh>//求积分

int main()

{

double f1(double);

double f2(double);

double f3(double);

double f4(double);

double f5(double);

double (p)(double);

double integral(double a,double b,double(p)(double));

double a,b;//记录积分区间

printf("请输入积分区间:");

scanf("%lf %lf",&a,&b);

if(a>b){double temp=a;a=b;b=temp;}//确保a<b

printf("sin(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,sin));

printf("cos(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,cos));

printf("exp(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,exp));

printf("x+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f1));

printf("2x+3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f2));

printf("exp(x)+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f3));

printf("(1+x)^2在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f4));

printf("x^3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f5));

return 0;

}

double integral(double a,double b,double(p)(double))

{

double sum=0,l=b-a,pl;//sum保存积分和,l保存积分区间的长度,pl保存积分区间细分后每个小区间的长度

int n=2,i;//n保存划分的小区间数i用作累加指针

pl=l/n;

while(pl>1e-6)

{

sum=0;

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

sum+=(p)(a+ipl)pl;

n=2;

pl/=2;

}

return sum;

}

double f1(double x)

{

return x+1;

}

double f2(double x)

{

return 2x+3;

}

double f3(double x)

{

return exp(x)+1;

}

double f4(double x)

{

return (1+x)(1+x);

}

double f5(double x)

{

return xxx;

}

求积分

都是以前写的 便宜楼主了!!

1课程主要内容:C语言程序基本结构及相关概念、变量、函数、语句、if条件语句、switch条件语句、for循环语句、while循环语句、数组、指针、字符串、结构体。

2 C语言程序设计课程是入门级的程序设计课程,针对没有或很少具有编程经验的在职人员。

3课程通过学习C语言编程的基础语法,对程序设计有一个基本的认识,为后续计算机专业课程以及面向对象程序设计课程的学习打下基础。

《06 00上海交通大学 计算机自考考研课程 C语言程序设计基础 全27讲 视频教程》百度网盘资源免费下载

ks7d

06 00上海交通大学 计算机自考考研课程 C语言程序设计基础 全27讲 视频教程|各学科 学习视频目录|03avi|02avi|01avi|政治目录txt|哲学目录txt|语言目录txt|艺术目录txt|医学目录txt|心理目录txt|物理目录txt|文学目录txt|体育目录txt|数学目录txt  

以上就是关于C语言程序课程设计全部的内容,包括:C语言程序课程设计、c语言主要学啥,c语言相关知识、c语言程序设计视频教程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存