C语言程序设计实验及代码.docx
《C语言程序设计实验及代码.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验及代码.docx(50页珍藏版)》请在冰豆网上搜索。
C语言程序设计实验及代码
西南林业大学
C语言程序设计实验题、代码、输出结果
编写目的:
学生的痛,大家都明白,特别是学渣的痛。
呃,不过我渐渐从学渣成功逆袭,所以最后才会整理下这些信息,为了让后面的人在面对这C语言时不会那么脑大,不用像我们开始时候的茫然。
认真享受在课堂上GET知识的过程,接下去的事:
作业考试也是水到渠成的事情,有的课程的却要花点时间,但就像那句话说的:
Nopain,noget.付出不一定会有收获,但是不付出一定会让你后悔。
所以,认真听课,不仅仅只是C语言,还有其他的课程。
实验题目及代码、输出结果
实验题目目录
目录P1-----------------------P6
Printf简单输出三角形-------------------------------------------------------P6
给定圆半径值为5,编程求圆面积和圆周长---------------------------P6
编写一个摄氏温度与华氏温度之间的转换程序-------------------P6
编写程序,从键盘上输入两个电阻值,求它们并联电阻值和串联电阻值,输出结果保留两位小数。
-----------P7(有主函数子函数----------P26)
使用两种指定的方法打印正三角形数阵-----------------------------P7
从键盘输入3个数字字符,将它们分别转换为对应的整数值(即字符’0’转换为整数0,字符’1’转换为整数1,依次类推),然后求3个整数的平均值。
-------------------------------------P8
从键盘输入两个两位的正整数,按照以下格式组装成一个四位的正整数。
------------------------P8(指针变量----------------P19)
输入三角形的三条边长,求三角形的面积。
--------------------P9
从键盘任意输入3个整数,选出其中的最大数并打印。
--P10
从键盘输入三个正整数,判断否能构成三角形的三边?
---P10
从键盘输入一个合法的算术运算符(+、-、*、/)及两个实数,使用if语句编写程序,根据输入的运算符判断对这两个实数进行何种运算,并打印运算结果(要求结果保留两位小数)。
---------------------P11(有主函数子函数------------------P21)
从键盘输入一个年份和一个月份,使用switch语句编程判断并打印该月的天数-----------------------------------------------P12
从键盘输入1个整型的分数,使用switch语句编程,判断如果分数介于0~59分之间就打印“不及格”;如果介于60~79分之间就打印“及格”;如果介于80~89之间就打印“良好”;如果介于90~100之间就打印“优秀”。
----------------------------------P13
使用while语句编程求100以内能被5整除但不能同时被7整除的数,并统计找到的数的个数。
-----------------------------------P13
从键盘输入一个正整数,使用while语句编程求该整数是一个几位数。
---------------------------------------------------------------------------P14
使用while语句编程求
=
的前n项和---------------------------P14
使用for语句编程求
=
的前n项和--------------------------P15
使用for语句编程求
=
的前n项和-----------------------------P16
使用for语句的嵌套结构编程打印九-九乘法表--------------------P16
定义一个大小为10的整型一维数组,初始化所有数组元素,编程查找数组中的所有奇数,并统计奇数的个数-----------------P17
定义一个大小为10的整型一维数组,初始化其中的9个元素,这9个元素已经按照降序排列。
从键盘再输入1个整数,将该整数插入到已有的元素中,需保证这10个数仍然按照降序排序。
--------------------------------------------------------------P18
利用指针编程,其功能是求电阻的并联值和串联值。
---------P18
利用指针编程,其功能是利用“除号”和“求余号”将输入的两个两位的正整数组合成一个新的四位的正整数。
---------P16
定义一个大小为10的整型一维数组并初始化数组元素,再定义一个指针变量让其指向该数组,利用指针编程查找数组中的所有奇数。
--------------------------------P20
输入三角形的三条边长,定义一个子函数fun()求三角形的面积--------------------P21
定义一个子函数fun()打印菱形。
--------------------P22
定义一个子函数fun(),其功能是求1累加到100的和-----------P23
定义一个子函数fun(),求表达式
=
的前n项和---------P23
定义一个fun()函数,其功能是:
求两个整数的和、差、积、商。
----------------P26
在主函数中输入一元二次方程ax2+bx+c=0的三个系数a、b、c,求方程的实根。
定义三个子函数fun1()、fun2()、fun3()分别处理方程有无实根、有两个相同实根、有两个不同实根的情况----------------------------------------------------------------P27
从键盘上输入一个的字符串,输出所有ASCII码为奇数的字符,并统计这些字符的个数。
------------------------------P28
从键盘上输入一个由大写字母、小写字母、数字字符、其它字符构成的字符串,统计字符串中的大写字母个数、小写字母个数、数字字符个数、其它字符个数。
------------------------------P28
从键盘输入两个字符串,分别存到字符数组a和字符数组b中,编程将第二个字符串连接到第一个字符串末尾,形成一个新字符串。
(不使用#include库函数)-----------------------P29
使用while语句编程求
=
(n从0开始)前n项值,直到某一项的值小于10-6就结束循环。
------------------------------------------P30
使用for语句的嵌套结构编程打印行数为奇数的对称三教菱形
----------------------------------------------P31
从键盘输入一个正整数x,编程求比x大的,最临近x的n个素数,例如,为x和n分别输入数值10和15,就表示求出比10大的,最临近10的15个素数。
--------------------------------------------------P31
题目及答案
printf()函数的编程练习——格式1
编程输出如图所示的三角形。
voidmain()
{
printf("*\n");
printf("**\n");
printf("***\n");
printf("****\n");
}
给定圆半径值为5,编程求圆面积和圆周长
提示:
(1)本题需定义三个浮点型变量,如doubler=5,s,l;
(2)输出浮点型数据的格式说明符是%lf
(3)C语言中没有∏这个符号,编写程序时直接使用3.14159
(4)C语言中没有求次方的运算符,求次方可用连乘的方法
#include
#definePI3.14159
intmain()
{
floatr=5;
printf("圆半径=%lf\n圆面积=%f\n圆周长=%f\n",r,PI*r*r,2*PI*r);
}(其中一个数的n次方可以用数学运算来算pow(r,n),“r”为底数,n为次数)
scanf()函数、运算符编程练习
编写一个摄氏温度与华氏温度之间的转换程序,转换公式是:
提示:
该公式中的“C”是一个从键盘输入的已知量;“F”是通过公式计算并打印出来的未知量。
#include
voidmain()
{
doubleF,C;
printf("请输入一个摄氏温度值:
",C);
scanf("%lf",&C);
F=1.8*C+32;//或F=9/5*C+32若定义类型为int,则需要变为F=9.0/5*C+32或F=9/5.0*C+32或用强制类型转换F=(double)(9/5)*C+32;原因是除号“/”在运算时为整型运算
printf("对应的华氏温度值是:
%.2lf",F);
}
编写程序,从键盘上输入两个电阻值,求它们并联电阻值和串联电阻值,输出结果保留两位小数。
运行结果如图所示:
注:
并联和串联的电阻值计算公式如下。
(1)并联电阻RP=
(2)串联电阻RS=R1+R2
提示:
(1)scanf()函数可以写成scanf("%d,%d",&r1,&r2);
(2)结果保留两位小数的格式说明符是“%.2lf”。
#include
voidmain()
{
doubleR1,R2,RP,RS;
printf("请输入两个电阻值:
",R1,R2);
scanf("%lf,%lf",&R1,&R2);
RP=(R1*R2)/(R1+R2);
RS=R1+R2;
printf("并联电阻值:
%.2lf\n串联电阻阻值:
%.2lf",RP,RS);
}
字符的输入和输出
1、使用两种指定的方法打印如图所示图形。
方法一:
使用printf()函数的“%c”格式打印图形。
提示:
一个“%c”只能打印一个字符。
方法二:
使用printf()函数的“%d”格式打印图形。
方法一:
#include
voidmain()
{
printf("%4d\n%4d\n%d\n",1,222,33333);
}
方法二:
#include
voidmain()
{
chara,b,c;
a='1';
b='2';
c='3';
printf("%c\n",a);
printf("%c%c%c\n",b,b,b);
printf("%c%c%c%c%c\n",c,c,c,c,c);
}
方法二的类似(运用ASCLL码)
#include
voidmain()
{
inta,b,c;
a=49;
b=50
c=51;
printf("%c\n",a);
printf("%c%c%c\n",b,b,b);
printf("%c%c%c%c%c\n",c,c,c,c,c);
}
1、从键盘输入3个数字字符,将它们分别转换为对应的整数值(即字符’0’转换为整数0,字符’1’转换为整数1,依次类推),然后求3个整数的平均值。
运行结果如图所示:
提示:
本题的变量定义可参考如下:
chara,b,c;//变量a,b,c保存输入的3个数字字符
intx,y,z;//变量x,y,z保存转换后的3个整数
doubleaver;//变量aver保存求出的平均值
#include
#include
voidmain(void)
{
doublea,b,c,d;
printf("请输入三个数字字符:
");
scanf("%lf,%lf,%lf",&a,&b,&c);
d=(a+b+c)/3;
printf("平均值=%lf\n",d);
}
#include
voidmain(void)
{
chara,b,c;
intx,y,z;
doubleaver;
printf("请输入三个数字字符:
");
scanf("%c,%c,%c",&a,&b,&c);
x=a-48;
y=b-48;
z=c-48;
aver=(x+y+z)/3.0;
printf("平均值为:
%2lf",aver);fuchu水到渠成的事情,有的可XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
从键盘输入两个两位的正整数,按照以下格式组装成一个四位的正整数。
例如:
输入12和34,组装成的四位数是1324。
运行效果如右图所示:
提示:
(1)首先利用“除号”和“求余号”分别把两个两位正整数的十位数、个位数分离开;再经过数学运算组装成一个四位数。
(2)scanf()函数可以写成scanf("%d%d",&a,&b);
#include
#include
voidmain(void)
{
inta,b,z;
printf("请输入两个两位数的正数:
");
scanf("%d%d",&a,&b);
z=a/10*1000+b/10*100+a%10*10+b%10;
printf("合成的四位正整数是:
%d\n",z);
}
数学函数的使用
1、输入三角形的三条边长,求三角形的面积。
运行结果如图所示:
提示:
(1)本题的变量定义可参考如下:
inta,b,c;
doublex,s;
(2)scanf()函数可以写成
scanf("%d,%d,%d",&a,&b,&c);
(3)计算三角形面积的公式是:
(4)求x的开方值的库函数是sqrt(x),使用时需包含头文件math.h
#include
#include
voidmain(void)
{
inta,b,c;
doublex,s;
printf("请输入三角形的三边:
");
scanf("%d%d%d",&a,&b,&c);
x=(a+b+c)/2;
s=sqrt((x-a)*(x-b)*(x-c)*x);
printf("s=%lf\n",s);
}
单分支if语句编程练习
从键盘任意输入3个整数,选出其中的最大数并打印。
提示:
(1)要判断最大数,需对每两个数作两两比较。
(2)可以使用3个单分支if语句编写程序。
(3)从键盘输入2个整数到变量a、b中,编程总是把较小的数放入a中,较大的数放入b中。
#include
voidmain()
{
inta,b,c,t;
printf("请输入三个整数:
");
scanf("%d%d%d",&a,&b,&c);
if(a
{t=a;
a=b;
b=t;
}
if(a{t=a;
a=c;
c=t;
}
if(b{t=b;
b=c;
c=t;
}
printf("最大数是:
%d\n",a);
}
#include
voidmain()
{
inta,b,t;
printf("请输入两个整数到变量a,b中");
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
if(a>b)
{
t=a;
a=b;
b=t;
printf("运行结果:
a=%d,b=%d\n",a,b);
}
else
printf("运行结果:
a=%d,b=%d\n",a,b);
}
从键盘输入三个正整数,判断否能构成三角形的三边?
如果能,就按照以下提示的数学公式计算三角形的面积;如果不能,就输出“不能构成三角形”的提示信息。
提示:
(1)该题属于“双分支if-else语句”结构。
(2)能构成三角形的逻辑条件是:
任意的两边之和均要大于第三边。
(3)
计算三角形面积的公式是:
(4)本题的变量定义可参考如下:
inta,b,c;doublex,s;
(5)本题要用到求x开方值的数学库函数sqrt(x),需包含头文件math.h
#include
#include
voidmain(void)
{
inta,b,c,m,n,t;
doublex,s;
printf("请输入三角形的三边:
");
scanf("%d%d%d",&a,&b,&c);
m=a+b;
n=b+c;
t=a+c;
if(m>c&&n>a&&t>b)
{
x=(a+b+c)/2;
s=sqrt((x-a)*(x-b)*(x-c)*x);
printf("构成的三角形面积是:
%.2lf\n",s);
}
else
printf("不能构成三角形\n");
}
从键盘输入一个合法的算术运算符(+、-、*、/)及两个实数,使用if语句编写程序,根据输入的运算符判断对这两个实数进行何种运算,并打印运算结果(要求结果保留两位小数)。
程序运行效果如下图所示:
提示:
(1)该题属于“多分支if语句”结构。
(2)本题的变量定义可参考如下:
charfu;//fu变量用来存放运算符
doublex,y,z;//x、y变量用来存放输入的2个实数,z存放运算结果
(3)输入字符型数据的格式说明符是%c,实型数据的格式说明符是%lf。
(4)输出实数保留2位小数的格式说明符是%.2lf。
(5)本题可参考教材P61例3.7,但是不允许使用switch语句编写该题程序。
#include
voidmain()
{
charfu;
doublex,y,z;
intt,a;
printf("请输入一个算数运算符和两个浮点数");
scanf("%c%lf%lf",&fu,&x,&y);
t=47-fu;
if(t==4)
{
z=x+y;
printf("%.2lf%c%.2lf=%.2lf\n",x,fu,y,z);
}
elseif(t==5)
{
z=x*y;
printf("%.2lf%c%.2lf=%.2lf\n",x,fu,y,z);
}
elseif(t==2)
{
z=x-y;
printf("%.2lf%c%.2lf=%.2lf\n",x,fu,y,z);
}
elseif(t==0)
{
z=x/y;
printf("%.2lf%c%.2lf=%.2lf\n",x,fu,y,z);
}
else
printf("运算符非法,无法参与运算\n");
}
从键盘输入一个年份和一个月份,使用switch语句编程判断并打印该月的天数。
程序运行效果如下所示:
提示:
(1)本题先使用if语句判断年份和月份是否有效。
(2)如果年份和月份有效,再嵌套switch语句判断每个月份的天数。
(3)对于2月份的处理需要判断闰年,闰年的判断方法请参考教材P62例3.8。
#include
voidmain()
{
intyear,month,day;
printf("请输入一个年份和一个月份:
");
scanf("%d%d",&year,&month);
if(month>0&&month<=12)
{
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
printf("%d月有31天\n",month);
break;
case4:
case6:
case9:
case11:
printf("%d月有30天\n",month);
break;
default:
if((year%4==0&&year%100!
=0)||(year%400==0))
printf("2月有29天\n");
else
printf("2月有28天\n");
break;
}
}
else
printf("输入的月份值无效!
");
}
从键盘输入1个整型的分数,使用switch语句编程,判断如果分数介于0~59分之间就打印“不及格”;如果介于60~79分之间就打印“及格”;如果介于80~89之间就打印“良好”;如果介于90~100之间就打印“优秀”。
#include
voidmain()
{
inta,b;
printf("请输入一个分数介于<0~100>间:
");
scanf("%d",&a);
if(a>0&&a<=100)
{
b=a/10;
switch(b)
{
case6:
case7:
printf("及格\n");
break;
case8:
printf("良好\n");
break;
case9:
case10:
printf("优秀\n");
break;
default:
printf("不及格\n");
break;
}
}
else
printf("输入的分数份值无效!
\n");
}
使用while语句编程求100以内能被5整除但不能同时被7整除的数,并统计找到的数的个数。
提示:
(1)该题变量可定义为:
inti=1,n=0;//i是循环变量,n是统计个