C语言实验报告程序.docx

上传人:b****5 文档编号:28563331 上传时间:2023-07-19 格式:DOCX 页数:18 大小:22.16KB
下载 相关 举报
C语言实验报告程序.docx_第1页
第1页 / 共18页
C语言实验报告程序.docx_第2页
第2页 / 共18页
C语言实验报告程序.docx_第3页
第3页 / 共18页
C语言实验报告程序.docx_第4页
第4页 / 共18页
C语言实验报告程序.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言实验报告程序.docx

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

C语言实验报告程序.docx

C语言实验报告程序

常见错误解析

1.Error:

Undefinedsymbol‘s’infunctionmain

主函数中s变量未定义。

2.Warning:

Possibleuseof‘sum’beforedefinitioninfunctionmain

该错误最有可能是因为变量sum未赋初值。

3.Error:

Statementmissing;infunctionmain

应考察当前的行或是上一行,看是否丢失了分号。

4.注意:

if语句、for和while语句之后所跟的括号后面,不要随意的加分号。

5.一定要区分开“=”和“==”;“/”和“%”。

“!

=”是“不等于”运算符

 

实验一顺序结构的使用

1.编程求下列表达式的值,并与手工计算结果相比较。

若有”inta=2,b=3;floatx=3.5,y=2.5;”,求(float)(a+b)/2+(int)x%(int)y。

main()

{inta=2,b=3;

floatx=3.5,y=2.5;

printf(“%f”,(float)(a+b)/2+(int)x%(int)y);

}

2.有两个变量a=2,b=5,编写程序,交换它们的值。

main()

{inta=2,b=5,t;

t=b;

b=a;

a=t;

printf(“%d,%d\n”,a,b);

}

3.编写一个程序实现求表达式

的值。

#include

main()

{

floata,b,sum;

scanf(“%f%f”,&a,&b);

sum=a+sqrt(b);

printf(“%f\n”,sum);

}

实验教材P19选择题答案:

1~5题CCDAD

实验二选择结构的使用

1.编写程序:

由键盘输入任意3个数,按降序打印此3个数。

main()

