C语言实验报告参考答案.docx

上传人:b****6 文档编号:8866856 上传时间:2023-02-02 格式:DOCX 页数:26 大小:29.68KB
下载 相关 举报
C语言实验报告参考答案.docx_第1页
第1页 / 共26页
C语言实验报告参考答案.docx_第2页
第2页 / 共26页
C语言实验报告参考答案.docx_第3页
第3页 / 共26页
C语言实验报告参考答案.docx_第4页
第4页 / 共26页
C语言实验报告参考答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言实验报告参考答案.docx

《C语言实验报告参考答案.docx》由会员分享,可在线阅读,更多相关《C语言实验报告参考答案.docx(26页珍藏版)》请在冰豆网上搜索。

C语言实验报告参考答案.docx

C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案

实验一熟悉C语言程序开发环境及数据描述

四、程序清单

1.编写程序实现在屏幕上显示以下结果:

Thedressislong

Theshoesarebig

Thetrousersareblack

答案:

#include<>

main()

{

printf("Thedressislong\n");

printf("Theshoesarebig\n");

printf("Thetrousersareblack\n");

}

2.改错题(将正确程序写在指定位置)

正确的程序为:

#include<>

main()

{

printf("商品名称    价格\n");

printf("TCL电视机   ¥7600\n");

printf("美的空调   ¥2000\n");

printf("SunRose键盘  ¥\n");

}

2.编写程序:

a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。

答案:

#include<>

main()

{

inta,b,c,x,y;

a=150;

b=20;

c=45;

x=a/b;

y=a/c;

printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y);

x=a%b;

y=a%c;

printf("a/b的余数=%d\n",x);

printf("a/c的余数=%d\n",y);

}

4.设变量a的值为0,b的值为-10,编写程序:

当a>b时,将b赋给c;当a<=b时,将a赋给c。

(提示:

用条件运算符)

答案:

#include<>

main()

{

inta,b,c;

a=0;

b=-10;

c=(a>b)?

b:

a;

printf("c=%d\n",c);

}

五、调试和测试结果

1.编译、连接无错,运行后屏幕上显示以下结果:

Thedressislong

Theshoesarebig

Thetrousersareblack

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",a,b,c);

问题3改scanf("%c%c%d",&a,&b,&c);这条语句

改为:

scanf("%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("y=%f\n",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

1a

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)!

=a)

y=log(fabs((a+x)/(a-x)))/(2*a);

else

y=0;

printf("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("%lf",&n);

if(n<0)

printf("nislessthan0\n");

elseif(n==0)

printf("nisequalto0\n");

else

printf("nisgreater0\n");

}

六、调试和测试结果

2

(1)Enteraandx:

56

a=5,f(6)=

Enteraandx:

55

a=5,f(5)=

2

(2)输入:

321输出:

themaxnumberis:

3

输入:

231输出:

themaxnumberis:

3

输入:

123输出:

themaxnumberis:

3

实验四循环结构程序设计

四、设计流程(算法描述)

(请写出上机内容2的算法描述)

首先求出每一个给定数的所有因子和,然后从2到5000循环,那一个数x与因子之和相等,就是完数。

五、程序清单

1.编写程序:

求1+2+3+…+100和12+22+33+…+1002。

#include<>

#include<>

intmain()

