程序设计基础C实验报告.docx
《程序设计基础C实验报告.docx》由会员分享,可在线阅读,更多相关《程序设计基础C实验报告.docx(36页珍藏版)》请在冰豆网上搜索。
程序设计基础C实验报告
《程序设计基础C》
实
验
报
告
教学班级:
_______学号:
__________姓名:
___________
课程教师:
______________实验辅导教师:
_____________
重庆理工大学计算机学院
2012年2月
实验6循环程序设计
教学班级:
_______学号:
__________姓名:
___________
实验日期:
___________实验地点:
_________(机房)
实验成绩:
___________
一、实验目的
1.了解C语言循环结构的使用范围。
2.学会正确使用逻辑运算符和逻辑表达式。
3.熟练掌握C语言的三种循环结构:
whilc语句、do_while语句、for语句的特点和使用方法。
4.能够编写一些有实际应用意义的循环结构程序。
二、实验内容
1.基本内容
题目1:
编写一个自然数1至n的累加程序(如:
1+2+3+…n)。
(使用goto语句)
(文件名:
f1.cpp):
#include
voidmain()
{inti,a,n;
a=i=0;
printf(“n=“);
scanf(“%d”,&n);
E:
i++;
a+=i;
if(igotoE;
else
printf(“\na=%d”,a);
}
①输入10,程序运行结果是:
a=55
②把该程序用for循环语句进行改写
程序代码:
#include
voidmain()
{
}
题目2:
计算1-3+5-7+......-99+101的值.(提示:
注意符号的变化)(文件名:
f2.cpp)
#include
voidmain()
{inti,t=1,s=0;/*t标识符号*/
for(i=1;i<=101;i+=2)/*error*/
{s+=i*t;t=-t;}
printf(“s=%d\n”,s);
}
以上程序运行结果不对,请将标有”erro”处改正。
改正后,程序执行结果:
s=51
题目3:
阅读下列程序,预测其输出结果,并上机验证。
(文件名:
f3.cpp)
#include
voidmain()
{inti=1,n;
longs=1;
scanf("%d",&n);
while(i)
{s*=i;
i++;
if(i>n)break;
}
printf("s=%ld\n",s);
}
①程序运行结果是:
输入数的阶乘
②不使用break语句,此程序应如何修改?
#include
voidmain()
{inti=1,n;
longs=1;
scanf("%d",&n);
while(i<=n)
{s*=i;
i++;
}
printf("s=%ld\n",s);
}
题目4:
下面程序的功能是打印100以内个位数为6且能被3整除的所有数,选择合适的语句填入该空格中。
(文件名:
f4.cpp)
#include
voidmain()
{inti,j;
for(i=0;i<=9;i++)
{j=i*10+6;
if(j%3!
=0)
continue;
printf("%d",j);}
}
题目5:
编写一个把小写字母转换为大写字母的程序。
要求敲入”/”,则停止转换。
(文件名:
f5.cpp)
#include
voidmain()
{charc,d;
putchar(‘>‘);
do{
c=getchar();
c=(‘a’<=c)&&(c<=‘z’)?
c-32:
c;
putchar(c);
if(c==‘\n’);//error
putchar(‘>‘);
}while(c!
=‘/’);/*判断是否是”/”,则停止转换*/
}
①运行程序,输入2AabcEfgAB/
程序运行结果是:
>2AabcE
2>A>A>B>C>E>
>fg
F>G>
>AB
A>B>
②将第9行改为:
if(c==‘\n’)
再运行程序,输入2AabcEfgAB/
程序运行结果是:
>2AabcE
2AABCE
>fg
FG
>AB
AB
2.选择内容
题目6:
根据公式
求e的近似值,精度要求为10-n
(文件名:
f6.cpp)
#include
voidmain()
{inti;
doublee,n;
e=1.0;n=1.0;
for(i=1;n>=1e-6;i++)
{n=n/i;
e+=n;}
printf(“e=%f\n”,e);
}
完善程序,运行结果:
e=2.
题目7:
打印出如下图案(文件名:
f7.cpp)
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
#include
voidmain()
{inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=8-i;j++)//理解数字8的作用
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}/*上面的程序输出上三角形*/
/*下面的程序输出下三角形*/
for(i=3;i>=1;i--)
{for(j=1;j<=8-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");}
}
1运行以上程序,验证实验结果。
2
②模仿上面程序,打印出如下图案
1
222
33333
程序代码:
#include
voidmain()
{
#include
voidmain()
{
inti,j;
for(i=1;i<=3;i++)
{for(j=1;j<=8-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
题目8:
编写程序:
打印出所有的“水仙花数”。
所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。
例如,153是一个“水仙花数”,因为153=13+53+33。
(文件名:
f6.cpp)
#include
voidmain()
{inti,j,k,m,n;
for(i=1;i<9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
m=i*100+j*10+k;n=i*i*i+j*j*j+k*k*k;
if(m==n)printf("%10d",m);
}
}
三、实验结果(用截图说明)
第一题
第二题
第四题
第五题
第六题
第七题
第八题
四、调试心得(选作)
实验7,8数组实验
教学班级:
_______学号:
__________姓名:
___________
实验日期:
___________实验地点:
_________(机房)
实验成绩:
___________
一、实验目的
1.理解数组与普通变量的区别及特点;
2.掌握一维数组和二维数组的定义、赋值和输入输出的方法;
3.掌握字符数组和字符串函数的使用;
4.掌握与数组有关的程序与算法。
二、实验任务
1.基本内容
实验7:
题目1:
阅读以下程序(文件名:
g1.cpp)
#include
voidmain()
{inti,s=0,a[10]={0,1,2,3,4,5,6,7,8,9};
for(i=3;i<7;i++)
s=s+a[i];
printf(“s=%d\n”,s);
}
①程序的功能:
求出a【3】a【4】a【5】a【6】地和
②程序运行结果:
s=18
题目2:
阅读以下程序(文件名:
g2.cpp)
#include
voidmain()
{intk,s,i,a[10]={1,2,3,4,5,6,7,8,9,10};
floatave;
for(k=s=i=0;i<10;i++)
{if(a[i]%2==0)continue;
s+=a[i];
k++;
}
if(k!
=0)
{ave=s/k;
printf(“k=%d,ave=%f\n”,k,ave);
}
}
①程序的功能:
奇数的和
②程序运行结果:
K=5,ave=5.
题目4:
任意输入10个数,求其最大数和最小数。
(文件名:
g4.cpp)
程序代码:
#include
voidmain()
{inta[10];inti,j,max,min;
printf("Pleaseinput10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
if(a[j]>a[j+1])
{
max=a[j];
min=a[j+1];
}
else
{
max=a[j+1];
min=a[j];
}
printf("max=%dmin=%d",max,min);
}
题目5:
冒泡法对10个数排序(从小到大)。
(文件名:
g5.cpp)
#include
voidmain()
{inta[10];inti,j,temp;
printf("Pleaseinput10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("Thesortednumbers:
\n");
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
①理解以上程序,并编辑运行程序。
②将程序中第7行的数字9改为10,编译运行程序,结果怎样?
③将程序中第8行的数字9改为10,编译运行程序,结果怎样?
实验8:
题目2:
输入一串字符,计算其中空格的个数。
(文件名:
h2.cpp)
#include
#include
voidmain()
{charc[30];
inti,sum=0;
gets(c);
for(i=0;iif(c[i]=='')
sum=sum+1;
printf("空格数为:
%d\n",sum);
}
题目3:
(文件名:
h3.cpp)
#include
voidmain()
{inti,j,row,col,min;
inta[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}};
min=a[0][0];
row=col=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]{min=a[i][j];row=i;col=j;}
printf(“min=%d,row=%d,col=%d\n”,min,row,col);
}
①程序的功能:
②程序运行结果:
min=-2,row=2,col=1
题目5:
预测程序结果,并编辑、运行。
(文件名:
h5.cpp)
#include
voidmain()
{chars[20],s1[20];
scanf(“%s”,s);
printf(“s=%s\n”,s);
scanf(“%s%s”,s,s1);
printf(“s=%s,s1=%s”,s,s1);
puts(“\n”);
gets(s);
puts(s);
}
2.选择内容
实验7:
题目6:
任意输入20个数在一维数组a中,求20个数的平均值。
(文件名:
g6.cpp)
程序代码:
#include
voidmain()
{
floatscore[10],avg=0,sum=0;
inti;
for(i=0;i<20;i++)
{scanf("%f",&score[i]);
sum+=score[i];}
printf(":
%f\n",avg=sum/20);
}
题目7:
任意输入10个数,判断该哪些是素数,并输出该素数。
(文件名:
g7.cpp)
程序代码:
#include
voidmain()
{
}
实验8:
题目8:
用字符数组存储任意输入的10字符,求该10字符中最大字符。
(文件名:
h8.cpp)
程序代码:
#include
voidmain()
{
}
题目9:
从键盘上任意键入一个3行4列的矩阵,要求输出其转置矩阵。
(文件名:
h9.cpp)
程序代码:
#include
voidmain()
{
}
题目10:
有5个学生,考3门功课。
求出每一个学生的总分及平均分,统计平均成绩低于60分的学生人数。
(文件名:
h10.cpp)
程序代码:
#include
voidmain()
{inta[3][;
inti,ave,sum,x;
for(i
scanf(”%d]”,&a[3]);
}
三、实验结果(用截图说明)
实验七
题目一
题目二
实验八
第二题
第三题
四、调试心得(选作)
实验9,10函数实验
教学班级:
_______学号:
__________姓名:
___________
实验日期:
___________实验地点:
_________(机房)
实验成绩:
___________
一、实验目的
1.理解函数定义的方法。
2.掌握函数实参与形参的对应关系,以及”参数传递”的方式;
3.掌握函数的嵌套调用和递归调用的方法;
4.掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。
二、实验任务
1.基本内容
实验9:
题目1:
以下程序是求3个数中的最大值(文件名:
i1.cpp)
#include
voidmain()
{inta,b,c,m;
intmax(intx,inty);/*函数声明*/
printf(“inputa,b,c=“);
scanf(“%d,%d,%d”,&a,&b,&c);
printf(“m=%d\n”,m);
}
intmax(intx,inty)/*函数定义*/
{intz;
z=(x>y)?
x:
y;
returnz;
}
①完善程序,如果输入4,2,6,程序运行结果:
题目2:
(文件名:
i2.cpp)
#include
voidmain()
{inta[][3]={0,2,4,6,8,10,12,14,16},sum;
intfunc(inta[][3]);/*函数声明*/
sum=func(a);
printf(“\nsum=%d\n”,sum);
}
intfunc(inta[][3])/*函数定义*/
{inti,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)sum+=a[i][j];
returnsum;
}
①程序的功能:
②程序运行结果:
sum=24
题目3:
用子函数计算10名学生1门课成绩的平均分。
(文件名:
i3.cpp)
#include
floataverage(floatarray[10])/*注意数据类型的一致*/
{inti;floataver,sum=0;
for(i=0;i<10;i++)sum+=array[i];
aver=sum/10;
return(aver);
}
voidmain()
{floatscore[10],aver;
inti;
printf(“\ninput10scores:
”);
for(i=0;i<10;i++)scanf(“%f”,&score[i]);
aver=average(score[10]);/*error*/
printf(“\naveragescoreis%5.2f\n”,aver);
}
程序中有“error”标注处有错误,请改正,并调试运行程序。
aver=average(score);
题目4:
子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。
(文件名:
i4.cpp)
#include
voidmain()
{intnumber;
printf(“请输入一个正整数:
\n”);scanf(“%d”,&number);
if()
printf(“\n%d是素数:
”,number);
else
printf(“\n%d不是素数:
”,number);}
intprime(intnumber)
{intflag=1,n;
for(n=2;flag==1&&n<=number/2;n++)
if()flag=0;
return(flag);
}
完善以上程序,并调试运行。
实验10:
题目4:
该程序使用了局部变量与全局变量,理解它们的使用方式。
(文件名:
j4.cpp)
#include
inta=3,b=5;
intmax(inta,intb)
{intc;
c=a>b?
a:
b;
returnc;
}
voidmain()
{inta=8;
printf(“%d”,max(a,b));
}
①局部变量:
inta=3,b=5;
intc;
全局变量:
a=8;
②程序运行结果:
8
题目5:
以下是一个求1-10累加和的错误程序,请改正。
(文件名:
j5.cpp)
#include
voidmain()
{inti,s;
for(i=1;i<=10;i++)
s=sum(i);
printf("s=%d\t",s);
}
sum(intj)
{intx=0;/*error*/
x+=j;
return(x);
}
改正为:
2.选择内容
实验9:
题目5:
子函数实现一个字符串按反序存放,在主函数中输入和输出字符串。
(文件名:
i5.cpp)#include
#include
voidmain(){voidinverse(charstr[]);
charstr[100];
printf(“输入字符串:
\n”);scanf(“%s”,str);
inverse(str);
printf(“转换后的字符串是:
%s\n”,str);
}
voidinverse(charstr[])
{chart;
inti,j;
for(i=0,j=strlen(str);istr[i]=str[j-1];
str[j-1]=t;
}
}
①运行以上程序,输入*,程序运行结果是:
转换后的字符串是:
*。
②将inverse函数中的for语句改为
for(i=0,j=strlen(str);i*。
题目6:
在一个数组A中存放100个数据,用子函数判断该数组中那些是素数,并统计该素数的个数,在主函数中输出该素数的个数。
(文件名:
i6.cpp)
程序代码:
#include
voidmain()
{
}
题目7:
在主函数中定义二维数组A[3][4]、B[4],用子函数对数组A[3][4]每一行求和,其值放在数组B[4]中,在主函数中输出该值。
(文件名:
i7.cpp)
程序代码:
#include
voidmain()
{
}
三、实验结果(用截图说明)
第二题
第五题
四、调试心得(选作)
实验11指针实验
教学班级:
_______学号:
__________姓名:
___________
实验日期:
___________实验地点:
_________(机房)
实验成绩:
___________
一、实验目的
1.掌握指针的概念,指针变量的定义和使用。
2.熟悉和了解C语言指针一般设计方法。
3.学会使用C语言指针进行程序设计。
4.学会使用数组的指针和指向数组的指针变量。
5.进行简单C语言指针语句的设计、调试、编译和运行。
二、实验任务
1.基本内容
题目1:
阅读以下程序。
(文件名:
k1.cpp
#include
voidmain()
{intx=1,y=2,*p,*q;
p=x;q=y;/*error*/
printf(“x=%d,y=%d\n”,x,y);
printf(“&x=%d,&y=%d\n”,&x,&y);
printf(“p=%d,q=%d\n”,p,q);
printf(“p=%d,q=%d\n”,*p,*q);
}