C语言实验报告参考答案完整版.docx
- 文档编号:2097081
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:29
- 大小:43.87KB
C语言实验报告参考答案完整版.docx
《C语言实验报告参考答案完整版.docx》由会员分享,可在线阅读,更多相关《C语言实验报告参考答案完整版.docx(29页珍藏版)》请在冰点文库上搜索。
C语言实验报告参考答案完整版
C语言实验报告参考答
HENsystemofficeroom[HEN16H-HENS2AHENS8Q8-HENH1688]
长沙理工大学2010C语言实验报告参考答案
实验一熟悉c语言程序开发环境及数据描述
四、程序淸单
1.编写程序实现在屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
答案:
#include<>
main()
{
printf(Z/ThedressislongArT);printf(zzTheshoesarebig\rT);printf(zzThetrousersareblack'n");}
2.改错题(将正确程序写在指定位置)
正确的程序为:
#include<>
main()
{
价格\『);¥7600\nz/):
¥2000\nz,);Y\nz/);
printf(,z商品名称printfCTCL电视机printf(”美的空调printf("SunRose键盘
2.编写程序:
&二150,b二20,c二45,编写求a/b、a/c(商)和a%b、3%C(余数)的程序。
答案:
#include<>
main()
{
inta,b,c,x,y;
d二150;
b二20;
c=45;
x=a/b;
y=a/C;
printfCa/b的商=%d\n",x);
printf("a/c的商=%d\n",y);
x=a%b;
y=a%c;
printfCa/b的余数=%d\n",x);
printfCa/c的余数=%d\rT,y);
}
4.设变量a的值为0,b的值为-10,编写程序:
当a>b时,将b赋
给C;当乳二b时,将8赋给C。
(提示:
用条件运算符)
答案:
#include<>
main()
{
inta,b,c;
a=0;
b二-10;
c=(a>b)b:
a;
printfCc=%d\n,z,c);
}
五、调试和测试结果
1.编译、连接无错,运行后屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
3、编译、连接无错,运行后屏幕上显示以下结果:
a/b的商=7
a/c的商二3
a/b的余数二10
a/c的余数二15
4.编译、连接无错,运行后屏幕上显示以下结果:
c=-10
实验二顺序结构程序设计
四、程序淸单
1.键盘输入与屏幕输出练习
问题]D
问题2改printf(*%c,%c,%d\n",a,b,c);这条语句改成:
printf("%c%c%d\n",a,b,c);
问题3改scanf("%c%c%d",&a,&b,&c);这条语句改为:
scanfC%c,%c,%d",&a,&b,&c);
问题4改printf(*%c,%c,%d\n",a,b,c);这条语句改成:
printf("\‘%c\'\‘%c\'%d\n",a,b,c);
2
(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十
六进制数形式输出。
^include<>
intmain()
{
inta,b,c;
printf("Enteraandb:
");
scanf("%o%o:
&a,&b);
c=a+b;
printf("d:
%d\n",c);
printf("x:
%x\n",c);
:
return0;
}
2
(2)编写程序:
从键盘输入两个实数a和x,按公式计算并输出y
的值:
#include<>
#include<>
intmain()
floata,x,y;scanf("%f%f:
&a,&x);
y二pow(a,5)+sin(a*x)+exp(a*x)+log(a+x);printf(/zy=%f\n/z,y);
return0;
}
3.改错题
正确的程序为:
^include<>
main()
{
inta,b,c,s;
scanf(,,%d%d%d,,>&a,&b,&c);
s=a+b+c;
printf(“%d二%d+%d+%d\n",s,a,b,c);/*输出s=a+b+c*/
printf(//%d+%d+%d=%d\n/,,a,b,c,s);/*输出a+b+c=s*/
}
五、调试和测试结果
2
(1)输入:
1214
输出:
26
la
2
(2)输入:
10
输出:
实验三选择结构程序设计
四、设计流程(算法描述)
(请写出上机内容2
(2)题的算法描述)
主要是两两比较,然后得出最大的数
五、程序清单
2
(1)输入整数x和a,计算并输出下列分段函数f(x)的值(保留2位小数),请调用log函数求自然对数,调用fabs函数求绝对值。
程序为:
^include<>
^include<>
main()
intx,a;
doubley;
printf("Enteraandx:
");
scanf("%d%d",&a,&x);
if(fabs(x)!
二&)
y=log(fabs((a+x)/(a-x)))/(2*a);
else
y二0;
printf(z,a=%d,f(%d)=%.2f\n〃,a,x,y);
}
(2)输入a、b、c三个整数,输出最大数。
#include<>
main()
{
inta,b,c,x;
scanf("%d%d%d",&a,&b,&c);
if(a>二b)
x=a;
else
x=b;
if(x x二c; printf("themaxnumberis: %d\n",x); : return0; 3.改错题 正确程序为: #include<> main() { doublen; printf("Entern: 〃);scanf&n); 辻(n<0) printf("nislessthan0\n"); elseif(n~0) printfCnisequalto0\rT); else printfC'nisgreater0\n〃); } 六、调试和测试结果 Enteraandx: 35 a二5,f(5)= 2 (2)输入: 321 输入: 231 输入: 123 2 (1)Enteraandx: 56a=5,f(6)二 输出: themaxnumberis: 3输出: themaxnumberis: 3输出: themaxnumberis: 3实验四循环结构程序设计 四、设计流程(算法描述) (请写出上机内容2的算法描述) 首先求出每一个给定数的所有因子和,然后从2到5000循环,那一个数x与因子之和相等,就是完数。 五、程序清单 1-编写程序: 求1+2+3+…+100和1~+2「+33+…+100~。 ttincludeO #include〈> intmain() { inti,j,sum; sum=0; for(i二l;i〈二100;i++) sum+二i; printf(〃thesumis: %d\n〃,sum); sum=0; for(i=l;i<=100;i++) { j二pow(i,2); sum+=j; } printf("thesquaresumis: %d\n",sum); return0; } 2.一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出2〜5000中的所有完数。 #include<> #include<> main() { inti,j,sum二0; for(i二2;i〈二5000;i++)改错题 正确的程序为: ^include<> main() intn二1; intfind=O; while(! find) { if(n%5==l&&n%6==5&&n%7==4&&n%ll==10) { printf(z/n=%d\nz,,n): find二1; } n++; } } 六、调试和测试结果 1: 结果: thesumis: 5050 thesquaresumis: 338350 2: 结果: 628496 实验五函数和预处理命令 四、设计流程(算法描述) (请写出上机内容1的算法描述) 利用循环将m乘n次 五、程序清单 1.编写自定义函数longpower(intm,intn),计算加"的值。 利用 此函数编程序实现: 从键盘输入两个整数m和n,计算出亦的值。 #include<> longpower(intm,intn) 3、输出结果为: 实验六数组 四、设计流程(算法描述) (请写出上机内容1的算法描述) 设置两个变量分别指示头和尾。 第一个和最后一个元素值互换,然后头和尾变量向里移动,最终到两变量相遇为止。 五、程序清单 1.编写程序: 从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。 自定义函数voidantitone(inttn)实现将数组屮的n个数据按逆序存放。 voidantitone(inta[],intn) { inti,j; intk; i=0; j=n-l; while(i { k二a[订; a[i]=aEj]; a[j]二k; i+二1; J-二1; } } 2.已知某数列的前两项为2和3,其后每一项为其前两项之积。 编 程实现: 从键盘输入一个整数X,判断并输出X最接近数列的第几项? ttincludeO #include<> voidMad(inta[],intn) { inti; a[0]二2; a[l]二3; for(i=2;i { a[i]二a[i~l]*a[i~2]; } } intmain(void) { inta[100],x,kl,k2; *y=(int)x; *z=x-*y; } 六、调试和测试结果 测试结果正确 实验十结构体四、程序清单 、(请写出上机内容1的源程序和上机内容2中的函数) 1、上机内容1的源程序 #includeO #include<> #defineFORMAT,z%Od\t%s\t%d\t%c\n" structstudent { intnum; charname[20]; intage; charsex; }; mainO : 、voidinput(structstudentstu[]); voidstat(structstudentstu[]); structstudentstu[4]; inti; input(stu); for(i=0;i<4;i++) {printf(FORMAT,stuEi]・num,stu[i]・name,stuEi]・age,stu[i]・sex);}stat(stu); } voidinput(structstudentstuLJ) {inti; for(i=0;i<4;i++) {scanf(,z%d/z,&stu[i]・num);getchar(); scanf(〃気s: &stuLi]・name); getchar0; scanfK&stu[i]・age);getchar0; scanf&stu[i]・sex); getchar0;} } voidstat(structstudentstu[]) {inti,c=0,boy=0,girl=0; if(stu.i]・age<18)c+=l; if(stu[i]・sex二二'm')boy++; elsegirl++; } printf(//boy\tgirl\tage<18\n//); printf("%d\t%d\t%d\n",boy,girl,c); } 2、 voidfun(structSTREC*a) {inti; a->ave=0; for(i=0;i a->ave+=a->s[i]; a->ave/=N; } 3>改错题 正确的程序为: 将printf(z,%5d%~20s%2c%4d\n? \; 改为: printf(z,%5d%~20s%2c%4d\n? \p->・num,p->nametp-〉sex,p- >age); 实验十一共用体、位运算和文件 四、程序清单 '(请写出上机内容2中的程序源代码) (1)求100以内能同时被3和5整除的自然数,分别将它们输出到显示器屏幕和文件中。 (2)用程序读出上述文件屮的数据,将它们输岀到屏幕,并求它们的和。 ^include<> #include<> #include<> intmain(void) inti,sum; FILE*fd; chars[10],*p,ch; if((fd=fopenC'D: \\/z,"wt"))二二NULL) printf(z,creatthefilefailed\n/z);exit(0); } else for(i=l;i<100;i++) if((i%3二二0)&&(i%5二二0)) printf(”i); itoa(i,s,10): Initlist", "2.Enterlist", "3.Deletearecordfromlist", "4.printlist”, "5.Searchrecordbyname", "6.SearchrecordbyNumber", "7.Savethefile", "8.Loadthefile", "9.insertrecordtolist"、 "10.sortbytotalscores", “11.sortbymathsscores", "12.sortbyprogramscores'", "13.indexonnumber", ”0.Quit"}; chars[3]; intc,i; gotoxy(l,25); printf(zzpressanykeycontinue\n"); getchO; clrscr(); gotoxy(l,1); textcolor(YELLOW); textbackground(BLACK); gotoxy(10,2); putch(0xc9); for(i=l;i<44;i++) putch(Oxcd); putch(Oxbb); for(i=3;i<20;i++) { gotoxy(10,i);putch(0xba); gotoxy(54,i);putch(0xba); } gotoxy(10,20);putch(0xc8); for(i=l;i<44;i++) putch(Oxcd); putch(Oxbc); window(11,3,53,19); clrscr(); for(i=0;i<16;i++) { gotoxy(10,i+1); cprintf(z/%s/z,menu[il); } textbackground(BLACK); window(1,1,80,25); gotoxy(10,21); do{ printfC\nEnteryouchoice(0、13); scanf("%s",s); c=atoi(s); }while(c<0c〉14); returnc; } STUDENT*init() { returnNULL; } STUDENT*create() { inti;ints; STUDENT水h二NULL严info; info=(STUDENT*)malloc(sizeof(STUDENT)); if(! info) { printf(zz\noutofmemory"); returnNULL; } inputs(''enterno: (10digitals・enter0toexit)",info-〉no,11); 辻(info->no[0]二二'O')break;/Whenthefirstnumberis0,break*/inputs('"entername: (<15letters)z,,info->name,15); printf(z/pleaseinputscores\rT); s二0;/*sissum,beginswith0*/ for(i=0;i { do{ 辻(i=0) printf("'PleaseinputMathsscores: ,z); 辻(i=l) printf(''PleaseinputProgramscores: z/); scanf(/z%d/zinfo->score[i]);Asocre[0]storesmathsscores,socore[l]storesprogramscores*/ if(info->score[i]>100info~>score[i]<0) printf("baddata,repeatinput\n〃); }while(info->score[i]>100info~>score[i]<0); s=s+info->score[i]; } info-〉sum二s; info->order=0; info->next二h; h二info; } return(h); } inputs(char*prompt,char*s,intcount) { charp[255]; do{ printf(prompt); scanf(z,%s/z,p); if(strlen(p)>count)printf("\ntoolong! \n"); }while(strlen(p)>count); strcpy(s,p); } /♦Printinfor*/ voidprint(STUDENT*h){ inti二0; STUDENT*p;clrscr(); P二h; printfCrec\0・namemathsprogramsumorder\n");printff \『); wh订e(p! 二NULL)i++; printfC%3d%-10s%~15s%7d%9d%4.2f%3d\n/z,i,p->no,p->name,p- >score[0],p->score[l],p->sum,p->order); p二p_〉next;} } STUDENT^delete(STUDENT*h) STUDENT*p,*q; chars[11]; clrscr(); printfC'pleaseenterthenumberyouwanttodelete\rT);scanfs); q二P二h; while(strcmp(p->no,s)&&p! 二NULL) Q-P;p=p->next; } 辻(p二二NULL) printfCAnlistno%sstudent\n〃,s); else n); printfC\0.namemathsprogramsumorder\n〃); printfC\rT); printfC%~10s%-15s%7d%9d%4.2f%3d\nz,,p->no,p->name,p->score[0],p->score[l],p->sum,p->order); “);getchO; if(p二二h)h=p->next; elseq->next=p->next; free(p); printfC\nhavedeletedNo%sstudent\rT,s); } return(h); } STUDENT*searchno(STUDENT*h) { STUDENT*p,*q; chars[11]; clrscr(); printfC'pleaseenterthenumberyouwanttosearch\rT); scanf(“%s",s); q二P二h; while(strcmp(p->no,s)&&p! 二NULL)q二P; p=p->next; } 辻(p二二NULL) printf(z,\n%sNoFound! \n",s);else printfC\n%sFound! \n",s); n); printfC\0・namemathsprogramsumorder\n"); printfC\n"); printfC%~10s%~15s%7d%9d%4.2f%3d\n? /,p->no,p->name,p->score[0],p->score[l],p->sum,p->order); 〃); getch(); } return(h); } voidsearch(STUDENT*h) STUDENT*p; chars[15]; clrscr(); printf("pleaseenternameforsearch'rT);scanf(“%s",s); P二h; while(strcmp(p->name,s)&&p! =NULL)p二p_>next; if(p二二NULL) printf("\n%sNoFound! \n",s);else printfCAn%sFound! \n",s); ); printfC\0.namemathsprogramsumorder\n〃); printfC\n"); printf(z/%-10s%-15s%7d%9d%4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 参考答案 完整版