C语言程序设计报告

更新时间:2024-03-15 03:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

前言...............................................................2 正文...............................................................2 题目原文........................................................2 程序设计........................................................3 递推法级数求和..................................................3

求银行存款利息..................................................4 三色球颜色搭配..................................................5 猜数游戏..........................................................6 求平方是回文数的N..............................................7 画边长为n的正六边形...........................................7 成绩统计..........................................................8 用数组逆序存放一个整数.......................................10 年龄最大的男学生和女学生的信息.............................10 找出成绩前十名学生的学号.....................................12 文件拷贝.........................................................13 穷举搜索法求特殊三角形.......................................14 递推法求阶乘n!.................................................15 后记...............................................................16 课程设计中遇到的问题..........................................16 课程设计的体会..................................................16

—1—

一.正文

A.题目原文

以下是C语言课程设计课本上的原题:

1.递推法级数求和

用递归法计算当x=0.5时下述级数和的近似值,使其误差小于某一指定epsilon(例如:epsilon=0.000001),即:

x3x5x7???... x?3*1!5*2!7*3!2.求银行存款利息

已知银行整存整取存款不同期限的月息利率分别为: 0.63% 期限一年 0.66% 期限二年 月息利率 = 0.69% 期限三年 0.75% 期限五年 0.84% 期限八年

要求输入存钱的本金和期限,求到期时能从银行得到的利息和本金的合计。

3.三色球颜色搭配

用测试法求三色球问题。若一个口袋中放有12个球,其中有3个红的,3个白的和6个黑的,从中任取8个球,问共有多少种不同的颜色搭配?

4.猜数游戏

猜数游戏。由计算机“想”一个数请人猜,如果人猜对了,这游戏结束;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止,计算机记录人猜的次数,一次反映猜数者“猜”的水平。

5.求平方是回文数的N

求所有不超过200的N,N的平方是具有对称性值的回文数。所谓回文数就是将一个

2数从左到右与从右到左读都是一样的,例如:N=11,11?121,N=111,111?12321。

26.画边长为n的正六边形

输入n值,打印边长为n的空心正六边形,其边由:“*”组成。

7.成绩统计

编写一个函数,这个函数同时求出n个学生成绩的最高分、最低分、平均分以及超过平均分的人数,并编写主函数完成: a)输入n个学生的成绩;

—2—

b)调用此函数进行统计; c)输出统计结果。(要求使用动态分配)

8.用数组逆序存放一个整数

编写一个程序,将一个整数存放到一个数组中,存放时要求按逆序存放。例如:395存放成“593”。

9.年龄最大的男学生和女学生的信息

输入20个学生的学号、姓名、性别及年龄,分别输出男生中最大年龄的学生信息及女生中最大年龄的学生信息,并输出男学生人数。

10.找出成绩前十名学生的学号

输入n个学生的学号及成绩,用插入法排序对学生信息进行排序、输出前十名学生的学号。

11.文件拷贝

编写程序实现文件拷贝,将源定文件拷贝到目的文件,两个文件名均有命令行给出。源文件名在前。

12.穷举搜索法求特殊三角形

将A、B、C、D、E、F这六个变量排成如图(a)所示的三角形,这六个变量分别取【1,6】上的整数,且均不相同。求是三角形三条边变量之和相等的全部解。 如图(b)就是一个解。

图(a) A 图(b) 1 B F 6 4 C D E 3 2 5

13.递推法求阶乘n!

求出n!,设n≧2且n≦50。

B.程序设计

1.递推法级数求和

所设计的程序: #include #include main() {

int i=1;

float x,f,sum,epsilon; sum=0;

