C语言程序设计基础训练资料.docx

上传人:b****9 文档编号:25533970 上传时间:2023-06-09 格式:DOCX 页数:78 大小:354.80KB
下载 相关 举报
C语言程序设计基础训练资料.docx_第1页
第1页 / 共78页
C语言程序设计基础训练资料.docx_第2页
第2页 / 共78页
C语言程序设计基础训练资料.docx_第3页
第3页 / 共78页
C语言程序设计基础训练资料.docx_第4页
第4页 / 共78页
C语言程序设计基础训练资料.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

C语言程序设计基础训练资料.docx

《C语言程序设计基础训练资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础训练资料.docx(78页珍藏版)》请在冰豆网上搜索。

C语言程序设计基础训练资料.docx

C语言程序设计基础训练资料

广东财经大学信息学院

C语言程序设计课程设计

基础训练

 

专业:

计算机科学与技术(创新实验班)

班级:

学号:

14151106144

姓名:

黄瑜宏

成绩:

 

指导老师:

赖庆

完成日期:

2015年6月25日

1、菜单实现

1、代码

#include

#include

#include

#include

voidfinnum();

voiddiamond();

intmenu_select();

voidmain()

{

for(;;)

{

switch(menu_select())

{

case1:

findnum();break;

case2:

diamond();break;

case3:

printf("goodbye");

exit(0);

}

}

}

intmenu_select()

