C语言实验报告参考答案原Word格式.docx
- 文档编号:16734527
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:39
- 大小:88.08KB
C语言实验报告参考答案原Word格式.docx
《C语言实验报告参考答案原Word格式.docx》由会员分享,可在线阅读,更多相关《C语言实验报告参考答案原Word格式.docx(39页珍藏版)》请在冰豆网上搜索。
=b时,将0赋给c。
(提示:
用条件运算符)
inta,b,c;
a=0;
b=-10;
c=(a>
b)?
b:
a;
c=%d\n"
c);
五、调试和测试结果
1.编译、连接无错,运行后屏幕上显示以下结果:
2、
(1)编译、连接无错,运行后屏幕上显示以下结果:
a/b的商=7
a/c的商=3
a/b的余数=10
a/c的余数=15
(2)编译、连接无错,运行后屏幕上显示以下结果:
(a+b)/(b-c)*(c-d)=-1064.0000
3.编译、连接无错,运行后屏幕上显示以下结果:
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"
问题5把scanf("
和printf("
改成scanf("
%c%*c%c%*c%d"
\'
%c\'
\'
%d\n"
2
(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。
#include<
intmain()
scanf("
%d%d"
b);
c=a+b;
%d\n"
%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"
2
(1)输入:
1214
输出:
26
1a
2
(2)输入:
10
输出:
2.000000
实验三选择结构程序设计
四、设计流程(算法描述)
(请写出上机内容2(3)题的算法描述)
主要是两两比较,然后得出最大的数
五、程序清单
(1)输入一个整数,若大于等于0,输出提示信息“ispositive”,否则输出“isnegative”。
inta;
%d"
a);
if(a>
=0)
printf("
thenumberispositve\n"
else
thenumberisnegetive\n"
(2)输入两个整数a和b,若a>
=b时,求其积c并显示;
若a<
b时,求其商c并显示。
main()
=b)
c=%d\n"
a*b);
a/b);
(3)输入a、b、c三个整数,输出最大数。
inta,b,c,x;
%d%d%d"
x=a;
x=b;
if(x<
c)
x=c;
themaxnumberis:
六、调试和测试结果
2
thenumberispositve
输入:
0
输入:
-2
thenumberisnegetive
32输出:
c=6
23输出:
c=0
2(3)输入:
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中的所有完数。
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相等,则输出
printf("
%d"
i);
}
3.编写程序:
计算sinx的近似值,精确到10-6。
其实
所以程序
floatx,sinx,i,t;
请输入一个x值(弧度值):
"
%f"
sinx=0;
t=x;
i=1;
while(fabs(t)>
=1e-6)
{sinx=sinx+t;
t=t*(-x*x/(2*i*(2*i+1)));
i++;
sin(%.2f)=%.6f\n"
x,sinx);
1:
结果:
thesumis:
5050
thesquaresumis:
338350
2:
628496
3、输入0,输出sin(0.00)=0.000000
输入1.57,输出sin(1.57)=1.000000
输入0.5,输出sin(0.50)=0.479426
实验五函数和编译预处理
求素数的方法就是:
给定一个大于3的数x,从2到X的平方根遍历,只要有数可以被x整除,就不是素数
1.编写自定义函数longpower(intm,intn),计算
的值。
利用此函数编程序实现:
从键盘输入两个整数m和n,计算出
longpower(intm,intn)//要返回的是long型
inti;
longs;
//因为是要返回的数,所以这里也定义为long型
s=1;
=n;
s*=m;
returns;
intmain(void)
intm,n;
m,&
n);
s=%ld\n"
power(m,n));
}
2.编写自定义函数prime(intx),判断x是否为素数。
利用此函数编写程序找出3~5000中的所有素数,并输出素数的个数。
intprime(intm)
inti,k;
k=sqrt(m);
=k;
if(m%i==0)break;
if(i>
k)return1;
k=0;
for(i=3;
if(prime(i)==1){k++;
%disaprimemuber\n"
共有%d个素数\n"
k);
3.编写自定义函数count(intx),计算x的因子个数。
利用此函数找出并输出1~1000中有奇数个不同因子的整数。
intcount(intx)
intsum,i;
//记住因子的个数
=x/2;
if(x%i==0)
sum+=1;
returnsum+1;
inti,y;
{y=count(i);
if(y%2==1)printf("
%d\t"
}六、调试和测试结果
1.输入:
23
s=8
2.输出:
共有668个素数
2.
3、输出结果为:
实验六数组
(请写出上机内容1的算法描述)
设置两个变量分别指示头和尾。
第一个和最后一个元素值互换,然后头和尾变量向里移动,最终到两变量相遇为止。
从键盘输入一串整数保存到数组中,调用函数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:
for(;
x>
a[i];
i++);
k1=abs(x-a[i-1]);
k2=abs(x-a[i]);
if(k1>
k2)
themostsimilarxnumberis:
a[i]);
a[i-1]);
3.编程实现:
输入10个学生5门课的成绩并完成如下功能
(1)求每个学生的平均分;
(2)求每门课程的平均分。
#definenum10
typedefstructstudent
charname[20];
floatmath;
floatenglis;
floatcomputer;
floatChinese;
floathistory;
}STUDENT;
STUDENTstu[num];
floatscore,sum,average;
chars[10];
floatscoreMath,scoreEng,scoreCom,scoreChi,scoreHis;
for(i=0;
num;
Name:
"
gets(stu[i].name);
mathscore:
scanf("
score);
stu[i].math=score;
englisscore:
stu[i].englis=score;
computerscore:
stu[i].computer=score;
Chinesescore:
stu[i].Chinese=score;
historyscore:
stu[i].history=score;
gets(s);
//功能是接受最后一个回车符,然后下一次gets(stu[i].name);
才能起到作用
//求每个学生的平均分数
sum=0;
sum+=stu[i].math;
sum+=stu[i].englis;
sum+=stu[i].computer;
sum+=stu[i].Chinese;
sum+=stu[i].history;
average=sum/5;
%s'
saveragescoreis:
%f\n"
stu[i].name,average);
//求每门课的平均成绩
scoreMath=0;
scoreEng=0;
scoreCom=0;
scoreChi=0;
scoreHis=0;
scoreMath+=stu[i].math;
scoreEng+=stu[i].englis;
scoreCom+=stu[i].computer;
scoreChi+=stu[i].Chinese;
scoreHis+=stu[i].history;
math'
scoreMath/num);
englis'
scoreEng/num);
computer'
scoreCom/num);
Chinese'
scoreChi/num);
history'
scoreHis/num);
实验七数组和函数
(请写出上机内容2中函数的源代码)
voidfun(inttt[M][N],intpp[N])
{inti,j,max;
for(j=0;
j<
N;
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)
(1)1
(2)i(3)a[p+i]
实验八指针
(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)
设计流程(算法描述)
(请写出上机内容2中的算法描述)
1.已知一个整型数组a[5],其各元素值为4,6,8,10,12。
使用指针编程求数组元素之积。
inta[]={4,6,8,10,12},sum;
int*p;
sum=1;
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;
实验十结构体
(请写出上机内容2中的函数的源代码)
voidfun(structSTREC*a)
{inti;
a->
ave=0;
ave+=a->
s[i];
ave/=N;
五、调试和测试结果(请写出上机内容1的填空结果)
上机内容1的填空结果
(1)->
sno
(2)->
name(3)&
t
实验十一共用体与枚举文件
(请写出上机内容2中的程序源代码)
string.h>
stdlib.h>
inti,sum;
FILE*fd;
chars[10],*p,ch;
if((fd=fopen("
D:
\\shi.txt"
"
wt"
))==NULL)
creatthe\n"
exit(0);
for(i=1;
10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 参考答案