printf(\允许误差epsilon=?\\n\scanf(\

—3—

f=x;i=1; do {

i++;

f=-f*x*x*(2*i-1)/(i*(2*i+1)); sum+=f; }

while(f

printf(\计算的结果为:%f\\n\\n\}

运行的结果为:

2.求银行存款利息

所设计的程序

#include main() {

int y,i,j; float m,a;

printf(\请输入存款本金和期限:\\n本金为: 期限为:\\n\scanf(\a=m;

if(y=1) {j=y*12;for(i=0;i

printf(\利息与本金的合计为:%f\\n\\n\}

运行的结果

—4—

3.三色球颜色搭配

所设计的程序

#include \main() {

int i,j,k,n; n=0;

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

for(j=0;j<=3;j++) {

for(k=0;k<=6;k++)

if(i+j+k==8) n++,printf(\红球数为%d 白球数为%d 黑球数为%d\\n\ } }

printf(\所有的搭配数为:%d\\n\}

运行的结果

4.猜数游戏

—5—

所设计的程序

#include \#include \#include \#include \#include \#include \int main()

{while(1){ int k, i,j;

srand(time(NULL)); j=rand()0;

printf(\你只有5次机会猜对数字,开始:\\n\ for(k=1;k<6;k++) {

printf(\请输入数值\\n\ scanf(\

if(ij) printf(\输入值过大\\n\ if(i==j) break;

if(k==5&&i!=j) break; }

if(k==5&&i!=j) printf(\你失败了\\n\ printf(\正确该值为:%d\\n你成功了.\\n\ printf(\尝试的次数为:%d\\n\\n\\n\\n\ }}

运行的结果

5.求平方是回文数的N

—6—

所设计的程序

#include void main() {

int n,i;

printf(\值为:\\n\

printf(\的平方是回文数的有:\\n\ for(n=0;n<=200;n++) {

i=n*n;

if((i/10000>=1)&&(i/10000==i)&&((i/1000)==(i0)/10)) printf(\

if((i/1000>=1)&&(i/10000==0)&&(i/1000==i)&&((i/100)==(i0)/10)) printf(\

if((i/100>=1)&&(i/1000==0)&&(i/100==i)) printf(\ if((i/10>=1)&&(i/100==0)&&(i/10==i)) printf(\ if((i<10)) printf(\ } }

运行的结果为

6.画边长为n的正六边形

所设计的程序为 #include \void main() {

int i,j,k,o,n; printf(\ scanf(\

for(i=1;i

—7—

printf(\

for(j=1;j

for(i=1;i<5*n;i++) {

if(i==n-j||i==j+3*n-2) printf(\ else printf(\ }

printf(\ }

for(j=1;j<=n-1;j++) {

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

{if(i==j||i==4*n-j-2) printf(\ printf(\ }

for(i=1;i

运行的结果为

7.成绩统计

所设计的程序为 #include #include float max=0,min=0; int p=0; void main() {

—8—

float result(float*a,int n); int i,n;

float aver,*a;

printf(\学生人数是?\\n\ scanf(\

a=malloc(n*sizeof(float)); printf(\他们的成绩是:\\n\

for(i=0;i

printf(\最高分为:%5.2f\\n最低分为:%5.2f\\n为:%5.2f\\n\

printf(\超过平均分的人数为:%d\\n\ free(a);}

float result(float*a,int n) {

int i;

float aver; aver=0;

max=min=a[0]; for(i=0;i

{if(maxa[i]) min=a[i]; aver+=a[i];} aver/=n;

for(i=0;iaver) p++;} return(aver); }

运行的结果

平均分

8.用数组逆序存放一个整数

—9—

所设计的程序

#include \main() {

int n,m,i,j,k,a[10],p=1,t; printf(\ scanf(\ m=n;i=0;

do{n=n/10;i++;} while(n>0); k=i;

for(i=k;i>0;i--) p*=10; for(j=0;j

p/=10;

a[j]=(m/p); }

for(j=0;j

for(j=0;j

运行的结果

9.年龄最大的男学生和女学生的信息

所设计的程序 struct student {

int num;

char name[20]; int sex; int age; }

main() {

—10—

int i,j=0;

struct student st[20],stm,stf; stm.age=-1; stf.age=-1;

printf(\学号,名字,性别(男生为1,女生为0),年龄。\\n\ for(i=0;i<20;i++) {

scanf(\ if((st[i].sex==1)&&(st[i].age>stm.age)) stm=st[i]; if((st[i].sex==0)&&(st[i].age>stf.age)) stf=st[i]; if(st[i].sex==1) j++; }

printf(\年龄最大的男生的信息:MsMM\ printf(\年龄最大的女生的信息:MsMM\\n\ printf(\男生的人数为:%d\\n\}

运行的结果

10.找出成绩前十名学生的学号

—11—

所设计的程序

#include #include

#define STU struct student STU {

long num; int score; };

void sort(STU *st,int m) {

int i,j,k,t,p; for(i=0;i

for(j=i+1;j

if(st[j].score

p=st[k].score;st[k].score=st[i].score;st[i].score=p; t=st[k].num;st[k].num=st[i].num;st[i].num=t;} }

main() {

int i,n; STU *st;

printf(\ scanf(\

st=malloc(n*sizeof(STU)); if(!st);

printf(\输入学号和分数:\\n\ for(i=0;i

scanf(\ }

sort(st,n);

printf(\前十名为:\\n\ for(i=n-1;i>n-11;i--)

{printf(\ printf(\}

运行的结果

—12—

11.文件拷贝

所设计的程序

#include main() {

FILE*in,*out;

char ch,infile[10],outfile[10]; printf(\ scanf(\

printf(\ scanf(\

if((in=fopen(infile,\ {

printf(\ exit(0); }

if((out=fopen(outfile,\ {

printf(\ exit(0); }

while(!feof(in))fputc(fgetc(in),out); fclose(in); fclose(out); }

—13—

运行的结果

12.穷举搜索法求特殊三角形

所设计的程序

#include main() {

int a,b,c,d,e,f,n=0; for(a=1;a<=6;a++)

{

for(b=1;b<=6;b++)

{

for(c=1;c<=6;c++)

{

for(d=1;d<=6;d++)

{

for(e=1;e<=6;e++)

{

for(f=1;f<=6;f++)

{

if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&& (b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&& (c!=d)&&(c!=e)&&(c!=f)&& (d!=e)&&(d!=f)&& (e!=f)&&

(a+b+c==c+d+e)&&(c+d+e==e+f+a))

printf(\}}}}}}

printf(\共有%d组解\\n\\n\\n\; }

运行的结果

—14—

13.递推法求阶乘n!

所设计的程序

#include \main() {

int n,i,j,a[100]; printf(\ scanf(\

for(i=0;i<99;i++) a[i]=0;a[99]=1; for(j=1;j<=n;j++) {

for(i=0;i<100;i++) a[i]*=j;

for(i=99;i>0;i--) a[i-1]+=a[i]/10,a[i]=a[i]; }

printf(\ for(i=0;i<100;i++) {

printf(\ }

printf(\}

运行的结果

—15—

二.

1. 课程设计中遇到的问题

课程设计中我遇到了很多的问题,刚刚开始的时候问题特别多。看起来简单的句子往往也会出错,比如刚开始的时候用for语句时,总会报错;说用的不对。但检查了好几遍也看不出问题,问了旁边的同学他也不知道怎么回事,最后去问老师,才知道原来我的for语句中用的是“,”号,而事实上应该用“;”号。开始做的题目,问题简单思路清晰,但我总在语句上出错,我只好对着书本一个一个检查我的语句,了解它的用法。慢慢的各种语句运用使就不再出错了。但是到了后来题目渐渐变难,有时都没有思路,这让我只好慢慢想,通过和同学的讨论和对相关例题的解读才慢慢有了思路。再通过不断的修改实验,最终得到了正确结果。

2. 课程设计的体会

通过这次为期一周的课程设计,正确的写出一个程序需要平时不断地努力,不断地实践,从实践中了解经常犯的错误。我们不能知识着手于书本上的理论知识,还应该不断实验,有些东西是书本上没有的,只能通过时间学习到。但同时我们也不能离开书本上的理论,理论可以使我们更加了解它的工作原理。更加准确的把握各种算法和语言。有了理论的基础,我们在实践上也就更容易上手。所以我们应该理论联系实践,学好C语言,提高编程能力。

—16—

二.

1. 课程设计中遇到的问题

课程设计中我遇到了很多的问题,刚刚开始的时候问题特别多。看起来简单的句子往往也会出错,比如刚开始的时候用for语句时,总会报错;说用的不对。但检查了好几遍也看不出问题,问了旁边的同学他也不知道怎么回事,最后去问老师,才知道原来我的for语句中用的是“,”号,而事实上应该用“;”号。开始做的题目,问题简单思路清晰,但我总在语句上出错,我只好对着书本一个一个检查我的语句,了解它的用法。慢慢的各种语句运用使就不再出错了。但是到了后来题目渐渐变难,有时都没有思路,这让我只好慢慢想,通过和同学的讨论和对相关例题的解读才慢慢有了思路。再通过不断的修改实验,最终得到了正确结果。

2. 课程设计的体会

通过这次为期一周的课程设计,正确的写出一个程序需要平时不断地努力,不断地实践,从实践中了解经常犯的错误。我们不能知识着手于书本上的理论知识,还应该不断实验,有些东西是书本上没有的,只能通过时间学习到。但同时我们也不能离开书本上的理论,理论可以使我们更加了解它的工作原理。更加准确的把握各种算法和语言。有了理论的基础,我们在实践上也就更容易上手。所以我们应该理论联系实践,学好C语言,提高编程能力。

—16—

本文来源:https://www.bwwdw.com/article/ew48.html

Top