{inta,b,c,t;

scanf(“%d%d%d”,&a,&b,&c);

if(a

{t=a;a=b;b=t;}

if(a

{t=a;a=c;c=t;}

if(b

{t=b;b=c;c=t;}

printf(“%d%d%d\n”,a,b,c);

}

2.输入百分制的分数,要求按下列分数段输出成绩等级:

90分以上为A,80~89为B,70~79为C,60~69为D,小于60分为E(要求用switch语句实现,可参考本实验中“预备知识2.多分支选择结构”中的“例题”来做)。

main()

{intscore,n;

scanf(“%d”,&score);

n=score/10;

switch(n)

{case10:

case9:

printf(“A\n”);

case8:

printf(“B\n”);

case7:

printf(“C\n”);

case6:

printf(“D\n”);

default:

printf(“E\n”);

}

}

3.从键盘输入3个数,它们分别代表3条线段的长度。

编写程序判断:

这3条线段能否组成三角形,若能请进一步判断三角形的类型(等边三角形、直角三角形)。

参考图2-2编写程序。

main()

{floata,b,c;

scanf(“%f%f%f”,&a,&b,&c);

if(a+b>c&&b+c>a&&a+c>b)

{printf(“Itisatriangle!

”);

if(a==b&&b==c)

printf(“Itisanequaltriangle!

”);

elseif(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)

printf(“Itisarighttriangle!

”);

elseprintf(“Itisageneraltriangle!

);

}

elseprintf(“Itisnotatriangle!

”);

}

4.阅读程序,给出结果,上机调试程序,验证其运行结果与阅读结果是否相同。

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;break;

}

printf(“a=%d,b=%d\n”,a,b);

}

程序结果:

a=2,b=1

实验三循环结构的使用

1.求分数序列2/1,-3/2,5/3,-8/5,……的前10项和。

main()

{inti;

floats=0,a=2,b=1,t=1,c;

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

{s+=a/b*t;

c=a;a=a+b;b=c;t=-t;/*a=a+b;b=a-b;*/

}

printf(“%.4f\n”,s);

}

2.求100~200之间所有能被3和5整除的数之和。

main()

{inti,sum=0;

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

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

sum=sum+i;

printf(“%d\n”,sum);

}

3.求26个小写英文字母的ASCII码值之和,存入变量sum中,并求出sum值的位数,存入变量k中。

#include

main()

{intsum,k;

charch;

intt;

sum=0,k=0;

for(ch=‘a’;ch<=‘z’;ch++)

sum+=ch;

t=sum;

while(t!

=0)

{t=t/10;

k++;

}

printf(“sum=%dk=%d\n”,sum,k);

}

4.有一分数序列:

1/2,-1/3,1/4,-1/5,1/6……,求这个序列的前m项之和,将总和存放到sum变量中,并输出总和。

#include

main()

{inti,m;

floats=0;

scanf(“%d”,&m);

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

s+=1.0/(i+1)*pow(-1,i+1);

printf(“%.4f\n”,s);

}

5.求一个正整数m的所有约数之和,存入变量sum中,并输出sum。

例如:

如果m为12,则它的约数为2,3,4,6。

main()

{inti,m,sum=0;

scanf(“%d”,&m);

for(i=2;i

if(m%i==0)

sum=sum+i;

printf(“%d\n”,sum);

}

6.打印九九乘法表

main()

{inti,j=1;

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

{for(j=1;j<=i;j++)

printf(“%d*%d=%d”,i,j,i*j);

printf("\n");

}

}

7.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

Main()

{intletter=0,space=0,num=0,other=0;

charc;

while((c=getchar())!

=’\n’)

if((c>=’A’&&c<=’Z’)||(c>=’a’&&c<=’z’))

letter++;

elseif(c==’’)

space++;

elseif(c>=’0’&&c<=’9’)

num++;

elseother++;

printf(“%d,%d,%d,%d”,letter,space,num,other);

}

 

实验四数组的使用

1.编一个程序,将两个一维数组中的对应元素值相加后显示出来。

main()

{inti,a[10],b[10];

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

scanf(“%d”,&a[i]);

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

{scanf(“%d”,&b[i]);

printf(“%4d”,a[i]+b[i]);

}

}

2.已知10名学生的成绩已存入数组a中,计算前m位同学的平均成绩,并存入变量aver中,输出aver。

main()

{inti,a[10],sum=0;

floataver;

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

{scanf(“%d”,&a[i]);

sum+=a[i];

}

aver=sum/10.0

printf(“%f”,aver);

}

3.已知10位同学的英语成绩分别为90,61,92,79,45,67,86,95,63,79,用“冒泡法”对此成绩由大到小排序。

main()

{inta[10]={90,61,92,79,45,67,86,95,63,79},i,j,t;

for(j=0;j<=8;j++)

for(i=0;i<=8-j;i++)

if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

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

printf("%4d",a[i]);

}

4.改错:

给一个实型数组中的前5个元素输入数据后,将这5个元素的值相加再赋给最前面的元素并输出。

请分步运行的方法调试,并观察数组a中个元素的值。

main()

{floata[10];

inti;

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

scanf(“%f”,&a[i]);

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

a[0]=a[0]+a[i];

printf("%f",a[0]);

}

5.从键盘输入任意一个十进制正整数m(假设m<=100),然后转换成用二进制表示的字符串,存入数组a中,然后输出a。

例如:

如果m为6,程序应该输出110。

main()

{

intm,i=0,a[8],j;

scanf(“%d”,&m);

while(m!

=0)

{a[i]=m%2;

m=m/2;

i++;

}

for(j=i-1;j>=0;j--)

printf("%d",a[j]);

}

6.从键盘输入一行字符串到数组a中,求其中数字字符的个数,存入变量count中,并输出count。

例如,若输入"MyTelnumberis86142222.",则输出8。

#include

main()

{

chara[30];

intcount=0,i;

gets(a);

for(i=0;a[i]!

=’\0’;i++)

if(a[i]>=’0’&&a[i]<=’9’)

count++;

printf("%d",count);

}

 

7.已知数组a中10名学生的成绩,求不低于m分的人数,并存入变量count中,并输出count。

main()

{

intcount=0,a[10],i,m;

scanf(“%d”,&m);

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

{scanf(“%d”,&a[i]);

if(a[i]>=m)

count++;

}

printf("%d",count);

}

8.从键盘输入字符串”Iamastudent.”,并求此字符串的长度(不能用strlen函数).

#include

main()

{

chara[30];

inti;

gets(a);

for(i=0;a[i]!

=’\0’;i++);

printf("%d",i);

}

9.将数组b中的字符串拷贝到字符数组a中(不允许使用strcpy函数)。

#include

main()

{

chara[30],b[30]={“shenyanginstitute”};

inti;

for(i=0;b[i]!

=’\0’;i++)

a[i]=b[i];

a[i]=’\0’;

puts(a);

}

10.编程序求一行字符串(<20)中小写字母的ASCII码值之和.

#include

main()

{charstr[20];

intsum=0,i;

gets(str);

for(i=0;str[i]!

='\0';i++)

if(str[i]>='a'&&str[i]<='z')

sum+=str[i];

printf("\n%d",sum);}

实验五函数的使用

1.写一个函数求3个整数中的最大数,3个数从主函数传递给该函数,并在主函数中输出最大数。

指出什么是形参、什么是实参,哪条语句是函数调用语句。

max(inta,intb,intc)

{intd;

if(a>=b)d=a;

elsed=b;

if(d

returnd;

}

main()

{intr,s,t,m;

printf(“\npleaseenterthreenumbers:

”);

scanf(“%d,%d,%d”,&r,&s,&t);

m=max(r,s,t);

printf(“\nmaxis:

%d”,m);

}

2.编写一个函数,实现将具有10个元素的整型数组按逆序存放,要求在主函数中进行数组的输入与输出。

intinv(inta[],intn)

{inti,t;

for(i=0;i

{t=a[i];

a[i]=a[n-1-i];

a[n-1-i]=t;

}

}

main()

{inta[10],i;

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

scanf(“%d”,&a[i]);

inv(a,10);

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

printf(“%3d”,a[i]);

}

3.编写一个函数,求10个学生成绩中的最高分和最低分,要求在主函数中进行数组的输入和结果的输出。

intmax;

intmaxmin(inta[],intn)

{intx,i;

max=a[0];

x=a[0];

for(i=1;i

{if(max

if(x>a[i])x=a[i];

}

returnx;

}

main()

{inti,a[10],m;

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

scanf(“%d”,&a[i]);

m=maxmin(a,10);

printf(“\nmaxis:

%d\nminis:

%d”,max,m);

}

4.递归计算xn,n为整数,参考下面的递归模型设计。

1n<=0

fact(x,n)=

x*fact(x,n-1)n>0

intfact(intx,intn)

{

if(n<=0)return1;

elsereturnx*fact(x,n-1);

}

main()

{intx,n,m;

scanf(“%d,%d”,&x,&n);

m=fact(x,n);

printf(“\n%d”,m);

}

5.编写函数mystrlen(chara[]),其功能是求字符串a的长度。

用主函数main()调用函数mystrlen,以验证mystrlen的正确性。

intmystrlen(chara[])

{

 

}

main()

{charm[10]=”Howareyou”;

intcount;

count=mystrlen(m);

printf(“\n%d”,count);

}

6.设计一个计算器,能实现实数的加、减、乘、除运算。

要求:

采用模块化设计方法,设计一个功能菜单,每个功能用一个函数来完成。

floatadd(floatx,floaty)

{floatz;

z=x+y;

returnz;

}

floatsub(floatx,floaty)

{floatz;

z=x-y;

returnz;

}

floatmul(floatx,floaty)

{floatz;

z=x*y;

returnz;

}

floatdiv(floatx,floaty)

{floatz;

z=x/y;

returnz;

}

main()

{floata,b,c;

charn;

clrscr();

scanf("%c",&n);

scanf("%f,%f",&a,&b);

switch(n)

{case'+':

c=add(a,b);printf("addis:

%5.2f\n",c);break;

case'-':

c=sub(a,b);printf("subis:

%5.2f\n",c);break;

case'*':

c=mul(a,b);printf("mulis:

%5.2f\n",c);break;

case'/':

c=div(a,b);printf("divis:

%5.2f\n",c);break;

default:

printf("Error!

\n");

}

}

P1537.4已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

main()

{inta[10]={1,3,4,6,15,23,59,70,76},i,m,t;

scanf(“%d”,&m);

a[9]=m;

for(i=9;i>=0;i--)

if(a[i]

{t=a[i];a[i]=a[i-1];a[i-1]=t;}

elsebreak;

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

printf(“%3d”,a[i]);

}

自定义函数形式实现:

fun(intw[],intn,intm)

{inti,t;

if(m>w[n-1])w[n]=m;

else

{for(i=0;w[i]

t=i;

for(i=n-1;i>=t;i--)

w[i+1]=w[i];

w[t]=m;

}

}

main()

{

inta[6]={10,20,30,40,50},m,i;

m=35;

fun(a,5,m);

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

printf(“%d,”,a[i]);

}

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

当前位置:首页 > 求职职场 > 职业规划

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

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