c实验题目实验15及答案.docx
《c实验题目实验15及答案.docx》由会员分享,可在线阅读,更多相关《c实验题目实验15及答案.docx(19页珍藏版)》请在冰豆网上搜索。
c实验题目实验15及答案
实验一顺序结构的程序设计
1.输入x的值,根据下面的多项表达式求y的值:
y=
x5+
+2x-4
(1)编程,注意要有输入数据的提示语句。
#include""
main()
{
doublex,y;
printf("pleaseinputx:
\n");
scanf("%lf",&x);
y=4*x*x*x*x*x+12*x*x*x**x*x*x+2*x-4;
printf("y=%\n",y);
}
(2)x取下列值时,分别运行此程序
键盘输入(x=)
分析结果
运行结果
程序的错误之处
1
1
2
23
3
789
4
*10-2
5
2.任意输入一个三位整数,然后逆序输出。
如输入为123,则输出为321。
(1)编程,注意要有输入数据的提示语句
(2)用八进制的形式输出各位数字的ASCII码。
(3)输入取下列值时,分别运行此程序
键盘的输入
分析结果
运行结果
程序的错误之处
1
123
2
4567
3
1234567
#include<>
main()
{
intx,inversed,hundred,ten,indiv;
printf("pleaseinputx:
\n");
scanf("%d",&x);
hundred=x/100;
ten=(x-hundred*100)/10;
indiv=x%10;/*indiv=(x-hundred*100)-ten*10;*/
inversed=indiv*100+ten*10+hundred;
printf("theoriginalnumberis%d\n",x);
printf("theinversednumberis%d\n",inversed);
printf("theoctnumberis%0,%0,%0\n",indiv+'0',ten+'0',hundred+'0');
}
#include<>
main()
{
intx,inversed,hundred,ten,indiv;
printf("pleaseinputx:
\n");
scanf("%d",&x);
indiv=x%10;
ten=((x-indiv)/10)%10;
hundred=(((x-indiv)/10-ten)/10)%10;
inversed=indiv*100+ten*10+hundred;
printf("theoriginalnumberis%d\n",x);
printf("theinversednumberis%d\n",inversed);
printf("theoctnumberis%0,%0,%0\n",indiv+'0',ten+'0',hundred+'0');
}
实验二选择结构的程序设计
1.编程计算下面的分段函数。
4x-8-1≤x<0
y=3x2+10x-10≤x<1
8x3-3x2+2x-11≤x<2
(1)事先编好程序和流程图。
要求用if语句结构实现,注意数据类型和输入提示语句。
#include<>
main()
{
floatx,y;
printf("inputx:
\n");
scanf("%f",&x);
if(x>=-1&&x<2)
{
if(x>=-1&&x<0)
y=4*x-8;
elseif(x>=0&&x<1)
y=3*x*x+10*x-1;
else
y=8*x*x*x-3*x*x+2*x-1;
printf("y=%10.2f",y);
}
else
printf("DATAERROR!
");
}
(2)将程序运行六遍,分别从键盘上输入-1,,0,,1,这六个数,记录下运行结果并核对结果的正确性。
键盘的输入
分析结果
运行结果
调试说明
键盘输入-1
键盘输入
键盘输入0
键盘输入
键盘输入1
键盘输入
(3)再将程序运行二遍,分别从键盘上输入和2二个数,记录下运行结果并核对结果的正确性。
键盘的输入
观察到的运行结果
程序的错误之处和调试说明
键盘输入
键盘输入2
④修改程序,使之能正确处理任何数据。
当输入数据大于等于2或小于-1时,通知用户“DataError”,程序结束。
键盘的输入
运行结果
程序的错误之处和调试说明
键盘输入
键盘输入-1
键盘输入0
键盘输入1
键盘输入2
键盘输入
4.水果店有苹果,一级元/kg,二级元/kg,三级元/kg,四级kg,输入苹果的等级、数量以及顾客的付款数,显示出苹果的等级、数量、应付款数以及找给顾客的钱数。
(1)事先编好程序,分别用if语句和用switch语句结构实现,要求程序能正确处理任何数据。
当输入苹果的等级、数量以及顾客的付款数不合要求时,通知用户“DataError”,程序结束。
注意苹果等级、数量以及顾客付款数数据的类型和输入数据的提示语句。
(2)将程序运行六遍,分别从键盘上输入六组数,记录运行步骤、过程和结果,并核对结果的正确性。
键盘的输入
预期结果
运行结果
调试说明
输入1,,20
输入2,,10
输入3,,11
输入4,,
输入5,3,7
输入2,,-10
#include<>
main()
{
floatweight,money,paid;
intrank;
printf("inputrank,weight,money:
\n");
scanf("%d",&rank);
printf("inputweight:
\n");
scanf("%f",&weight);
printf("inputmoney:
\n");
scanf("%f",&money);
switch(rank)
{
case1:
paid=*weight;break;
case2:
paid=*weight;break;
case3:
paid=*weight;break;
case4:
paid=*weight;break;
default:
paid=0;
}
if(weight<=0||money<=0||paid<=0||(money-paid)<0)
printf("DATAERROR!
");
else
{
printf("therankis%d!
",rank);
printf("theweightis%10.1f!
",weight);
printf("paid%10.2fyuan",paid);
printf("thechangeis%10.2fyuan",money-paid);
}
}
实验三循环结构的程序设计
1.编程序计算1!
+2!
+3!
+4!
+5!
(1)分别用单层循环和双层循环编写此程序,作出流程图。
单层循环
#include<>
main()
{
intsum=0,p=1;
intn,i;
printf("pleaseinputn:
\n");
scanf("%d",&n);
printf("nis%d\n",n);
for(i=1;i<=n;i++)
{
p=p*i;
sum=sum+p;
}
printf("Theresultis%d:
\n",sum);
}
双层循环:
#include<>
main()
{
intsum=0,p;
intn,i,j;
printf("pleaseinputn:
\n");
scanf("%d",&n);
printf("nis%d\n",n);
for(i=1;i<=n;i++)
{
for(j=1,p=1;j<=i;j++)
{
p=p*j;
}
sum=sum+p;
}
printf("Theresultis%d:
\n",sum);
}
(2)分析两种编程的差别。
单层循环效率更高,计算量小。
(3)若计算
,运行程序观察程序结果是否正确,若有错误如何修改。
不正确,数据越界,将intsum=0,p=1;改为longsum=0,p=1;
printf("Theresultis%d:
\n",sum);改为printf("Theresultis%ld:
\n",sum);
(4)若计算
,运行程序观察程序结果是否正确,若有错误如何修改。
不正确,数据越界,将intsum=0,p=1;改为unsignedlongsum=0,p=1;
printf("Theresultis%d:
\n",sum);改为printf("Theresultis%ld:
\n",sum);
2.编写程序并上机调试
电视大奖赛有20名评委给选手评分。
评分规则是:
去掉1个最高分,去掉1个最低分,其余18名评委的平均分选手的得分。
设计评分程序。
#include<>
#defineNUM20
main()
{
intsmin=0,smax=0,score;
floatsum=0;
printf("pleaseinputplayer'sscore:
\n");
scanf("%d",&score);
smax=smin=score;
for(i=1;i{
scanf("%d",&score);
if(score>smax)smax=score;
if(scoresum=sum+score;
}
sum=sum–smax–smin;
printf("Theresultis%6.2f:
\n",sum/(NUM-2));
}
实验四数组和指针应用的程序设计
1.定义一个有10个元素的一维数组count,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排序后的数组输出。
(1)作出流程图。
(2)用数组的方法编写程序(排序算法可自己选择)
#defineN8
#include""
main()
{
intcount[N+2],i,j,n;
printf("input%dnumbers:
\n",N);
for(i=1;i<=N;i++)
scanf("%d",&count[i]);
printf("\n");
for(i=1;ifor(j=i+1;j<=N;j++)
if(count[j]>count[i])
{
n=count[i];
count[i]=count[j];
count[j]=n;
}
printf("thesortednumbers:
\n");
for(i=1;i<=N;i++)
printf("%d",count[i]);
}
#defineN8
#include""
main()
{
intcount[N+2],i,j,n;
printf("input%dnumbers:
\n",N);
for(i=1;i<=N;i++)
scanf("%d",&count[i]);
printf("\n");
for(i=1;ifor(j=1;jif(count[j]{
n=count[j];
count[j]=count[j+1];
count[j+1]=n;}
printf("thesortednumbers:
\n");
for(i=1;i<=N;i++)
printf("%d",count[i]);
}
(3)用指针的方法编写程序(排序算法可自己选择)
#defineN8
#include""
main()
{
intcount[N+2],i,j,n,*p;
p=count;
printf("input%dnumbers:
\n",N);
for(i=1;i<=N;i++)
scanf("%d",p+i);
printf("\n");
for(i=1;ifor(j=i+1;j<=N;j++)
if(*(p+j)>*(p+i))
{
n=*(p+i);
*(p+i)=*(p+j);
*(p+j)=n;
}
printf("thesortednumbers:
\n");
for(i=1;i<=N;i++)
printf("%d",*(p+i));
}
#defineN8
#include""
main()
{
intcount[N+2],i,j,n,*p;
p=count;
printf("input%dnumbers:
\n");
for(i=1;i<=N;i++)
scanf("%d",p+i);
printf("\n");
for(i=1;ifor(j=1;jif(*(p+j)<*(p+j+1))
{
n=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=n;
}
printf("thesortednumbers:
\n");
for(i=1;i<=8;i++)
printf("%d",*(p+i));
}
2.输入2个字符串,将这两个字符串连接起来并输出,再将连接后的字符串反向。
(1)分别输出连接后的字符串和反向后的字符串,并求连接后的字符串长度。
(2)用字符数组的方法编写程序
#defineNUM100
#include""
#include""
main()
{
charstr1[NUM],str2[NUM],str3[NUM]=;
inti,len;
printf("inputstring1:
\n");
gets(str1);
printf("inputstring2:
\n");
gets(str2);
strcat(str1,str2);
printf("theconcatenationstrings:
%s\n",str1);
len=strlen(str1);
printf("theconcatenationstrings'slen:
%d\n",len);
for(i=0;istr3[i]=str1[len-i-1];
str3[i]='\0';
printf("thereversestrings:
%s\n",str3);
}
(3)用指针的方法编写程序
#defineNUM100
#include""
main()
{
charstr1[NUM],str2[NUM],str3[NUM],*p1,*p2,*p3;
inti,len;
p1=str1;
p2=str2;
p3=str3;
printf("inputstring1:
\n");
gets(p1);
printf("inputstring2:
\n");
gets(p2);
strcat(p1,p2);
printf("theconcatenationstrings:
%s\n",p1);
len=strlen(p1);
printf("theconcatenationstrings'slen:
%d\n",len);
for(i=0;i*(p3+i)=*(p1+len-i-1);
*(p3+i)='\0';
printf("thereversestrings:
%s\n",p3);
}
实验五函数应用的程序设计
编写一函数,统计字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出统计结果。
(1)作出流程图
(2)用值传送的方式实现函数调用,分别从键盘上输入三个不同字符串,并记录下运行的过程和结果。
#include""
intstat1(charc1)
{
if(c1>='a'&&c1<='z'||c1>='A'&&c1<='Z')
return0;
elseif(c1=='')
return1;
elseif(c1>='0'&&c1<='9')
return3;
else
return4;
}
main()
{
charc;
inti,letters=0,space=0,digit=0,others=0;
printf("pleaseinputsomecharacters\n");
while((c=getchar())!
='\n')
{
switch(stat1(c))
{
case0:
letters++;break;
case1:
space++;break;
case2:
digit++;break;
default:
others++;
}
}
printf("stat2:
char=%dspace=%ddigit=%dothers=%d\n",
letters,space,digit,others);
}
(3)用字符数组传送的方式实现函数调用,分别从键盘上输入三个不同字符串,并记录下运行的过程和结果。
#defineN100
#include""
#include""
intletters=0,space=0,digit=0,others=0;
voidstat2(charp2[N])
{
inti;
for(i=0;p2[i]!
='\0';i++)
{
if(p2[i]>='a'&&p2[i]<='z'||p2[i]>='A'&&p2[i]<='Z')
letters++;
elseif(p2[i]=='')
space++;
elseif(p2[i]>='0'&&p2[i]<='9')
digit++;
else
others++;
}
}
main()
{
charstr[N];
printf("pleaseinputsomecharacters\n");
gets(str);
stat2(str);
printf("stat2:
char=%dspace=%ddigit=%dothers=%d\n",
letters,space,digit,others);
}
(4)用指针变量传送的方式实现函数调用,分别从键盘上输入三个不同字符串,并记录下运行的过程和结果。
#defineN100
#include""
#include""
intletters=0,space=0,digit=0,others=0;
voidstat3(char*p3)
{
for(;*p3!
='\0';p3++)
{
if(*p3>='a'&&*p3<='z'||*p3>='A'&&*p3<='Z')
letters++;
elseif(*p3=='')
space++;
elseif(*p3>='0'&&*p3<='9')
digit++;
else
others++;
}
}
main()
{
charstr[N];
printf("pleaseinputsomecharacters\n");
gets(str);
stat3(str);
printf("stat3:
char=%dspace=%ddigit=%dothers=%d\n",
letters,space,digit,others);
}