C语言程序设计基础训练资料.docx
- 文档编号:25533970
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:78
- 大小:354.80KB
C语言程序设计基础训练资料.docx
《C语言程序设计基础训练资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础训练资料.docx(78页珍藏版)》请在冰豆网上搜索。
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++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 基础训练 资料