文档库 最新最全的文档下载
当前位置:文档库 › C语言上机实验标准答案.doc

C语言上机实验标准答案.doc

C语言上机实验标准答案.doc
C语言上机实验标准答案.doc

实验一上机操作初步 (2 学时 )

一、实验方式:一人一机

二、实验目的:

1、熟悉 VC++语言的上机环境及上机操作过程。

2、了解如何编辑、编译、连接和运行一个 C 程序。

3、初步了解 C程序的特点。

三、实验内容:

说明:前三题为必做题目,后两题为选做题目。

1、输出入下信息: ( 实验指导书 P79)

*************************

Very Good

*************************

2、计算两个整数的和与积。( 实验指导书 P81)

3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。 ( 书

P3)

4、在屏幕上显示一个文字菜单模样的图案:

=================================

1 输入数据

2 修改数据

3 查询数据

4 打印数据

=================================

5、从键盘上输入两个整数,交换这两个整数。

四、实验步骤与过程:

五、实验调试记录:

六、参考答案:

1、#include <>

void main( )

{printf( printf( printf( “ ********************\n

“Very Good\n” );

“ ********************\n

” );

” );

}

2、#include <>

void main( )

{int a,b,c,d;

printf( “ Please enter a,b: ”);

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

c=a+b; d=a*b;

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

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

}

3、#include <>

#include <>

void main( )

{ double x,s;

printf( “ Please input value of x: ”);

scanf( “%lf ” ,&x);

s=cos(x);

printf( “ cos(%lf)=%lf\n ”,x,s);

}

4、#include <>

void main( )

{ printf( “ ==================================\n”);

printf( “ 1 输入数据 2 修改数据 \n ”);

printf( “ 3 查询数据 4 打印数据 \n ”);

printf( “ ===================================\n”);

}

5、#include <>

void main( )

{ int x,y,t;

printf( “ Please enter x and y: ”);

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

t=x; x=y; y=t;

printf( “ After swap:x=%d,y=%d\n ” ,x,y);

}

实验二简单的 C程序设计 (4 学时 )

一、实验方式:一人一机

二、实验目的:

1、掌握 C语言的数据类型。

2、学会使用 C语言的运算符及表达式。

3、掌握不同数据类型的输入输出方法。

三、实验内容:

说明:前四题为必做题目,后两题为选做题目。

1、输入 r1 、 r2 ,求出圆形垫片面积。 ( 实验指导书 P84)

2、输入华氏温度 h,输出摄氏温度 c。 ( 实验指导书 P85)

3、从键盘输入一个 3 位整数,将输出该数的逆序数。 ( 实验指导书 P89)

4、输入并运行以下程序,分析运行结果。

#include <>

void main( )

{ int i,j; i=8;

j=10;

printf( “ %d,%d\n” ,++i,++j); i=8;

j=10;

printf( “ %d,%d\n” ,i++,j++); i=8;

j=10;

printf( “ %d,%d\n” ,++i,i); i=8;

j=10;

printf( “ %d,%d\n” ,i++,i);

}

5、输入三角形三条边的边长,求三角形的面积。( 书 P55)

6、输入 3 个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。( 书 P55)

四、实验步骤与过程:

五、实验调试记录:

六、参考答案:

1、#include <>

#define PI

void main( )

{ float r1,r2;

double s1,s2,s;

printf( “ Please enter r1,r2:\n”);

scanf( “%f%f”,&r1,&r2);

s2=r2*r2*PI; s1=r1*r1*PI; s=s2-s1;

printf( “ s=%lf\n ” ,s);

}

2、#include <>

void main( )

