《C语言程序设计》实验报告----------------------------------------------------------------------------------------------实验2顺序结构程序设计一、实验目的(1)掌握C语言中赋值语句的使用方法。
(2)掌握各种类型数据的输入与输出方法,能正确使用各种格式转换符。
(3)掌握C语言的顺序结构程序设计。
二、实验内容与步骤1.输入程序,观察程序运行结果(1)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中无分隔符的正确使用。
/*c2-1.c*/#include<stdio.h>int main(){int i,j;printf("Enter i,j\n");scanf("%d%d",&i,&j);printf("i=%d,j=%d\n",i,j);return 0;}总结与反思:1.printf("E nter i,j\n");语句是对下面的输入语句起提示作用;2.本题在scanf()语句中,输入两个整数之间可用空格、Tab或回车键分隔,但用其他的分隔符不能得到正确的值。
(2)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中逗号分隔符的正确使用。
/*c2-2.c*/#include<stdio.h>int main(){int i,j;printf("Enter i,j\n");scanf("%d,%d",&i,&j);printf("i=%d,j=%d\n",i,j);return 0;}总结与反思:本题在scanf()语句中,输入两个整数之间必须用逗号分割,用其他的分隔符时第一个变量能得到正确的值,第二个变量不能得到正确的值。
(3)输入并运行下面的程序,掌握格式scanf()函数中普通字符按原样输入的使用方法。
/*c2-3.c*/#include<stdio.h>int main(){float i,j;scanf("i=%f,j=%f",&i,&j);printf("i=%.3f,j=%.3f\n",i,j);return 0;}总结与反思:用scanf()函数输入内容,必须严格按照格式说明部分进行键入。
(4)输入并运行下面的程序,如果scanf()函数中格式与变量类型的对应关系错误,将不能得到正确的结果。
/*c2-4.c*/#include<stdio.h>int main(){int i,j;scanf("%f,%f",&i,&j);printf("i=%d,j=%d\n",i,j);return 0;}总结与反思:1.与int(基本整型)对应的应是%d,与float(浮点型)对应的是%f。
2.scanf()函数格式说明应与定义的变量类型一致!(5)输入一个大写字母A,将它转换为小写字母a,输出小写字母a及对应的ASCII码值97,要求输出格式为“j=a,j=97”,完善下面程序中的输出语句。
/*c2-5.c*/#include<stdio.h>int main(){int j;char i;scanf("%c",&i);j=i+32;printf("j=%c,j=%d\n",j,j);return 0;}总结与反思:输出语句用printf("格式说明",要输出的量);格式说明(除去%d、\n等)是原样输出的,用要输出的量来代替%d,\n是换行符。
(6)输出以下程序,运行程序并按要求修改程序。
/*c2-6.c*/#include<stdio.h>int main(){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61;b=62;c1='a';c2='b';d=3.56;e=-6.87;f=3157.890121;g=0.123456789;m=2147483547;n=-2147483548;p=2147483547;q=4000000000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);return 0;}②在此基础上修改程序的第8-13行。
问题来了:(a,b)(d)(m,n)(p,q)为何这样输出?③改用scanf函数输入数据而不用赋值语句,scanf函数如下:scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,& p,&q);④将printf语句改为:printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);printf("f=%f,g=%f\nm=%d,n=%d\np=%d,q=%d\n",f,g,m,n,p,q);⑤将p,q改用%o格式符输出。
⑥将scanf函数中的%lf和%ld改为%f和%d总结与反思:1.1f和1d格式符分别用于输入double型和long型数据;2.%f系统默认小数点后6位;(7)将a、b两个变量的值交换后,如果按“a=2,b=1”的格式输出,完善下面程序中的输出语句。
/*c2-7.c*/#include<stdio.h>int main(){int a=1,b=2,t;t=a;a=b;b=t;printf("a=%d,b=%d\n",a,b);return 0;}总结与反思:学会引用第三个变量t来实现a和b的互换。
2.编写程序(1)编写一个程序,程序的功能是从键盘上输入一个华氏度,能够输出相应的摄氏温度。
华氏温度F与摄氏温度C的转换关系为:C=5/9(F-32)要求输出保留两位小数。
/*c2-8.c*/#include<stdio.h>int main(){float c,f;scanf("%f",&f);c=5.0/9*(f-32);printf("c=%.2f\n",c);return 0;}总结与反思:整数/整数,结果为向零取整。
所以,在这里要使5或9改成小数形式。
(2)编写一个程序,两次调用getchar()函数读入两个字符分别赋给c1,c2,再分别用putchar()函数和printf()函数输出这两个字符。
/*c2-9.c*/#include<stdio.h>int main(){char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);putchar('\n');printf("%c,%c\n",c1,c2);return 0;}总结与反思:1.多次用getchar函数输入时,字符之间不能有分隔字符,否则系统会把分隔字符作为第二个字符读入。
2.注意在putchar函数中换行符\n的输入方法。
(3)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要有文字说明,取小数点后两位数字。
#include <stdio.h>int main(){float r,h,c,s1,s2,v1,v2;scanf("r=%f,h=%f",&r,&h);c=2*3.14*r;s1=3.14*r*r;s2=4*3.14*r*r;v1=(3/4)*3.14*r*r*r;v2=s1*h;printf("圆周长=%.2f\n圆面积=%.2f\n圆球表面积=%.2f\n圆球体积=%.2f\n圆柱体积=%.2f\n",c,s1,s2,v1,v2);return 0;}总结与反思:圆周率的使用需要自定义pi,不可直接使用。
#define PI 3.14159265。