C语言学习知识程序设计报告.doc
!-信息工程系课程设计报告书所属课程名称: C语言程序设计专业班级: 150311学生姓名:曾传凤学 号:15031102 长春工业大学人文信息学院2016年 9月 9日课程设计成绩评定表项 目得 分平时表现及设计完成情况(占40%)设 计 报 告(占30%)答 辩 情 况(占30%)成绩评定及等级:优:90100分;良:80-89分;中:70-79分;及格:60-69分;不及格:60分以下。分数等级指导教师姓名及职称:年 月 日第一部分 完成题目1、 简单的数学计算。编写程序,计算任意输入的3个数的和的平均值。(1) 截屏: (2)源代码:/1.简单的数学计算。编写程序,计算任意输入的3个数的和的平均值。#include "stdio.h"void main() int a=0,b=0,c=0,s=0; float v; printf("三个数"); scanf("%d%d%d",&a,&b,&c); printf("三个数的和为,三个数的和的平均值为"); s=a+b+c; v=s/3; printf("三个数的和为%d,三个数的和的平均值为%f",s,v);2. 题目:编写程序。a为100,b为50,若a>b成立将a赋予给c,否则将b赋予给c。同时,若a<b成立将a赋予d,否则将b的三次方赋予d。编程输出a,b,c,d的值。 (1)截屏:(2) 源代码:#include "stdio.h"void main() int a=100; int b=50; int c,d; if(a>b) c=a; d=b*b*b; else c=b; d=a; printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);3.题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。(1)截屏:(2)源代码:#include "stdio.h"void main() int a; printf("请输入学生成绩:n "); scanf("%d",&a); if(a>=90) printf("An"); else if(a>60&&a<89) printf("Bn"); else printf("Cn"); 4题目:构造一个一元二次方程,方程有两个不相等的实数解,将两个实数解输出出来。(1) 截屏:(2) 源代码/ 4.构造一个一元二次方程,方程有两个不相等的实数解,将两个实数解输出出来。 #include"stdio.h"void main()int a,b,c;float x1,x2;float m;printf("请输入三个数作为方程的系数:n");scanf("%d%d%d",&a,&b,&c);m=b*b-4*a*c;if(a!=0)printf("方程成立");if(m>0)x1=(-b+sqrt(m)/(2*a);x2=(-b-sqrt(m)/(2*a);printf("方程有两个解,x1=%f,x2=%fn",x1,x2);else if(m=0)x1=x2=(-b+sqrt(m)/(2*a); printf("方程有唯一解x=%fn",x1);elseprintf("方程无解n");elseprintf("方程不成立n");5题目:输入任意一个四位数字,分别将个位,十位,百位,千位上的数字输出出来,并求所有位数的和。(1) 截屏:(2)源代码#include "stdio.h"void main() int a,b; int x1,x2,x3,x4; printf("请输入四个数:n"); scanf("%d",&a); x1=a%10; x4=a/1000; a=a/10; x2=a%10; a=a/10; x3=a%10; b=x1+x2+x3+x4; printf("该四位数个位%d,十位%d,百位%d,千位%dn",x1,x2,x3,x4); printf("该四位数和:%dn",b);6题目:从键盘输入一个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母,则转换为小写字母输出;如果为其他字符,原样输出(1) 截屏(2) 源代码#include"stdio.h"void main()int x,a,b;printf("请输入工资:");scanf("%d",&x);if(x<=1200)a=1;else if(x>1200&&x<=2000)a=2;else if(x>2000&&x<=3500)a=3;elsea=4;switch(a) case 1:printf("不收税n"); break; case 2:b=(x-1200)*0.05;printf("收税%dn",b); break; case 3:b=(x-2000)*0.08;printf("收税%dn",b); break; case 4:b=(x-3500)*0.2;printf("收税%dn",b); break;7题目:假定征税的办法如下:收入在1200元以下(含1200元)的不征税;收入在1200元以上2000元以下者,超过1200元的部分按5%的税率收税;收入在2000元以上3500元以下者,超出2000元部分按8%的税率收税;收入在3500元以上者,3500以上部分按20%的税率收税,试编写按收入计算税费的程序(要求使用switch语句编写程序)。(1) 截屏:(2) 源代码:#include"stdio.h"void main()int x,a,b;printf("请输入工资:");scanf("%d",&x);if(x<=1200)a=1;else if(x>1200&&x<=2000)a=2;else if(x>2000&&x<=3500)a=3;elsea=4;switch(a) case 1:printf("不收税n"); break; case 2:b=(x-1200)*0.05;printf("收税%dn",b); break; case 3:b=(x-2000)*0.08;printf("收税%dn",b); break; case 4:b=(x-3500)*0.2;printf("收税%dn",b); break;8题目:输入三个整数x,y,z,请把这三个数由小到大输出(1) 截屏:(2) 源代码:#include"stdio.h"void main() int a,b,c;int max,min,zhon;printf("请任意输入三个数:n");scanf("%d%d%d",&a,&b,&c);if(a>=b)max=a;min=b;elsemax=b;min=a;if(max>=c)if(min>=c)zhon=min;min=c;elsezhon=c;elsezhon=max;max=c;printf("所输入数按从小到大排列为%d<%d<%dn",min,zhon,max);9题目:输入一个任意数字,将这个数字的绝对值输出出来。(1) 截屏:(2) 源代码:#include"stdio.h"void main()int a;printf("请输入任意一个数字:n");scanf("%d",&a);if(a>=0)printf("绝对值为%dn",a);elsea=-a;printf("绝对值为%dn",a);10题目:输入一个任意数字,将这个数字的绝对值输出出来。(1)截屏:(3) 源代码:#include"stdio.h"void main()int a,b;int x;printf("请输入被除数和除数:n"); scanf("%d%d",&a,&b); if(b!=0)x=a/b; printf("商为:%dn",x);elseprintf("除数不能为0n");11题目:编程实现:任意输入某年某月某日,判断这一天是这一年的第几天。程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。(1) 截屏:(2) 源代码:#include"stdio.h"void main()int n,y,r;int sum;printf("请输入年份:n");scanf("%d",&n);printf("请输入月份:n");scanf("%d",&y);printf("请输入第几天:n");scanf("%d",&r);if(n%4=0)&&(n%100!=0)|(n%400=0)switch(y)case 1:sum=r;break;case 2:sum=31+r;break;case 3:sum=60+r;break;case 4:sum=91+r;break;case 5:sum=r+121;break;case 6:sum=152+r;break;case 7:sum=182+r;break;case 8:sum=213+r;break;case 9:sum=244+r;break;case 10:sum=274+r;break;case 11:sum=305+r;break;case 12:sum=355+r;break;elseswitch(y)case 1:sum=r;break;case 2:sum=31+r;break;case 3:sum=59+r;break;case 4:sum=90+r;break;case 5:sum=r+120;break;case 6:sum=151+r;break;case 7:sum=181+r;break;case 8:sum=212+r;break;case 9:sum=243+r;break;case 10:sum=273+r;break;case 11:sum=304+r;break;case 12:sum=354+r;break;printf("这是%d年的第%d天n",n,sum);12题目:用整数112一次表示1月12月,由键盘输入一个月份数,输出对应的季节英文名称(12月2月为冬季;3月5月为春季;6月8月为夏季;9月11月为秋季),要求用if嵌套实现。(1) 截屏:(2) 源代码:#include"stdio.h"void main()int year;printf("请任意输入一个月份:n");scanf("%d",&year);if(year>=3&&year<=5)printf("SPRING");else if(year>=6&&year<=8)printf("SUMMER");else if(year>=8&&year<=11)printf("FALL");elseprintf("WINTER");13题目:.模拟银行提款机程序。首先要求用户输入密码,如果输入密码 超过三次则退出程序。如果在三次以内,可以选择用户的操作,操作1.查询余额; 2.存款操作; 3.取款操作; 4.转账汇款; 5.退出(1) 截屏:(2) 源代码:#include"stdio.h"void main()int n=0;int mima;/密码int c=0;/操作int ck,qk,zz,hl;/存款,取款,转帐,汇款int ye=1000;/余额 while(n<3)n=n+;printf("请输入六位数密码n");scanf("%d",&mima);if(mima=123456)printf("密码正确!n");while(c!=5)printf("请选择您要做的操作:n1.查询余额; 2.存款操作; 3.取款操作;n 4.转账汇款; 5.退出;n"); scanf("%d",&c); switch(c)case 1:printf("余额为%dn",ye);break; case 2:printf("请输入您要存的钱数:n");scanf("%d",&ck);ye=ck+ye;printf("当前余额为:%dn",ye);break; case 3:printf("请输入您要取的钱数:n");scanf("%d",&qk);ye=ye-qk;printf("当前余额为:%dn",ye);break; case 4:printf("请输入您要转的钱数:n");scanf("%d",&zz);ye=ye-zz;printf("当前余额为:%dn",ye);break; case 5:printf("已退出,请收好您的卡!n");break; break;elseprintf("密码错误!n");if(n=3)printf("错误次数过多,禁止操作!n");14题目:1.用户从键盘任意输入两个整数,求这两个整数之间所有整数的和.(1) 截屏:(2) 源代码:#include"stdio.h"void main()int a,b;int n;int sum=0;int max,min;printf("请输入两个整数:n");scanf("%d%d",&a,&b);if(a>=b)max=a;min=b;elsemax=b;min=a;for(n=min;n<=max;n+)sum=n+sum;printf("%d,%d之间所有数的和为:%dn",a,b,sum);15题目:打印出一个直角三角形(1) 截屏:(2) 源代码:#include"stdio.h"void main()int s,n,m;printf("请任意输入三角形的直角边长:n");scanf("%d",&s);for(n=0;n<s;n+)for(m=0;m<=n;m+)printf(" * ");printf("n");16题目:打印出一个"九九乘法表"(1) 截屏:(2) 源代码:#include"stdio.h"void main()int n,m,x;for(n=1;n<=9;n+)for(m=1;m<=n;m+)x=n*m;printf(" %d*%d=%d ",n,m,x);printf("n");17题目:输出1-100之间的所有素数(1) 截屏(2) 源代码#include"stdio.h"void main()int n,m,x;int flag=0;int s=0;for(n=1;n<=100;n+)flag=1;for(m=2;m<n;m+)x=n%m;if(x=0)flag=0;break;if(flag=1)s+;printf(" %d ",n);if(s%5=0)printf("n");printf("n");18题目:模拟银行操作的流程(1) 截屏(2) 源代码#include"stdio.h"void main()int n=0;int mima;/密码int c=0;/操作int ck,qk,zz,hl;/存款,取款,转帐,汇款int ye=1000;/余额 while(n<3)n=n+;printf("请输入六位数密码n");scanf("%d",&mima);if(mima=123456)printf("密码正确!n");while(c!=5)printf("请选择您要做的操作:n1.查询余额; 2.存款操作; 3.取款操作;n 4.转账汇款; 5.退出;n"); scanf("%d",&c); switch(c)case 1:printf("余额为%dn",ye);break; case 2:printf("请输入您要存的钱数:n");scanf("%d",&ck);ye=ck+ye;printf("当前余额为:%dn",ye);break; case 3:printf("请输入您要取的钱数:n");scanf("%d",&qk);ye=ye-qk;printf("当前余额为:%dn",ye);break; case 4:printf("请输入您要转的钱数:n");scanf("%d",&zz);ye=ye-zz;printf("当前余额为:%dn",ye);break; case 5:printf("已退出,请收好您的卡!n");break; break;elseprintf("密码错误!n");if(n=3)printf("错误次数过多,禁止操作!n");19题目:输入任意多个整数,当输入-1时结束用户输入,统计并输入其中正数、负数和零的个数。(1) 截屏(2) 源代码#include"stdio.h"void main()int n=0;int l=0;int z=0;int f=0;while(n!=-1)printf("请输入一个数:n");scanf("%d",&n);if(n>0)z+;else if(n=0)l+;elsef+;printf("正数有个%d,负数有个%d,零有个%d。n",z,f,l);20题目:编写程序,计算1-100之间的所有偶数和。(1) 截屏(2) 源代码#include"stdio.h"void main()int n;int sum=0;for(n=1;n<=100;n+)if(n%2=0)sum=sum+n;printf("1到100之间所有偶数的和为%dn",sum);21题目.用for循环语句编写计算n!的程序(1) 截屏(2) 源代码#include"stdio.h"void main()int x;int n;int s=1;printf("请输入要计算的值:n");scanf("%d",&x);for(n=1;n<=x;n+)s=s*n;printf("%d的阶乘为:%dn",x,s);21题目百钱百鸡问题:设公鸡每只5元,母鸡每只3元,小鸡每元3只,现用100元钱买100只鸡,编写程序,算出可以各买多少只鸡。(1) 截屏(2) 源代码#include"stdio.h"void main()int x,y,z;for(x=1;x<=20;x+)for(y=1;y<=33;y+)z=100-x-y;if(x+y+z=100)&&(5*x+3*y+z/3=100)&&(z%3=0)printf("可以买公鸡%d只,母鸡 %d只,小鸡 %d只n",x,y,z);22题目古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(1) 截屏(2) 源代码#include"stdio.h"int fun(int n)if(n=1|n=2)return 1;elsereturn fun(n-1)+fun(n-2);void main()int num;int x;int n;printf("请输入需要查看的月份:n");scanf("%d",&n);num=fun(n);printf("第%d月有兔子%d对n",n,num); return 0;23题目打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。(1) 截屏(2) 源代码#include"stdio.h"void main()int n;int a,b,c;printf("水仙花数有:n");for(n=100;n<=999;n+)a=n/100;b=(n-a*100)/10;c=(n-a*100)%10;if(a*a*a+b*b*b+c*c*c=n)printf(" %d ",n);24题目4.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。(1) 截屏(2) 源代码#include"stdio.h"void main()int n;int sum=0;int m;for(n=2;n<1000;n+)sum=0;for(m=1;m<n;m+)if(n%m=0)sum=sum+m;if(sum=n)printf(" %d ",n);25题目编写两个函数,求任意输入两个整数的最大公约数和最小公倍数。(1) 截屏(2) 源代码#include"stdio.h"int gy(int a,int b)int n;int x;for(n=1;n<=b;n+)if(a%n=0&&b%n=0)x=n;printf("最大公约数是%dn",x);return x; int gb(int a,int b,int x) int m; m=(a*b/x); printf("最大公倍数是%dn",m); void main()int a,b; int x;int max,min; printf("请任意输入两个整数:n");scanf("%d %d",&a,&b);if(a>=b)max=a;min=b;elsemax=b;min=a;x=gy(max,min); gb(max,min,x);26题目用递归的方法,计算正整数的阶乘n!。(1) 截屏(2) 源代码#include"stdio.h"int jc(int x)if(x=1) return x=1;elsereturnx=x*jc(x-1);void main()int x;int a; printf("请任意输入一个正整数:n");scanf("%d",&x);a=jc(x);printf("%d的阶乘为%dn",x,a);27题目有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?(1) 截屏(2) 源代码#include"stdio.h"int year(int a)int n;for(n=0;n<4;n+)a=a+2;printf("第五个人的年龄是%dn",a);void main()int a;printf("请输入第一个人的年龄:n");scanf("%d",&a);year(a);28题目有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。(1) 截屏(2) 源代码#include"stdio.h"void sum()float b=1;int n; float sum=0;float a=1;float c;for(n=1;n<=20;n+)c=a;a=a+b;b=c;sum=sum+(b/a);printf("%fn",sum);void main()sum();29题目设计一个判断素数的函数,编写程序验证函数的功能(1) 截屏(2) 源代码#include"stdio.h"int sushu(int a)int n;int flag;if(a!=1&&a!=2)for(n=2;n<a;n+)flag=0;if(a%n=0)flag=0; break; else flag=1; if(flag=1)printf("%d是素数n",a); elseprintf("%d不是素数n",a);elseprintf("%d是素数n",a);27. 题目:调用自定义函数的形式编程。要求求出s=n!+m!+k!。其中m,n,k的值有键盘输入,并且他们的值必须大于0.(1)截屏:(2)源代码:#include"stdio.h"int jc(int a)int x=1; int n;for(n=1;n<=a;n+)x=x*n;return x;void main()int n,m,k;int a,b,c;int s; printf("请输入第1个数:n=n"); scanf("%d",&n); printf("请输入第2个数:m=n"); scanf("%d",&m);printf("请输入第3个数:k=n"); scanf("%d",&k);a=jc(n);b=jc(m);c=jc(k);s=a+b+c;printf("s=%d!+%d!+%d!=%dn",n,m,k,s);28. 题目:编写一个程序,用于求解一元二次方程的实数根。要求求解的过程由函数实现,如果不能组成一元二次方程,给出提示,如果方程没有实数根也给出提示.并且分别用2个函数实现判别式大于0(有两个不同的实数根),等于零(有两个相同的实数根)时的运算,最后将实数根的情况输出到屏幕上。(1)截屏:(2)源代码:#include"stdio.h"#include"math.h"int lg(int a,int b,int x)float x1,x2;x1=(-b+sqrt(x)/(2*a);x2=(-b-sqrt(x)/(2*a);printf("x1=%f,x2=%fn",x1,x2);int yg(int a,int b,int x)float x3;x3=(-b-sqrt(x)/(2*a);printf("x=%fn",x3);void main()int a,b,c;int x;printf("请输入方程的系数:n");scanf("%d%d%d",&a,&b,&c);if(a!=0)printf("方程成立!n");x=b*b-4*a*c;if(x>0)printf("方程有两个不同的实数根:");lg(a,b,x);else if(x=0)printf("方程只有一个根:");yg(a,b,x);elseprintf("方程无解!n");elseprintf("方程不成立!n");29. 题目:编写程序,用冒泡法对任意输入的10个整数排序。(1)截屏:(2)源代码:#include"stdio.h"void main()int a10;int n,m;int z;for(n=0;n<10;n+)printf("请输入第%d个数:n",n+1)