c语言实验答案.docx
《c语言实验答案.docx》由会员分享,可在线阅读,更多相关《c语言实验答案.docx(43页珍藏版)》请在冰豆网上搜索。
![c语言实验答案.docx](https://file1.bdocx.com/fileroot1/2023-2/22/da6f6225-8d42-42de-9a60-8fd4296fc875/da6f6225-8d42-42de-9a60-8fd4296fc8751.gif)
c语言实验答案
//1.1编写一程序,在屏幕上输出如下内容:
//X|X|X
//---+---+---
//||
//---+---+---
//0|0|0
#include
voidmain()
{
printf("X|X|X\n");//注意转义字符\n的用法
printf("---+---+---\n");
printf("||\n");
printf("---+---+---\n");
printf("0|0|0\n");
}
//1.2输出"Helloworld!
"语句
#include
voidmain()
{
printf("Helloworld!
\n");
}
//2.1编写一程序,接受用户输入的两个整数,并计算它们的和、差、积、商,程序运行结果应如下所示。
//注意,尖括号部分表示用户输入数据或要被替换的输出内容,尖括号本身并不需要输入或输出。
//多使用几组整数尝试一下,你发现了什么?
//Theprogramgetstwointegers,andcomputestheirsum,difference,productandquotient.
//Thefirstnumber:
<第一个整数在此输入>
//Thesecondnumber:
<第二个整数在此输入>
//Resultsasfollows:
//<第一个整数>+<第二个整数>=<和>
//<第一个整数>-<第二个整数>=<差>
//<第一个整数>*<第二个整数>=<积>
//<第一个整数>/<第二个整数>=<商>
#include
voidmain()
{
inta,b;
printf("Theprogramgetstwointegers,andcomputestheirsum,difference,productandquotient.\n");
printf("Thefirstnumber:
");
scanf("%d",&a);
printf("Thesecondnumber");
scanf("%d",&b);
printf("Resultsasfollows:
\n");
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
printf("%d*%d=%d\n",a,b,a*b);
printf("%d+%d=%f\n",a,b,1.0*a/b);//做除法时要注意,除得的结果是实数
}
//2.2输入半径r的值,求出圆周长,圆面积
#include
#definePI3.14
voidmain()
{
intr;
floatzhouchang,mianji;
printf("pleaseinputr:
");
scanf("%d",&r);
zhouchang=2*PI*r;
mianji=2*PI*r*r;
printf("zhouchang=%f\n",zhouchang);
printf("mianji=%f\n",mianji);
}
//3.1如何实现下述输出要求?
//A.输出整数1234,输出共占8位,数据左对齐。
//B.输出整数1234,输出共占10位,数据右对齐。
//C.输出十六进制整数0xFFDE3C02,输出共占8位,数据左对齐。
//D.输出十六进制整数0xFFDE3C,输出共占8位,数据右对齐,前补0。
//E.输出浮点数10.36,输出共占6位,数据右对齐。
//F.输出浮点数123.4567890,输出共占12位,精度6位,数据右对齐。
//G.输出浮点数123.4567890,精度3位,数据左对齐。
#include
#definePI3.14
voidmain()
{
printf("%-8d\n",1234);
printf("%10d\n",1234);
printf("%-8X\n",0xFFDE3C02);
printf("00%X\n",0xFFDE3C);
printf("%6.2f\n",10.36);
printf("%12.6f\n",123.4567890);
printf("%-.3f\n",123.4567890);
}
//3.2编制程序,接受用户输入的数值,输出以该值为半径的圆面积,
#include
voidmain()
{
floatr,yuan,qiu,tiji;//分别为半径,圆面积,球面积,球体积
printf("pleaseinputr:
");
scanf("%f",&r);
yuan=PI*r*r;
qiu=4*PI*r*r;
tiji=4.0/3*PI*r*r*r;
printf("yuan=%f\nqiu=%f\ntiji=%f\n",yuan,qiu,tiji);
}
//4.1给出一个百分制成绩,要求输出成绩等级'A','B','C','D','E'。
//90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。
//分别用if和switch语句实现。
#include
voidmain()
{
intscore;
printf("pleaseinputscore:
");
scanf("%d",&score);
switch(score/10)
{
case10:
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
case6:
printf("D\n");break;
default:
printf("E\n");
}
}
/*以下为if结构
#include
voidmain()
{
intscore;
printf("pleaseinputscore:
");
scanf("%d",&score);
if(score>=90)
printf("A\n");
elseif(score>=80)
printf("B\n");
elseif(score>=70)
printf("C\n");
elseif(score>=60)
printf("D\n");
else
printf("E\n");
}*/
//5.1使用循环结构打印下述图形,打印行数n由用户输入。
图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入。
//**********
//**********
//**********
//**********
//**********
#include
voidmain()
{
intn;//行数
inti,j;//i为行的循环变量,j是普通的循环变量
printf("pleasen:
");
scanf("%d",&n);
for(i=1;i<=n;i++)//外层循环i控制行数
{
for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)//输出星号
printf("*");
for(j=1;j<=10;j++)//输出中间的空格
printf("");
for(j=2*(n-i+1)-1;j>=1;j--)//输出星号
printf("*");
printf("\n");
}
}
//5.2编制程序,按照下述格式打印九九乘法表。
//Nine-by-nineMultiplicationTable
//----------------------------------------------------------------------
//123456789
//----------------------------------------------------------------------
//11
//224
//3369
//4481216
//5510152025
//661218243036
//77142128354249
//8816243240485664
//991827364554637281
//----------------------------------------------------------------------
#include
voidmain()
{
inti,j;
printf("Nine-by-nineMultiplicationTable\n");
printf("------------------------------------------------\n");
printf("\n");
for(i=1;i<9;i++)
printf("%4d",i);
printf("\n------------------------------------------------\n");
for(i=1;i<=9;i++)//此双循环结构为本题核心
{printf("%d",i);
for(j=1;j<=i;j++)
printf("%4d",i*j);
printf("\n");
}
printf("------------------------------------------------\n");
}
//5.3存在自然数,其所有小于自身的因子之和等于该数,这样的数称为完数。
//设计算法,判断某个给定的自然数n是否为完数,要求具有容错处理功能。
#include
voidmain()
{
intn;
intsum=0;//sum保存自然数n的因子之和
inti;
printf("pleaseinputn:
");
scanf("%d",&n);
for(i=1;iif(n%i==0)
sum+=i;
if(n==sum)//注意判断相等要用“==”运算符,而不是“=”
printf("yes\n");
else
printf("no\n");
}
//6.1按照下述格式打印2009年5月日历:
//Calander2009-5
//------------------------------------------------------
//SuMoTuWeThFrSa
//------------------------------------------------------
//12
//3456789
//10111213141516
//17181920212223
//24252627282930
//31
//------------------------------------------------------
#include
voidmain()
{
inti;
printf("Calander2009-5\n");
printf("-----------------------------------------\n");
printf("SuMoTuWeThFrSa\n");
printf("-----------------------------------------\n");
for(i=0;i<5;i++)
printf("");
for(i=1;i<=31;i++)
{
printf("%4d",i);
if(i%7==2)
printf("\n");
}
printf("\n-----------------------------------------\n");
}
//6.2打印所有100至999之间的水仙花数。
所谓水仙花数是指满足其各位数字立方和为该数字本身的整数。
#include
voidmain()
{
inti,j,k,m;//i,j,k分别表示百位、十位、个位数字
for(m=100;m<1000;m++)
{
i=m/100;
j=(m-i*100)/10;
k=(m-i*100-j*10)%10;
if(m==i*i*i+j*j*j+k*k*k)
printf("%d\n",m);
}
}
//6.3接受用户输入的正整数n,计算f(n)=1+1/2!
+1/3!
+...+1/n!
的值。
#include
voidmain()
{
intn,p=1,i;
floatsum=0;
printf("pleaseinputn:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=p*i;
sum+=1.0/p;
}
printf("sum=%f\n",sum);
}
//6.4接受用户从键盘输入的年份值与月份值,打印2009年以后(含)任意月份的日历,2009年前的拒绝打印。
#include
voidmain()
{
inti;//循环变量
intj,day;//j表示周一的位置,day表示月的天数
intyear,month,run;//输入的年,月份,run为闰年的标识
longx=0,x1=0,x2=0;//输入的年月之前共有多少天,x为总天数,x1是之前年天数,x2是当年前面月天数
printf("Pleaseinputyear:
");scanf("%d",&year);//输入年份
printf("Pleaseinputmonth:
");scanf("%d",&month);//输入月份
///////////////////////////////////////
///////////求得输入的年月之前有多少天——x=x1+x2,x1是之前年天数,x2是当年前面月天数
///////////////////////////////////////
for(i=2009;i{
if((i%4==0&&i%100!
=0)||(i%400==0))//如果i年是闰年
x1=x1+366;
else
x1=x1+365;
}
if((year%4==0&&year%100!
=0)||(year%400==0))
run=1;
else
run=0;
for(i=1;i{
if(i==4||i==6||i==9||i==11)
x2=x2+30;
else
{
if(i!
=2)
x2=x2+31;
else
{
if(i==2&&run==1)//2月份并且是闰年
x2=x2+29;
else
x2=x2+28;
}
}
}
x=x1+x2;
/////////////////////////////////////////////////////////
////////////求得输入的年月之前有多少天——x,然后下面的事可操作
/////////////////////////////////////////////////////////
printf("-----------------------------\n");
printf("SuMoTuWeThFrSa\n");
printf("-----------------------------\n");
//////////////////////////////////////////确定星期一是第几个位置,用前面的天数余7,然后对应位置,这里假定2009年1月1日是星期4,如果不是switch规则也要更改
switch((x+1)%7)
{case0:
j=4;break;
case1:
j=5;break;
case2:
j=6;break;
case3:
j=7;break;
case4:
j=1;break;
case5:
j=2;break;
case6:
j=3;break;
}
////////////////////////////////////////定输入的月份有多少天
if(month==4||month==6||month==9||month==11)
day=30;
else
{if(month!
=2)
day=31;
else
{if(month==2&&run==1)//2月份并且是闰年
day=29;
else
day=28;
}
}
//////////////////////////////////////////////////确定j和day后,开始输出
for(i=1;iprintf("");//每个位置是4个空格
for(i=1;i<=day;i++)
{printf("%4d",i);
if((i-(7-j+1))%7==0)
printf("\n");
}
printf("\n");
}
//7.1编程实现用数组打印Fibonacci数列的前20项。
#include
voidmain()
{
longa[30],i;
a[0]=a[1]=0;
a[2]=1;
for(i=3;i<21;i++)
a[i]=a[i-1]+a[i-2]+a[i-3];
for(i=0;i<20;i++)
{
if(i!
=0&&i%5==0)
printf("\n");
printf("%d\t",a[i]);
}
}
//7.2编程实现从键盘输入的一组数中找出其中最大值和最小值。
#include
voidmain()
{
inta[10],max,min,i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
max=min=a[0];//maxmin赋初值
for(i=0;i<=9;i++)
{
if(maxmax=a[i];
if(min>a[i])
min=a[i];
}
printf("max=%d,min=%d\n",max,min);
}
//7.3编程实现用一、二维数组分别输出杨辉三角
#include//用二维数组输出杨辉三角形
voidmain()
{
inta[10][10],i,j;
for(i=0;i<10;i++)//将杨辉三角形中值为1的数输入
{
a[i][i]=1;
a[i][0]=1;
}
for(i=2;i<10;i++)//从第3行第2列开始,计算2维数组中的值,外循环控制行数
for(j=1;j<=i-1;j++)//内循环控制列,结束条件根据规律正好是行数减1
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<10;i++)//输出2维数组
for(j=0;j<10;j++)
{
printf("%5d",a[i][j]);
if(i{
printf("\n");
break;
}
}
}
/*
#include//用一维数组输出杨辉三角形
voidmain()
{
inta[10]={1},b[10]={1};
inti,j;
for(i=0;i<10;i++)//外层循环,控制输出行数,确定每行数是什么(也相当于列了),然后输出。
{
for(j=1;j<=i;j++)//确定每行的数组元素
a[j]=b[j]+b[j-1];
for(j=1;j<=i;j++)//保存到数组b中做备份
b[j]=a[j];
for(j=0;j<=i;j++)//输出这些数组元素
printf("%5d",a[j]);
printf("\n");//回车
}
}
*/
//8.1编程实现将二维数组行列元素互换。
#include
voidmain()
{
inta[3][4],b[4][3];
inti,j;
for(i=0;i<3;i++)//对数组a赋值
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)//得到数组b
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)//输出数组b
{
for(j=0;j<3;j++)
printf("%4d",b[i][j]);
printf("\n");
}
}
//8.2编程实现求二维数组中最大元素值及其行号、列号。
#include
voidmain()
{
inta[3][4],max,hang,lie;
inti,j;
for(i=0;i<3;i++)//对数组a赋值
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];hang=0;lie=0;//赋初值
for(i=0;i<3;i++)
for(j=0