c语言实验 总结Word文件下载.docx
《c语言实验 总结Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言实验 总结Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
r);
area=PI*r*r;
lergth=2*PI*r;
area=%f\n"
area);
lergth=%f\n"
lergth);
*\n"
**\n"
***\n"
****\n"
*****\n"
printf("
+++++++++++++++++++++++++++++\n"
+欢迎使用卡卡名片夹\n"
+[1]显示全部名片\n"
+[2]新建名片\n"
+[3]修改名片\n"
+[4]删除名片\n"
+[5]退出\n"
++++++++++++++++++++++++++++\n"
实验3顺序结构设计
1.输入两个整型数字,输出他们的和。
inta,b,sum;
请输入a的值="
scanf("
%d"
a);
请输入b的值="
b);
sum=a+b;
sum=%d\n"
sum);
2.输入两个实型数,输出他们的和与乘积。
floata,b,sum,p;
p=a*b;
sum=%f\n"
s);
p=%f\n"
x);
3.输入一个三位数,计算个位、十位、百位之和。
inta,b,c,sum;
请输入一个三位数\n"
%1d%1d%1d"
a,&
b,&
c);
sum=a+b+c;
4.求方程
的根(设
)(其中a,b,c的值由键盘输入)。
请同学们根据N-S图编程,已知N-S图如下:
输入a、b、c
dt=sqrt(
)
x1=(-b+dt)/2a
x2=(-b-dt)/2a
输出x1,x2
此题调用了求平方根函数sqrt,要在头文件里包含。
请同学们将main函数里的函数体补充并上机运行。
math.h>
floata,b,c,x1,x2,dt;
请输入a的值;
a="
scanf("
请输入b的值;
b="
请输入c的值;
c="
dt=sqrt(b*b-4*a*c);
x1=(-b+dt)/(2*a);
x2=(-b-dt)/(2*a);
方程的解x1=%f\n"
x1);
方程的解x2=%f\n"
x2);
5.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?
(h和f的值由键盘输入,输出鸡和兔的头数)
分析:
设鸡x只,兔y只
则x+y=h解得:
x=2h-f/2
2x+4y=fy=f/2-h
注意,输入的头数和脚数要符合客观规律,比如输入h为8,f为22。
inth,f,x,y;
请输入鸡兔总头数\n"
h);
请输入鸡兔总脚数\n"
f);
x=2*h-f/2;
y=f/2-h;
鸡的数量x=%d\n"
兔的数量y=%d\n"
y);
读程序:
1.编写程序,输入两个整数给变量a和b,输入的大数放在a中,输入的小数放在b中,求出他们的商数和余数并进行输出。
题目已指定数据是按照先大后小次序输入,这样可以保证下面程序中变量a存放大数,变量b存放小数,可用除法运算符“/”对整数运算的特点求商,用取余运算符“%”求余数。
#include"
stdio.h"
inta,b,c,d;
inputtwointegers:
\n"
%d%d"
c=a/b;
d=a%b;
%d,%d"
c,d);
程序解释:
第一个printf语句:
\n为回车换行符,表示输入这行话以后光标另起一行。
scanf语句:
输入a和b的值,注意输入的格式要和scanf语句里的格式相同,这里中间有一个空格,即我们输入a以后要按一下空格,再输入b;
如果scanf语句是这样写scanf("
%d,%d"
b);
那么我们输入a的值以后还要输入一个逗号,然后再输入b的值,然后按回车表示输入结束。
2.已知三条边a、b、c,求三角形面积。
计算三角形面积的海伦公式:
,其中
floata,b,c,s,area;
%f,%f,%f"
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
/*调用求平方根函数sqrt*/
area=%f"
实验4选择、循环结构设计
1.编程实现下列函数
x(x<
1)
y=2x-1(
|3x-11|(
提示:
绝对值函数为abs(),包含在math.h中。
floatx,y;
x="
x);
if(x<
10)
if(x<
1)y=x;
elsey=2*x-1;
else
y=abs(3*x-11);
y=%f\n"
2.编写程序,输入一百分制成绩,对应输出等级A、B、C、D、E,90分以上为A,80分—89分为B,70分—79分为C,60分—69分为D,60分以下为E。
用switch语句
{
ints,c;
请输入一个百分制分数s="
s);
if(s>
90&
&
s<
=100)c=9;
elsec=s/10;
switch(c)
{
case0:
E\n"
break;
case1:
case2:
case3:
case4:
case5:
case6:
D\n"
case7:
C\n"
case8:
B\n"
case9:
A\n"
default:
输入的不是百分制分数\n"
}
用if语句
intx;
请输入一个百分制分数x="
if(x>
=90&
x<
=100)printf("
elseif(x>
=80&
=89)printf("
=70&
=79)printf("
=60&
=69)printf("
elseif(x<
60)printf("
elseprintf("
输入的不是百分制分数"
3.编写程序,计算以下级数前n项之和。
(书后习题第7题)
main()
floatx,sum=1,s=1;
intn,i;
enterx,n:
"
%f%d"
&
x,&
n);
for(i=1;
i<
=n;
i++)
s=s*x/i;
sum=sum+s;
\nsum=%f\n"
sum);
4.编程打印如下图案(书后习题第3题):
**
****
******
********
**********
************
**************
#include<
inti=1,j=1,k=1;
for(i=1;
=7;
i++){for(j=1;
j<
=14-2*i;
j++)
printf("
"
for(k=1;
k<
=2*i;
k++)
*"
说明:
打印这个图形用两层循环控制。
外循环控制输出行数;
两个并列的内循环控制输出每行的空格数和*号数字,空格数为14-2i,*数为2i。
5.输出Fibonacci数列第n项。
其数列通项公式为Fn=Fn-1+Fn-2,F1=1,F2=1。
#include<
longf1=1,f2=1,n,m;
inti;
项数n="
if(n>
=3)
for(i=3;
{
m=f1+f2;
f1=f2;
f2=m;
elsem=1;
第%d项为%ld\n"
n,m);
1.输入三个数a、b、c,要求按由小到大的顺序输出。
floata,b,c,t;
scanf(“%f,%f,%f”,&
if(a>
b)
{t=a;
a=b;
b=t;
c)
a=c;
c=t;
if(b>
{t=b;
b=c;
printf(“%f,%f,%f”,a,b,c);
2.计算n的阶乘。
3.
inti=1,s=1,n;
scanf(“%d”,&
s=i*s;
printf(“%d!
=%d”,n,s);
3.编程输出如下图形:
***
*****
用循环变量i控制输出5行,i从1变化到5,即for(i=1;
=5;
i++);
内层循环控制回车换行。
inti=1,j=1;
for(j=1;
=i;
putchar(‘*’);
putchar(‘\n’);
4.编写程序以输出下图:
#include<
inti,j,k;
for(i=0;
3;
i++)/*第一个双循环输出上面3行*号*/
for(j=0;
2-i;
j++)
/*输出*号前面的空格*/
for(k=0;
k++)
/*输出*号*/
/*输出完一行*号后换行*/
}
for(i=0;
2;
i++)/*第二个循环嵌套输出下面2行*号*/
for(j=0;
3-2*i;
5.求Fibonacci数列前40个数。
这个数列有如下特点,第1、2两个数为1,1。
从第三个数开始,该数是其前面两个数之和。
即
F1=1(n=1)
F2=1(n=1)
Fn=Fn-1+Fn-2(
这是由一个古典数学问题引出的,这个问题是这样,有一对兔子,从出生第3个月起每个月都生一对兔子。
小兔子长到第三个月又生一对兔子。
假设所有兔子不死,问每个月的兔子总是多少。
这个问题就是Fibonacci数列问题。
编程求解:
longf1=1,f2=1;
/*定义长整型变量f1,f2,以免数据溢出*/
inti;
=20;
%10ld,%10ld\n"
f1,f2);
/*10ld表示输出数据为长整型,10个字符位置*/
f1=f1+f2;
f2=f1+f2;
实验5数组和字符串
1.编写程序,将1,2,3这三个数赋给数组a,将5,6,7赋给数组b,将两数组对应元素相加的和赋给数组c,输出数组c。
inta[3]={1,2,3};
intb[3]={5,6,7};
intc[3];
c[0]=a[0]+b[0];
c[1]=a[1]+b[1];
c[2]=a[2]+b[2];
该数组为%d%d%d\n"
c[0],c[1],c[2]);
2.输入任意10个数,按从大到小或从小到大的顺序输出(“冒泡”排序)。
voidmain()
inta[10];
inti,j,t;
input10number:
10;
a[i]);
9;
for(i=0;
9-j;
if(a[i]>
a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("
thesortednumber:
for(i=0;
printf("
a[i]);
4.输入10个整数并存放在一维数组中,找出其中最大值和此元素的下标。
inti,index,max,a[10];
=9;
a[%d]="
i);
scanf("
max=a[0];
i++)
if(max<
a[i])
max=a[i];
index=i;
max=%d,index=%d"
max,index);
5.对3行4列的二维数组赋任意值,求出此二维数组每行上的最大值,输出其行号及最大值。
inta[3][4],i,j,max;
请输入一个三行四列的数组:
for(j=0;
4;
a[%d][%d]="
i,j);
a[i][j]);
max=a[0][0];
if(a[i][j]>
max)
max=a[i][j];
行号%d的最大值为%d\n"
i,max);
6.输入任意字符串,统计其中数字的个数。
string.h>
charstr[128];
gets(str);
intnCount=0;
intnLength=strlen(str);
for(inti=0;
i<
nLength;
i++)
if(str[i]>
='
0'
&
str[i]<
9'
{
nCount++;
}
\nThecountofnumberis%d\n"
nCount);
4.利用循环对数组进行赋值和输出:
将任意4个实型数赋给数组a,然后输出数组a。
floata[4];
printf(“Pleaseinput4floatnumber:
”);
scanf(“%f”,&
/*第一个for循环是对数组赋值,i控制数组元素个数*/
printf(“%f”,a[i]);
/*第二个for循环,依次输出每个数组元素*/
如果在对数组元素进行赋值的时候,想在输入每个数之前显示对应的数组名称,第一个for循环可改成如下形式:
printf(“a[%d]=”,i);
输出时要显示数组名称可将第二个for循环中的printf函数改为
printf(“a[%d]=%f”,i,a[i]);
5.利用双循环对二维数组进行赋值和输出:
将数据3,0,-2,11,-5,10赋给一个2行3列的二维数组,输出这个二维数组。
inti,j,a[2][3]={{3,0,-2},{11,-5,10}};
i++)/*外层循环控制行数*/
j++)/*内循环控制列数*/
printf(“a[%d][%d]=%d”,i,j,a[i][j]);
3.将下列矩阵中的第一行和第4行对调。
inta[4][4]={1,2,3,4,15,26,37,48,11,21,31,41,4,3,2,1};
inti,j,c;
j++)/*for循环交换第一行和第4行的数据*/
c=a[0][j];
a[0][j]=a[3][j];
a[3][j]=c;
i++)/*for循环输出新的数组元素*/
/*按行输出,每输出一行就回车换行*/
%d"
a[i][j]);
实验6函数
1.编写函数,求表达式
的值,x由主函数输入。
(请同学们用有返回值和无返回值两种方式去做,练习简单的函定义、声明、及调用方法)
floatfun(floatx)
returnx*x-5*x+4;
floatx;
Pleaseinputx:
x*x-5x+4=%f\n"
fun(x));
2.编写函数,按如下递归公式求函数值。
1(n=0)
fun(n)=