{

chars;

intcn;

printf("dindnum\n");

printf("diamond\n");

printf("goodbye\n");

printf("input1-3:

");

do{

s=getchar();

cn=(int)s-48;

}while(cn<0||cn>3);

returncn;

}

voidfindnum()

{

inti;

printf("填上什么数字?

可以使得下面的式子成立");

printf("shizi\n");

printf("求解结果为\n");

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

if((30+i)*6237==(10*i+3)*3564)

{

printf("number=%d\n",i);

break;

}

}

voiddiamond()

{

inti,j,k;

printf("打印菱形图案。

\n");

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

{

for(j=1;j<=16-i;j++)

printf("");

for(k=1;k<=(2*i-1);k++);

printf("\n");

}

}

2、编译截图

2、计算机基础解题

1、寻找成绩最佳者

⑴、代码

#include

voidmain()

{

intk=0,sum=0,flag=0;

chartongxue='';

for(k=1;k<=4;k++)

{

tongxue=64+k;

sum=(tongxue!

='A')+(tongxue=='C')+(tongxue=='D')+(tongxue!

='D');

if(sum==3)

{

printf("%c是最佳成绩者\n",tongxue);

flag=1;

}

}

if(flag!

=1)

printf("无解!

");

}

⑵、编译截图

3、使用数组和指针统计成绩

1、使用数组实现

⑴、代码

#include

#include

voidmain()

{

inti,sum=0,min=100;

inta[8]={75,80,83,85,86,30};

char*meanlow[4]={"人数","平均成绩","最低分数的科目成绩","最低分数的科目"};//字符串的长度不一样,所以使用字符指针数组meanlow来实现

charname[6][5]={"数学","物理","外语","政治","体育"};

printf("原始信息如下:

\n");

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

printf("%s:

%d\n",name[i],a[i]);

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

{

printf("%s:

%d\n",meanlow[i],a[i+5]);

}

printf("%s:

\n",meanlow[i]);

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

{

sum=sum+a[i];

if(min>a[i])min=a[i];

}

a[6]=sum/5;

a[7]=min;

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

if(min==a[i])

{

strcpy(name[5],name[i]);

break;

}

printf("\n全班各科的平均成绩如下:

\n");

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

printf("%s:

%d\n",name[i],a[i]);

printf("\n统计结果如下:

\n");

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

{

printf("%s:

%d\n",meanlow[i],a[i+5]);

}

printf("%s:

%s\n",meanlow[3],name[5]);

}

⑵、编译截图

2、使用分配内存实现

⑴、代码

//使用分配的内存实现

#include

#include

#include

voidmain()

{

inti,*p,min=100,sum=0;

inta[8]={75,80,83,85,86,30};

char*meanlow[4]={"人数","平均成绩","最低分数的科目成绩","最低分数的科目"};//字符串的长度不一样,所以使用字符指针数组meanlow来实现

charname[6][5]={"数学","物理","外语","政治","体育"};

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

printf("%s:

%d\n",name[i],a[i]);

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

{

printf("%s:

%d\n",meanlow[i],a[i+5]);

}

//计算,服用P

p=a;

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

{

sum=sum+p[i];

if(min>p[i])min=p[i];

}

a[6]=sum/5;

a[7]=min;

//分配内存地址

p=(int*)malloc(8*sizeof(int));//申请8个存储int数据的空间

if(p==NULL)

{

printf("内存分配错误");

exit

(1);

}

//存储

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

*(p+i)=a[i];

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

if(min==*(p+i))

{

strcpy(name[5],name[i]);

break;

}

printf("\n全班各科平均成绩如下:

\n");

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

printf("%s:

%d\n",name[i],*(p+i));

printf("\n统计结果如下:

\n");

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

printf("%s:

%d\n",meanlow[i],*(p+i+5));

printf("%s:

%s\n",meanlow[3],name[5]);

//释放内存

free(p);

}

3、将数组内容全部存入内存

⑴、代码

//使用分配的内存实现

#include

#include

#include

voidmain()

{

inti,*p,min=100,sum=0;

inta[8]={75,80,83,85,86,30};

char*meanlow[4]={"人数","平均成绩","最低分数的科目成绩","最低分数的科目"};//字符串的长度不一样,所以使用字符指针数组meanlow来实现

charname[6][5]={"数学","物理","外语","政治","体育"};

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

printf("%s:

%d\n",name[i],a[i]);

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

{

printf("%s:

%d\n",meanlow[i],a[i+5]);

}

//计算,服用P

p=a;

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

{

sum=sum+p[i];

if(min>p[i])min=p[i];

}

a[6]=sum/5;

a[7]=min;

//分配内存地址

p=(int*)malloc(8*sizeof(int));//申请8个存储int数据的空间

if(p==NULL)

{

printf("内存分配错误");

exit

(1);

}

//存储

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

*(p+i)=a[i];

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

if(min==*(p+i))

{

strcpy(name[5],name[i]);

break;

}

printf("\n全班各科平均成绩如下:

\n");

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

printf("%s:

%d\n",name[i],*(p+i));

printf("\n统计结果如下:

\n");

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

printf("%s:

%d\n",meanlow[i],*(p+i+5));

printf("%s:

%s\n",meanlow[3],name[5]);

//释放内存

free(p);

}

4、典型的算法和简单的文件编程结构

1、SinX的求值

⑴、代码

#include

#include

voidmain()

{

doublex,sinx,item,min=0.0005;

intn=1,sign=-1;

printf("输入度数:

");

while(scanf("%lf",&x)!

=EOF){

while(x>360)

x=x-360;

x=x*3.14159/180;

sinx=x;

item=x;

while(fabs(item)>min)//计算的级数的绝对值小于指定的一个很小的量时,计算终止。

{

item=item*x*x/(n+1)/(n+2);

sinx=sinx+sign*item;

n=n+2;

sign=(-1)*sign;

}

printf("sinx=%lf\n",sinx);

}

}

⑵、截屏

2、递归算法

全部内容的代码如下:

//狗熊吃包谷问题

/*/#include

voidmain()

{

intday=9,x=1;

while(day>0)

{

x=(x+1)*2;

day--;

}

printf("包谷总数=%d\n",x);

}

/*/

//捕鱼问题

/*/#include

voidmain()

{

intfish[6]={1,1,1,1,1,1};

inti=0;

do{

fish[5]=fish[5]+5;

for(i=4;i>=1;i--)

{

if(fish[i+1]%4!

=0)

break;

elsefish[i]=fish[i+1]*5/4+1;

}

}while(i>=1);

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

printf("第%d个人看到的鱼是%d条.\n",i,fish[i]);

}

/*/

//利用地柜求5!

/*/#include

intfactorial(int);

voidmain()

{

intn;

printf("inputn=");

scanf("%d",&n);

printf("%d!

=%d\n",n,factorial(n));

}

intfactorial(intx)

{

if(x==0)return1;

elsereturn(x*factorial(x-1));

}

/*/

//线性查找

//因为程序不能改变指定数组元素的值,所以使用前缀const声明它

/*/#include

intlinearsearch(constinta[],intkey,intn);//声明查找函数原型

voidmain()

{

intkey,b;

constinta[]={1,3,5,7,9,2,4,6,8,10};//定义常量数组,只能使用不能改变

printf("输入查找关键字:

");

scanf("%d",&key);

b=linearsearch(a,key,10);

if(b!

=-1)

printf("关键字在数组中为a[%d]\n",b);

else

printf("数组中午次数!

\n");

 

}

//线性查找函数

//n为给定数组的有效长度

intlinearsearch(constinta[],intkey,intn)

{

inti;

for(i=0;i

{

if(a[i]==key)

returni;

}

return-1;

}

/*/

//二分查找

/*/#include

intbinarysearch(constinta[],intkey,intn);

voidmain()

{

intkey,b;

constinta[]={11,12,15,17,19,22,24,36,48,50};

printf("输入查找关键字:

");

scanf("%d",&key);

b=binarysearch(a,key,10);

if(b!

=-1)

printf("关键字在数组中为a[%d]",b);

elseprintf("数组中无此数\n");

}

//线性查找函数

//n,给定数组的有效长度

//key:

查找关键字

intbinarysearch(constinta[],intkey,intn)

{

intmiddle=0;

intlow=0;

inthight=n;

while(low<=hight)

{

middle=(low+hight)/2;

if(a[middle]==key)

returnmiddle;

elseif(a[middle]>key)

hight=middle-1;

elselow=middle+1;

}

return-1;

}

/*/

//冒泡排序

/*/#include

voidmain()

{

inti=0,j=0,p=0;

inta[7]={0,1,8,3,9,5,4};

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

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

if(a[j]

p=a[j];

a[j]=a[j+1];

a[j+1]=p;

}

 

for(i=6;i>0;i--)

printf("a[%d]=%d\n",i,a[i]);

}

/*/

//鸡兔同笼算法一

/*/#include

voidmain()

{

intsum=0;

inti,j;

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

{

sum++;

for(j=1;j<35;j++)

{

sum++;

if((i+j==35)&&(2*i+4*j==94))

printf("jiyou%d,tuyou%dzhi\n",i,j);

}

}printf("一共循环%d.\n",sum);

}

/*/

//鸡兔同笼算法该进

#include

voidmain()

{

intsum=0;

inti,j;

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

{

sum++;

for(j=35-i;j<13;j++)

{

sum++;

if((i+j==35)&&(2*i+4*j==94))

printf("jiyou%d,tuyou%dzhi\n",i,j);

}

}printf("一共循环%d.\n",sum);

}

 

依次的截屏

狗熊吃包谷:

捕鱼问题:

利用递归求5!

线性查找:

二分查找:

鸡兔同笼:

5、多文件编程

1、代码

//s5.h

#include

#include

#include

externconstintSIZE;

double*init(int);

voidreadin(double*);

voidproduct(double*,double*,intn);

voidsort(x,a,SIZE);

(2)init.c文件//申请内存空间,返回内存块的首地址

#include"s5.h"

double*init(intn)

{

return(double*)malloc(n*sizeof(double));

}

(3)readin.c文件//输入数据到内存块

#include"s5.h"

voidreadin(double*a)

{

inti;

printf("Pleaseenter%dvalue:

\n",SIZE);

for(i=0;i

{

scanf("%lf",a+i);

}

}

(4)product.c文件//求解数据的积

#include"s5.h"

voidproduct(double*addr,double*result,intn)

{

for(n--,*result=*(addr+n);--n>=0;*result*=*(addr+n))

;

}

(5)sort.c文件//数据排序

#include"s5.h"

voidswap(double*,double*);

voidsort(double*x,doublea[],intn)

{

inti,j,pick;

for(i=0;i

a[i]=*(x+i);

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

{

pick=i;

for(j=i+1;j

{

if(a[j]

pick=j;

}

swap(&a[pick],&a[i]);

}

}

voidswap(double*p1,double*p2)

{

doubletemp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

(6)s5.c文件//主函数

#include"s5.h"

constintSIZE=10;

intmain()

{

double*x,*y,res,a[10]={0.0};

inti;

if((x=init(SIZE))==NULL)

return0;

readin(x);

product(x,&res,SIZE);

printf("Theirproductis:

%10.2f\n",res);

printf("\tx:

\n");

for(i=0;i

{

if(i==5)

printf("\n");

printf("%10.2f",*(x+i));

}

printf("\n\ta:

\n");

sort(x,a,SIZE);

for(i=0;i

{

if(i==5)

printf("\n");

printf("%10.2f",*(a+i));

}

printf("\n\ty:

\n");

if((y=init(SIZE))==NULL)

return0;

for(i=0;i

*y=a[i]*SIZE;

for(--y,i=SIZE;i>0;i--,y--)

{

if(i==5)

printf("\n");

printf("%10.2f",*y);

}

printf("\n");

++y;

free(y);

free(x);

return0;

}

 

6、函数设计

1、代码

//s6.h

#ifndefS

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1