{ float h,c;

printf( “请输入华氏温度:” );

scanf( “%f” ,&h);

c=9*(h-32);

printf( “ \n 摄氏温度: %f\n ”,c);

3、#include <>

void main( )

{int a,b,c,x,y;

printf(“请输入一个 3 位的正整数: \n ”);

scanf(“%d” ,&x);

a=x/100;/*求x的百位数*/

b=(x-a*100)/10; /*求x的十位数*/

c=x-a*100-b*10; /*求x的个位数*/

y=c*100+b*10+a;

printf( “ %d:%d\n” ,x,y);

}

4、运行结果: 9,11

8,10 9,8 8,8

5、#include <>

#include <>

void main( )

{ int a,b,c;

double area,s;

printf(“ Please enter a,b,c:” );

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

s=(double)(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf( “ area=%.2lf\n”,area);

}

6、#include <>

void main( )

{char a,b,c;

float x;

printf(“ Please enter:\n”);

a=getchar(); b=getchar(); c=getchar();

x=(a+b+c)/;

printf(“ (a+b+c)/3=%.2f\n” ,x);

}

实验三选择结构程序设计 (2 学时 )

一、实验方式:一人一机

二、实验目的:

1、熟练掌握 if语句和switch语句。

2、练习并掌握多分支选择结构的编程方法。

3、学习调试和修改程序的步骤。

三、实验内容:

说明:前三题为必做题目,后两题为选做题目。

1、读入 3 个分别表示箱子长、宽、高的整数值,判断并输出该箱子是立方体还是长方体。

( 实验指导书 P104)

2、输入某一年月,输出该月的天数。( 实验指导书 P105)

3、有一函数:x (x<1)

y= 2x-1 (1≤x<10)

3x-11 (x≥10)编写程序,输入x 值,输出 y 值。

4、从键盘输入一个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符

为大写字母,则转换为小写字母输出;如果为其他字符,原样输出。 ( 书 P94) 5、输入 4 个整数,要求按由小到大的顺序输出。

四、实验步骤与过程:

五、实验调试记录:

六、参考答案:

1、#include <>

void main( )

{int l,w,h;

printf(“请输入箱子的长、宽、高:\n ”);

scanf(“%d%d%d”,&l,&w,&h);

if(l==w&&w==h)/*如果长、宽、高相等,则为立方体

*/

printf(“该箱子是立方体。”);

else

printf(“该箱子是长方体。”);

}

2、#include <>

void main( )

{int year,month,days;

printf(“ Please enter year and month:\n” );

switch(month)

{ case 2: if(year%4==0&&year%100!=0||year%400==0)

days=29;

days=28;

break;

case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break;

case 4: case 6: case 9: case 11: days=30;

}

printf( “ %d年 %d月有 %d天\n ” ,year,month,days);

}

3、#include <>

void main( )

{float x,y;

printf( scanf(

“ Please input

x:\n “%f” ,&x);

”);

if(x<1)

y=x;

else if(x<10)

y=2*x-1;

else

y=3*x-11;

printf( “ y=%f\n ”,y);

}

4、#include <>

void main( )

{char x;

printf( “ Enter a char:\n ”);

x=getchar();

if(x>= ‘a’&&x<=‘ z’ )

x=x-32;

else if(x>=‘ A’&&x<=‘Z’)

x=x+32;

putchar(x);

}

5、#include <>

void main( )

{int a,b,c,d,t;

printf(“请输入 4 个整数:” );

scanf(“%d%d%d%d”,&a,&b,&c,&d); if(a>b) { t=a; a=b; b=t; }

if(a>c) { t=a; a=c; c=t; }

if(b>c) { t=b; b=c; c=t; }

if(b>d) { t=b; b=d; d=t; }

if(c>d) { t=c; c=d; d=t; }

printf(“排序结果如下: \n ” );

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

}

实验四循环结构程序设计 (4 学时 )

一、实验方式:一人一机

二、实验目的:

1、熟练掌握 while 语句、 do-while语句和for语句。

2、练习并掌握循环结构的嵌套形式。

3、掌握循环结构的程序设计方法。

三、实验内容:

说明:前四题为必做题目,后两题为选做题目。

1、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结

束输入。 ( 实验指导书 P117)

2、求所有的水仙花数。水仙花数是一个 3 位数的自然数,该数各位数的立方和等于该数

本身。 ( 实验指导书 P118)

3、判断输入的某个数是否为素数。若是,输出YES,否则输出 NO。( 书 P123)

4、计算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+,直到最后一项的绝对值小

于10-6为止。 ( 书 P123)‘

5、计算 s=1!+2!++20! 的值并输出。

6、输入 10 个整数,统计并输出其中正数、负数和零的个数。

四、实验步骤与过程:

五、实验调试记录:

六、参考答案:

1、#include <>

void main( )

{float x,max,min;

printf(“ Please input scores:

”);

scanf(“%f” ,&x);

max=min=x;

while(x>=0)

if(x

scanf(“ %f”,&x);

}

printf( “ \nmax=%f\nmin=%f\n ”,max,min); }

2、#include <>

void main( )

{ int x,y,z; int

k=100;

while(k<=999)

{ x=k/100;

y=(k-x*100)/10;

z=k-x*100-y*10;

if(k==x*x*x+y*y*y+z*z*z)

printf(

k++;

}

“%d\n”,k);

}

3、#include <>

#include <>

void main( )

{int i,x,yes,a;

printf(“ Enter integer number: scanf(“%d” ,&x);

yes=1;

i=2;

a=(int)sqrt((double)x);

while(yes&&i<=a){if(x%i==0) i++;

”); yes=0;

}

printf( “ %d” ,x);

if(yes)

printf(“ YES\n”);

else

printf(“ NO\n” ); }

4、#include <>

void main( )

{ float pi,t,n; int

sign=1; pi=0;

n=1; t=1;

while(fabs(t)>=1e-6)

{ t=sign/n;

pi+=t;

n+=2;

sign=-sign;

}

pi=pi*4;

printf( “ pi=%f\n ” ,pi);

}

5、#include <>

void main( )

{ float s=0,t=1; int n;

for(n=1;n<=20;n++)

{ t=t*n;

s=s+t;

}

printf( “ 1!+2!++20!=%f\n ” ,s);

}

6、#include <>

void main( )

{ int x,i,a1=0,b1=0,c1=0;

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

{ printf(“ \n请输入第%d个数:”,i);

scanf( “ %d”,&x);

if(x>0)a1++;

else if(x<0) b1++;

else c1++;

}

printf( “整数有 %d个,负数有 %d个,零有 %d个 \n ”,a1,b1,c1);

}

实验五综合实验 1:结构化程序设计(2 学时 )

一、实验方式:一人一机

二、实验目的:

1、进一步掌握选择结构、循环结构的编程特点。

2、掌握 C语言的结构化程序设计思想。

3、学习利用循环结构实现的一些常用算法(如穷举、迭代、递推等)。

三、实验内容:

说明:前两题为必做题目,后两题为选做题目。

1、编一程序,对于给定的一个百分制成绩,输出对应 A,B,C,D,E 表示的的等级成绩。设:

90 分以上为 A, 80-89 分为 B,70-79 分为 C, 60-69 分为 D,60 分以下为 E。( 书 P93)

2、百马百担问题。 ( 实验指导书 P121)

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

4、输出如下图案:*

***

*****

*******

*****

***

*

四、实验步骤与过程:

五、实验调试记录:

六、参考答案:

1、#include <>

void main( )

{ int score,temp,logic;

char grade;

logic=1;

while(logic)

{ printf(“ Input score:” );

scanf( “ %d”,&score);

if(score>100||score<0)

printf(“\nError,Input again!\n”);

else

logic=0;

printf(“ \n ”);

}

if(score==100)

temp=9;

else

temp=score/10;

switch(temp)

{ case 9: grade= ‘A’;break;

case 8: grade= ‘B’;break;

case 7: grade= ‘C’;break;

case 6: grade= ‘D’;break;

default: grade= ‘ E’ ;

}

printf( “ Score is %d,the grade is %c.\n ” ,score,grade);

}

2、#include <>

void main( )

{int m,n,k;

int sum=0;

printf(“各种驮法如下: \n ” );

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

for(n=1;n<=100-m;n++)

{ k=100-m-n;

if(k%2==0&&m*3+n*2+k/2==100)

{printf( “大马 %3d匹;中马 %3d匹;小

马%3d

匹.\n

” ,m,n,k);

sum++;

}

}

printf( “共有 %d种驮

法 .\n

”,sum);

}

3、#include <>

void main( )

{char c;

int letter=0,space=0,digit=0,other=0;

printf(“请输入一行字符: \n ”);

while((c=getchar( ))!=‘ \n’)

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

letter++;

else if(c== ‘ ’)

space++;

else

other++;

}

printf(“字母数=%d,空格数=%d\n”,letter,space);

printf( “数字数 =%d,其他字符数 =%d\n”,digit,other); }

4、#include <>

void main( )

{ int i,j,k;

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

{ for(j=0;j<=2-i;j++)

for(k=0;k<=2*i;k++) printf(

printf(

“ ”);

“* ”);

printf( “ \n ”); }

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

{ for(j=0;j<=i;j++)printf( for(k=0;k<=4- 2*i;k++) printf(

printf( “ \n ”); “ ”); “* ”);

}

}

实验六函数程序设计 (4 学时 )

一、实验方式:一人一机

二、实验目的:

1、掌握 C语言中函数的三要素:函数定义、函数调用和函数说明。

2、掌握通过参数在函数间传递数据的方法。

3、掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。

三、实验内容:

说明:前四题为必做题目,后两题为选做题目。

1、从键盘输入三角形的 3 条边,调用三角形面积函数求出其面积,并输出结果。( 实验

指导书 P130)

2、输入整数 n,输出高度为n 的等边三角形。当n=5 时的等边三角形如下:( 实验指导

书P134)

*

***

*****

*******

*********

#include <>

int a=5;

int b=7;

void main( )

{ int a=4,b=5,c;

c=plus(a,b);

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

}

plus(int x,int y)

{ int z;

z=x+y;

return (z);

}

4、求 500 以内的所有亲密数对。若正整数 A 的所有因子(包括 1 但不包括自身,下同)

之和为 B,而 B 的因子之和为 A,则称 A 和 B 为一对亲密数对。 ( 实验指导书 P136)

5、输入并运行以下程序,分析运行结果。

#include <>

int d=1;

fun(int p)

{ static int d=5;

d+=p;

printf(“ %d ”,d);

return (d);

}

void main( )

{ int a=3;

printf( “ %d ”,fun(a+fun(d)));

}

6、设计一个函数,输出整数n 的所有素数因子。 ( 书 P157)

四、实验步骤与过程:

五、实验调试记录:

六、参考答案:

1、#include <>

#include <>

float area(float a,float b,float c)

s=(a+b+c)/2;

p=s*(s-a)*(s-b)*(s-c);

area=sqrt(p);

return (area);

}

