#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&⪯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语言程序设计视频教程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)