精选资料C语言实验报告参考答案Word文档格式.docx
- 文档编号:18400054
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:40
- 大小:39.60KB
精选资料C语言实验报告参考答案Word文档格式.docx
《精选资料C语言实验报告参考答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《精选资料C语言实验报告参考答案Word文档格式.docx(40页珍藏版)》请在冰豆网上搜索。
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((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("
nislessthan0\n"
elseif(n==0)
printf("
nisequalto0\n"
nisgreater0\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)
{inti;
for(i=n2;
i>
=1;
i--)
if(n1%i==0&
n2%i==0)
{break;
returni;
intzxgbs(intn1,intn2)
for(i=n1;
=n1*n2;
if(i%n1==0&
i%n2==0)
{intn1,n2,t;
%d%d"
n1,&
n2);
if(n1<
n2)
{t=n1;
n1=n2;
n2=t;
zdgys=%dzxgbs=%d"
zdgys(n1,n2),zxgbs(n1,n2));
3、改错题
正确程序如下:
doublefact(doublen);
doublemulti(doublen);
doublesum,item,eps;
eps=1E-6;
sum=1;
item=1;
item>
=eps;
{item=fact(i)/multi(2*i+1);
sum=sum+item;
PI=%0.5lf\n"
sum*2);
return0;
doublefact(doublen)
doubleres=1;
res=res*i;
returnres;
doublemulti(doublen)
for(i=3;
i=i+2)
六、调试和测试结果
1、输入:
23
s=8
2、输入:
n1=24n2=16
zdgys=8zxgbs=48
2.
3、输出结果为:
实验六数组
设置两个变量分别指示头和尾。
第一个和最后一个元素值互换,然后头和尾变量向里移动,最终到两变量相遇为止。
从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。
自定义函数voidantitone(inta[],intn)实现将数组中的n个数据按逆序存放。
string.h>
//包含数组初始化函数的头文件
#defineM100
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++;
j--;
voidmain()
{
intarray[100];
intn,i,m;
请输入要输入整数的个数:
%d"
memset(array,0,sizeof(array));
//数组初始化语句
请输入整数:
for(i=0;
n;
array[i]);
antitone(array,n);
for(m=0;
m<
m++)
array[m]);
2.已知某数列的前两项为2和3,其后每一项为其前两项之积。
编程实现:
从键盘输入一个整数x,判断并输出x最接近数列的第几项?
voidMad(inta[],intn)
a[0]=2;
a[1]=3;
a[i]=a[i-1]*a[i-2];
inta[100],x,k1,k2;
Mad(a,100);
//产生序列
inputx:
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最接近第5项
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
实验八指针
(请写出上机内容2中的函数)
求出每个位上的数字,然后放在千位上的数字乘以1000,放在百位上的数字乘以100,放在10位上的数字乘以10,然后相加。
voidfun(inta,intb,long*c)
inta10,a1,b10,b1;
a10=a/10;
a1=a%10;
b10=b/10;
b1=b%10;
*c=a10*1000+b1*100+a1*10+b10;
五、调试和测试结果(请写出上机内容1的输出结果)
1
(1)输出结果为:
8,7,7,8
(2)6
(3)
(1)x=10y=20
(2)x=20y=10
(4)【1】 int*p 【2】 &
a[i] 【3】p[i]
123456输出:
123456
实验九指针、函数和数组综合程序设计
设计流程(算法描述)
(请写出上机内容2中的算法描述)
1.已知一个整型数组a[5],其各元素值为4,6,8,10,12。
使用指针编程求数组元素之积。
inta[]={4,6,8,10,12},sum;
int*p;
for(p=a;
p<
a+5;
p++)
sum*=*p;
2.定义函数intf(char*x,chary)判断x所指的字符串中是否包含字符y,若是则函数返回1,否则返回1。
intf(char*x,chary)
char*p;
for(p=x;
*p!
\0'
;
if(*p==y)
%c\n"
*p);
return1;
3.定义函数voidf(floatx,int*y,float*z)将x的整数部分存于y所指的存储单元,x的小数部分存于x所指的存储单元。
voidf(floatx,int*y,float*z)
*y=(int)x;
*z=x-*y;
测试结果正确
实验十结构体
(请写出上机内容1的源程序和上机内容2中的函数)
1、上机内容1的源程序
#defineFORMAT"
%0d\t%s\t%d\t%c\n"
structstudent
intnum;
charname[20];
intage;
charsex;
};
{voidinput(structstudentstu[]);
voidstat(structstudentstu[]);
structstudentstu[4];
input(stu);
4;
{printf(FORMAT,stu[i].num,stu[i].name,stu[i].age,stu[i].sex);
stat(stu);
voidinput(structstudentstu[])
for(i=0;
{scanf("
stu[i].num);
getchar();
%s"
stu[i].name);
stu[i].age);
stu[i].sex);
voidstat(structstudentstu[])
{inti,c=0,boy=0,girl=0;
{
if(stu[i].age<
18)c+=1;
if(stu[i].sex=='
m'
)boy++;
elsegirl++;
boy\tgirl\tage<
18\n"
%d\t%d\t%d\n"
boy,girl,c);
2、
voidfun(structSTREC*a)
{inti;
a->
ave=0;
ave+=a->
s[i];
ave/=N;
将printf("
%5d%-20s%2c%4d\n"
,*p.num,*p.name,p.sex,p.age);
改为:
%5d%-20s%2c%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精选 资料 语言 实验 报告 参考答案