c语言上机标准答案Word格式.docx
《c语言上机标准答案Word格式.docx》由会员分享,可在线阅读,更多相关《c语言上机标准答案Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
y=a%c;
a/b的余数=%d\n"
a/c的余数=%d\n"
4.设变量a的值为0,b的值为-10,编写程序:
当a>
b时,将b赋给c;
当a<
=b时,将a赋给c。
(提示:
用条件运算符)
inta,b,c;
a=0;
b=-10;
c=(a>
b)?
b:
a;
c=%d\n"
c);
五、调试和测试结果
1.编译、连接无错,运行后屏幕上显示以下结果:
3、编译、连接无错,运行后屏幕上显示以下结果:
a/b的商=7
a/c的商=3
a/b的余数=10
a/c的余数=15
4.编译、连接无错,运行后屏幕上显示以下结果:
c=-10
实验二顺序结构程序设计
1.键盘输入与屏幕输出练习
问题1D。
问题2改printf("
%c,%c,%d\n"
a,b,c);
这条语句
改成:
printf("
%c%c%d\n"
问题3改scanf("
%c%c%d"
&
a,&
b,&
c);
改为:
scanf("
%c,%c,%d"
问题4改printf("
\’%c\’\’%c\’%d\n"
2
(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。
intmain()
Enteraandb:
"
scanf("
%o%o"
b);
c=a+b;
d:
%d\n"
x:
%x\n"
return0;
2
(2)编写程序:
从键盘输入两个实数a和x,按公式计算并输出y的值:
math.h>
floata,x,y;
%f%f"
x);
y=pow(a,5)+sin(a*x)+exp(a*x)+log(a+x);
y=%f\n"
3.改错题
inta,b,c,s;
%d%d%d"
s=a+b+c;
%d=%d+%d+%d\n"
s,a,b,c);
/*输出s=a+b+c*/
%d+%d+%d=%d\n"
a,b,c,s);
/*输出a+b+c=s*/
2
(1)输入:
1214
输出:
26
1a
2
(2)输入:
10
输出:
2.000000
实验三选择结构程序设计
四、设计流程(算法描述)
(请写出上机内容2
(2)题的算法描述)
主要是两两比较,然后得出最大的数
五、程序清单
2
(1)输入整数x和a,计算并输出下列分段函数f(x)的值(保留2位小数),请调用log函数求自然对数,调用fabs函数求绝对值。
程序为:
intx,a;
doubley;
Enteraandx:
%d%d"
if(fabs(x)!
=a)
y=log(fabs((float)(a+x)/(a-x)))/(2*a);
else
y=0;
a=%d,f(%d)=%.2f\n"
a,x,y);
(2)输入a、b、c三个整数,输出最大数。
inta,b,c,x;
if(a>
=b)
x=a;
x=b;
if(x<
c)
x=c;
themaxnumberis:
正确程序为:
doublen;
Entern:
%lf"
n);
if(n<
0)
printf("
%lfislessthan0\n"
n);
elseif(n==0)
printf("
%lfisequalto0\n"
%lfisgreater0\n"
六、调试和测试结果
2
(1)Enteraandx:
56
a=5,f(6)=0.24
Enteraandx:
55
a=5,f(5)=0.00
321输出:
3
输入:
231输出:
输入:
123输出:
实验四循环结构程序设计
(请写出上机内容2的算法描述)
首先求出每一个给定数的所有因子和,然后从2到5000循环,那一个数x与因子之和相等,就是完数。
1.编写程序:
求1+2+3+…+100和12+22+33+…+1002。
inti,j,sum;
sum=0;
for(i=1;
i<
=100;
i++)
sum+=i;
thesumis:
sum);
sum=0;
for(i=1;
{
j=pow(i,2);
sum+=j;
}
thesquaresumis:
2.一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出2~5000中的所有完数。
main()
inti,j,sum=0;
for(i=2;
=5000;
i++)//遍历从2到5000的所有数
sum=0;
for(j=1;
j<
=i/2;
j++)//找出给定整数X的所有因子和
{
if(i%j==0)
sum+=j;
}
if(i==sum)//sum为因子和,如果和i相等,则输出
%d"
i);
}
3.改错题
intn=1;
intfind=0;
while(!
find)
if(n%5==1&
&
n%6==5&
n%7==4&
n%11==10)
n=%d\n"
n);
find=1;
n++;
1:
结果:
thesumis:
5050
thesquaresumis:
338350
2:
628496
实验五函数和预处理命令
(请写出上机内容1的算法描述)
利用循环将m乘n次
1.编写自定义函数longpower(intm,intn),计算
的值。
利用此函数编程序实现:
从键盘输入两个整数m和n,计算出
longpower(intm,intn)//要返回的是long型
inti;
longs;
//因为是要返回的数,所以这里也定义为long型
s=1;
=n;
s*=m;
returns;
intmain(void)
intm,n;
m,&
s=%ld\n"
power(m,n));
}
2、写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
1.源程序如下:
intzdgys(intn1,intn2)
{inty,i;
for(i=n2;
=1;
i--)
if(n1%i==0&
n2%i==0)
{y=i;
break;
returny;
intzxgbs(intn1,intn2)
for(i=n1;
=n1*n2;
if(i%n1==0&
i%n2==0)
{intn1,n2,t;
n1=%dn2=%d"
n1,&
n2);
if(n1<
n2)
{t=n1;
n1=n2;
n2=t;
zdgys=%dzxgbs=%d"
zdgys(n1,n2),zxgbs(n1,n2));
3、改错题
正确程序如下:
intfact(intn);
intmulti(intn);
{inti;
doublesum,item,eps;
eps=1E-6;
sum=1;
item=1;
item>
=eps;
{item=fact(i)/multi(2*i+1);
sum=sum+item;
printf(“PI=%0.5lf\n”,sum*2);
return0;
intfact(intn)
intres=1;
for(i=0;
res=res*i;
returnres;
intmulti(intn)
for(i=3;
i=i+2)
六、调试和测试结果
1、输入:
23
s=8
2、输入:
n1=24n2=16
zdgys=8zxgbs=48
2.
3、输出结果为:
实验六数组
设置两个变量分别指示头和尾。
第一个和最后一个元素值互换,然后头和尾变量向里移动,最终到两变量相遇为止。
从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。
自定义函数voidantitone(inta[],intn)实现将数组中的n个数据按逆序存放。
voidantitone(inta[],intn)
inti,j;
intk;
i=0;
j=n-1;
while(i<
j)
k=a[i];
a[i]=a[j];
a[j]=k;
i+=1;
j-=1;
2.已知某数列的前两项为2和3,其后每一项为其前两项之积。
编程实现:
从键盘输入一个整数x,判断并输出x最接近数列的第几项?
voidMad(inta[],intn)
a[0]=2;
a[1]=3;
n;
a[i]=a[i-1]*a[i-2];
inta[100],x,k1,k2;
Mad(a,100);
//产生序列
inputx:
%d"
for(;
x>
a[i];
i++);
k1=abs(x-a[i-1]);
k2=abs(x-a[i]);
if(k1>
k2)
x最接近第%d项\n"
i+1);
x最接近第%d项\n"
3、源程序如下:
{
charc[15];
inti,word=0,num=0,space=0;
=14;
scanf("
%c"
c[i]);
{if(c[i]=='
'
)space++;
if(c[i]>
='
0'
c[i]<
9'
)num++;
if(c[i]>
'
a'
z'
)word++;
字符:
%d数字:
%d空格:
word,num,space);
12345
54321
2、输入:
110
x最接近第6项
3、输入:
sd234kj64jkmjk
9数字:
5空格:
1
实验七数组和函数综合程序设计
(请写出上机内容2、3中源程序)
2、原程序求得的是下三角形,经改进调试之后的程序为:
#include<
#defineN6
inti,j,sum=0;
inta[N][N]={0};
input5×
5data:
\n"
for(i=1;
N;
Inputthe%dlinedata:
for(j=1;
j++)
a[i][j]);
%5d"
a[i][j]);
for(i=1;
for(j=N-1;
j>
=i;
j--)
sum=sum+a[i][j];
sum=%d\n"
3、
voidfun(inttt[M][N],intpp[N])
{inti,j,max;
for(j=0;
j<
j++)
{max=tt[0][j];
M;
i++)if(tt[i][j]>
max)max=tt[i][j];
pp[j]=max;
(写出上机内容1中填空的内容)
1、
(1)sum=0
(2)t[i][i](3)1