{

inti,j,sum;

sum=0;

for(i=1;i<=100;i++)

sum+=i;

printf("thesumis:

%d\n",sum);

sum=0;

for(i=1;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=0;

while(!

find)

{

if(n%5==1&&n%6==5&&n%7==4&&n%11==10)

{

printf("n=%d\n",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(inta[],intn)实现将数组中的n个数据按逆序存放。

voidantitone(inta[],intn)

{

inti,j;

intk;

i=0;

j=n-1;

while(i

{

k=a[i];

a[i]=a[j];

a[j]=k;

i+=1;

j-=1;

}

}

2.已知某数列的前两项为2和3,其后每一项为其前两项之积。

编程实现:

从键盘输入一个整数x,判断并输出x最接近数列的第几项?

#include<>

#include<>

voidMad(inta[],intn)

{

inti;

a[0]=2;

a[1]=3;

for(i=2;i

{

a[i]=a[i-1]*a[i-2];

}

}

intmain(void)

{

inta[100],x,k1,k2;

inti;

Mad(a,100);

义函数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的源程序

#include<>

#include<>

#defineFORMAT"%0d\t%s\t%d\t%c\n"

structstudent

{

intnum;

charname[20];

intage;

charsex;

};

main()

{voidinput(structstudentstu[]);

voidstat(structstudentstu[]);

structstudentstu[4];

inti;

input(stu);

for(i=0;i<4;i++)

{printf(FORMAT,stu[i].num,stu[i].name,stu[i].age,stu[i].sex);

}

stat(stu);

}

voidinput(structstudentstu[])

{inti;

for(i=0;i<4;i++)

{scanf("%d",&stu[i].num);

getchar();

scanf("%s",&stu[i].name);

getchar();

scanf("%d",&stu[i].age);

getchar();

scanf("%c",&stu[i].sex);

getchar();}

}

voidstat(structstudentstu[])

{inti,c=0,boy=0,girl=0;

for(i=0;i<4;i++)

{

if(stu[i].age<18)c+=1;

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("%5d%-20s%2c%4d\n",*,*,,;

改为:

printf("%5d%-20s%2c%4d\n",p->.num,p->name,p->sex,p->age);

实验十一共用体、位运算和文件

四、程序清单

(请写出上机内容2中的程序源代码)

(1)求100以内能同时被3和5整除的自然数,分别将它们输出到显示器屏幕和文件中。

(2)用程序读出上述文件中的数据,将它们输出到屏幕,并求它们的和。

#include<>

#include<>

#include<>

intmain(void)

{

inti,sum;

FILE*fd;

chars[10],*p,ch;

if((fd=fopen("D:

\\","wt"))==NULL)

{

printf("creatthefilefailed\n");

exit(0);

}

else

{

for(i=1;i<100;i++)

{

if((i%3==0)&&(i%5==0))

{

printf("%d,",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(1,25);

printf("pressanykeycontinue......\n");

getch();

clrscr();

gotoxy(1,1);

textcolor(YELLOW);

textbackground(BLACK);

gotoxy(10,2);

putch(0xc9);

for(i=1;i<44;i++)

putch(0xcd);

putch(0xbb);

for(i=3;i<20;i++)

{

gotoxy(10,i);putch(0xba);

gotoxy(54,i);putch(0xba);

}

gotoxy(10,20);putch(0xc8);

for(i=1;i<44;i++)

putch(0xcd);

putch(0xbc);

window(11,3,53,19);

clrscr();

for(i=0;i<16;i++)

{

gotoxy(10,i+1);

cprintf("%s",menu[i]);

}

textbackground(BLACK);

window(1,1,80,25);

gotoxy(10,21);

do{

printf("\nEnteryouchoice(0~13):

");

scanf("%s",s);

c=atoi(s);

}while(c<0||c>14);

returnc;

}

STUDENT*init()

{

returnNULL;

}

STUDENT*create()

{

inti;ints;

STUDENT*h=NULL,*info;

for(;;)

{

info=(STUDENT*)malloc(sizeof(STUDENT));

if(!

info)

{

printf("\noutofmemory");

returnNULL;

}

inputs("enterno:

(10digitals.enter0toexit)",info->no,11);

if(info->no[0]=='0')break;/*whenthefirstnumberis0,break*/

inputs("entername:

(<15letters)",info->name,15);

printf("pleaseinputscores\n");

s=0;/*sissum,beginswith0*/

for(i=0;i

{

do{

if(i==0)

printf("PleaseinputMathsscores:

");

if(i==1)

printf("PleaseinputProgramscores:

");

scanf("%d",&info->score[i]);/*socre[0]storesmathsscores,socore[1]storesprogramscores*/

if(info->score[i]>100||info->score[i]<0)

printf("baddata,repeatinput\n");

}while(info->score[i]>100||info->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("%s",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;

printf("\n\n\n*******************************STUDENT**********************\n");

printf("|rec|NO.|name|maths|program|sum|order|\n");

printf("|---|----------|---------------|-------|---------|------|-----|\n");

while(p!

=NULL)

{

i++;

printf("|%3d|%-10s|%-15s|%7d|%9d|%4.2f|%3d|\n",i,p->no,p->name,p->score[0],p->score[1],p->sum,p->order);

p=p->next;

}

printf("**********************************end***************************\n");

}

STUDENT*delete(STUDENT*h)

{

STUDENT*p,*q;

chars[11];

clrscr();

printf("pleaseenterthenumberyouwanttodelete\n");

scanf("%s",s);

q=p=h;

while(strcmp(p->no,s)&&p!

=NULL)

{

q=p;

p=p->next;

}

if(p==NULL)

printf("\nlistno%sstudent\n",s);

else

{

printf("\n\n\n******************************STUDENT**********************\n");

printf("|NO.|name|maths|program|sum|order|\n");

printf("|----------|---------------|-------|---------|------|-----|\n");

printf("|%-10s|%-15s|%7d|%9d|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->sum,p->order);

printf("********************************end*****************************\n");

getch();

if(p==h)

h=p->next;

else

q->next=p->next;

free(p);

printf("\nhavedeletedNo%sstudent\n",s);

}

return(h);

}

STUDENT*searchno(STUDENT*h)

{

STUDENT*p,*q;

chars[11];

clrscr();

printf("pleaseenterthenumberyouwanttosearch\n");

scanf("%s",s);

q=p=h;

while(strcmp(p->no,s)&&p!

=NULL)

{

q=p;

p=p->next;

}

if(p==NULL)

printf("\n%sNoFound!

\n",s);

else

{

printf("\n%sFo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1