void main( )

{float x,y,z,ts;

scanf(“%f%f%f”,&x,&y,&z);

if(x>0&&y>0&&z>0&&x+y>z&&y+z>x&&x+z>y) { ts=area(x,y,z);

printf( “ area=%f\n ” ,ts);

}

else

printf( “ data error!\n ” );

}

2、#include <>

void trangle(int n)

{ int i,j;

for(i=0;i

{ for(j=0;j<=n-i;j++) putchar( for(j=0;j<=2*i;j++) putchar( ‘ ’);/*

‘* ’);/*

打印每一行的空格 */

打印每一行的 * 号 */

putchar( ‘ \n ’);

}

}

void main( )

{ int n;

printf(“Please enter n:

scanf( “%d”,&n);

printf(“\n ” );

trangle(n);

”);

}

3、a+b=9

4、#include <>

int facsum(int m)

{ int sum=1,f=2;

while(f<=m/2)

{ if(m%f==0) sum=sum+f;

f++;

return sum;

}

void main( )

{ int m=3,n,k;

while(m<=500)

{ n=facsum(m);

k=facsum(n);

if(m==k&&m<=n)

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

}

}

5、6 15 15

6、#include <>

int prime(int n)

{ int i,flag=1;

for(i=2;i<=n/2;i++)

if(n%i==0)

{ flag=0;

retun flag;

}

return flag;

}

void factor(int n)

{ int i; i=2;

while(i<=n)

{ if((n%i==0)&&prime(i))

{ printf(“%d”,i);

n=n/i;

continue;

}

i++;

}

}

void main( )

{int num;

printf( “ Enter num: ” );

printf(“ prime factor is:\n”);

factor(num);

}

实验七数组程序设计 (4 学时 )

一、实验方式:一人一机

二、实验目的:

1、掌握数组的定义、赋值和输入输出的方法。

2、学习用数组实现相关的算法(特别是排序算法)。

3、掌握 C语言中字符数组和字符串处理函数的使用。

三、实验内容:

说明:前四题为必做题目,后两题为选做题目。

1、下列程序的功能是:输入10 个整数,按每行 3 个数输出这些整数,最后输出 10 个整数的

平均值。程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。

#include <>

void main( )

{ int i,n,a[10],avg;

for(i=0;i

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

for(i=0;i

{ if(i%3==0)printf(

“ \n ”);

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

}

for(i=0;i

avg+=a[i];

printf( “\navg=%f\n ”,avg);

}

2、写一个函数,对输入的10 个整数按从小到大的顺序排序(升序,用冒泡排序实现)。

( 实验指导书 P147)

3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都

是一样的字符串。 ( 实验指导书 P153)

4、输入一个 3 行 3 列矩阵的所有元素,然后求出主对角线元素之和。

5、给定某年某月某日,将其转换成这一年的第几天并输出。( 实验指导书 P152)

6、编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,

否则输出 no found 。( 书 P191)

五、实验调试记录:

六、参考答案:

1、#include <>

void main( )

{ int i,n=10,a[10];

float avg=0;

for(i=0;i

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

for(i=0;i

{ if(i%3==0)printf(

“ \n ”);

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

}

for(i=0;i

avg+=a[i];

avg=avg/n;

printf( “\navg=%f\n ”,avg);

}

2、#include <>

void sort1(int s[ ],int n)

{ int i,j; int t;

for(i=0;i

for(j=9;j>=i+1;j--)

if(s[j]

{ t=s[j];s[j]=s[j-1];s[j-1]=t; }

}

void main( )

{int i,a[10];

printf( “ Please input 10 numbers:\n ”);

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

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

sort1(a,10);

printf( “ The sorted 10 numbers:\n”);

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

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

}

3、#include <>

#include <>

#define N 40

void main( )

{ char str[N],ch=

‘ Y’ ;

int i;

int len;

printf(“Input a string:\n”);

scanf( “ %s” ,str);

len=strlen(str);

for(i=0;i

if(str[i]!=str[len-1-i])

{ ch=‘ N’;

break;

}

if(ch==‘Y’ )

printf(“%s是一个回文数 \n ”,str);

else

printf(“%s不是一个回文数 \n ”,str);

}

4、#include <>

void main( )

{ int a[3][3],sum;

int i,j; sum=0;

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

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

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

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

sum=sum+a[i][i];

printf(

“sum=%d\n”,sum);

}

5 、#include <>

int day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}}; int day_year(int year,int month,int day)

{ int i,j,s=0;

相关文档