c语言课程设计案例精编(急求《c语言课程设计案例精编》电子书,急求!!!!最好是pdf!)

本文目录
急求《c语言课程设计案例精编》电子书,急求!!!!最好是pdf!
以我自身经历来看,感觉看视频比看书效率高,毕竟理科知识不像是文科的,看书效率太低了。可能一个很简单的知识点,自己看书得半个小时,但是懂的人就讲几句话,就能明白了。所以相比之下,还是视频效率比看书高。选择个适合自己的就能学懂C了。我当初看的是夏老师的,感觉挺适合我这样初学者的。他讲的不繁琐啰嗦,都是重点,而且思维原理讲的最好。能让我理解,我感觉这点很重要。比之前看的什么郝斌曾怡金文的那些繁琐啰嗦听不出重点的好多了。
学C语言学了将近断断续续有一年了,也就把老谭的绿皮书来来回回看了好几遍,里面的东西基本都看了
这个问题很正常啊,因为想要编写游戏的话,应该有VC/VC++和数据库基础才可以。并且老谭的书只是简单的入门书籍,那些东西都是最基础的,要想有进一步的提升还需要看看关于VC或者VC++的书籍,比如《windows程序设计》。另外,都上机实验比看书更重要,多编一些程序,才会有更大的提高。
C语言程序课程设计
#include 《stdio.h》
#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《=((2*n+1)*(2*n+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[n]=i;
*p=0,*q=n;
}
else
{
if((*p==0&&*q==2*n)||a[(*p+2*n)%(2*n+1)][(*q+1)%(2*n+1)])
{
a[(*p+1)%(2*n+1)][*q]=i;
*p=(*p+1)%(2*n+1);}
else{a[(*p+2*n)%(2*n+1)][(*q+1)%(2*n+1)]=i;
*p=(*p+2*n)%(2*n+1),*q=(*q+1)%(2*n+1);}
}
}
void creatematrix_4k(int a[MAX],int n)
{
int temp;
for(int i=0;i《4*n;i++)
{ for(int j=0;j《4*n;j++)
a[i][j]=4*n*i+j+1;}
for(i=0;i《4*n;i++)
for(int j=0;j《4*n;j++)
if((i》j)&&((i-j)%4==0||(i+j+1)%4==0))
{temp=a[i][j];
a[i][j]=a[4*n-1-i][4*n-1-j];
a[4*n-1-i][4*n-1-j]=temp;}
for(i=0;i《2*n;i++)
{temp=a[i][i];
a[i][i]=a[4*n-1-i][4*n-1-i];
a[4*n-1-i][4*n-1-i]=temp;}
}
void creatematrix_4k2(int a[MAX],int n)//构造4n+2阶幻方
{
int col=-1,row=-1,i;
int exn=(2*n+1)*(2*n+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《=exn*2;i++)
fillmatrix_2(a,p,q,2*n+1,2*n+1,n,i);
for(i=2*exn+1;i《=3*exn;i++)
fillmatrix_2(a,p,q,0,2*n+1,n,i);
for(i=3*exn+1;i《=4*exn;i++)
fillmatrix_2(a,p,q,2*n+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=(2*n+1)*(2*n+1);
if(i%exn==1)
{
a[cs+0][rs+n]=i;
*p=0,*q=n;
}
else {if((*p==0&&*q==2*n)||a[(*p+2*n)%(2*n+1)+cs][(*q+1)%(2*n+1)+rs])
{
a[(*p+1)%(2*n+1)+cs][*q+rs]=i;
*p=(*p+1)%(2*n+1);
}
else{
a[(*p+2*n)%(2*n+1)+cs][(*q+1)%(2*n+1)+rs]=i;
*p=(*p+2*n)%(2*n+1),*q=(*q+1)%(2*n+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[2*n+1+i][j];
a[2*n+1+i][j]=temp;}
for(i=1;i《=n;i++)
{temp=a[n][i];
a[n][i]=a[3*n+1][i];
a[3*n+1][i]=temp;}
for(i=n+1;i《2*n+1;i++)
for(j=0;j《n;j++)
{temp=a[i][j];
a[i][j]=a[2*n+1+i][j];
a[2*n+1+i][j]=temp;}
for(i=0;i《2*n+1;i++)
for(j=4*n+1;j》3*n+2;j--)
{temp=a[i][j];
a[i][j]=a[2*n+1+i][j];
a[2*n+1+i][j]=temp;}
}
求幻方的程序
#include 《stdio.h》
#include 《stdlib.h》
#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&&pk++,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 《stdio.h》
#include 《math.h》//求积分
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+i*pl)*pl;
n*=2;
pl/=2;
}
return sum;
}
double f1(double x)
{
return x+1;
}
double f2(double x)
{
return 2*x+3;
}
double f3(double x)
{
return exp(x)+1;
}
double f4(double x)
{
return (1+x)*(1+x);
}
double f5(double x)
{
return x*x*x;
}
求积分
都是以前写的 便宜楼主了!!

更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30






