C语言程序设计 实验报告
专业 计算机科学与技术 班级 日期 2015.4.13 成绩
实验组别 第 1 次实验 表达式和标准输入输出实验 指导教师 学生姓名 学号 同组人姓名
实验名称 表达式和标准输入与输出实验
一、实验目的
1.熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类型及运算过程中的类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结合性;
2.掌握getchar, putchar, scanf 和printf 函数的用法。 3.掌握简单C程序(顺序结构程序)的编写方法。 二、实验任务 1、源程序改错题
下面给出了一个简单C语言程序例程,用来完成以下工作: 1.输入华氏温度f,将它转换成摄氏温度c后输出; 2.输入圆的半径值r,计算并输出圆的面积s;
3.输入短整数k、p,将k的高字节作为结果的低字节,p的高字节作为结果的高字节,拼成一个新的整数,然后输出;
在这个例子程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。
#include
int f ;
short p, k ; double c , r , s ;
/* for task 1 */
printf(“Input Fahrenheit:” ) ; scanf(“%d”, f ) ; c = 5/9*(f-32) ;
printf( “ \\n %d (F) = %.2f (C)\\n\\n ”, f, c ) ;
/* for task 2 */
printf(\scanf(\s = PI * r * r;
printf(\
/* for task 3 */
printf(\scanf(\
newint = (p&0xff00)|(k&0xff00)<<8; printf(\
}
2、源程序修改替换题
下面的程序利用常用的中间变量法实现两数交换,请改用不用第三个变量的交换法实现。 #include
int a, b, t;
printf(“Input two integers:”); scanf(“%d %d”,&a,&b); t=a, a=b, b=t;
prinf(“\\na=%d,b=%d”,a,b); }
3、编程设计题
上机调试运行以下程序:
(1)编写一个程序,输入字符c,如果c是大写字母,则将c转换成对应的小写,否则c的值不变,最后输出c。
(2)编写一个程序,输入无符号短整数x,m,n(0 ≤m≤ 15, 1 ≤ n≤ 16-m),取出x从第m位开始向左的n位(m从右至左编号为0~15),并使其向左端(第15位)靠齐。 (3)IP地址通常是4个用句点分隔的小整数,如32.55.1.102。这些地址在机器中用无符号长整形表示。编写一个程序,以机器存储的形式读入一个32位的互联网IP地址,对其译码,然后用常见的句点分隔的4部分的形式输出。 三、实验步骤及结果 1. 源程序改错题
原程序中的错误:
(1).voidmain 中间缺少空格; (2).printf函数调用有误,汉语中的双引号改为英语中的双引号,“%.2f”改为“%.2lf”; (3).scanf函数调用有误;“f”改为“&f”同时,汉语中的双引号改为英语中的双引号,“%f”改为“%lf”。
(4).“c“为double型,5改为5.0;newint = (p&0xff00)|(k&0xff00)<<8改为newint = (p&0xff00)|(k&0xff00)>>8;int型newint的说明缺少,输出时printf中应用“%d”; (5).k,p为short型输入时用“%h”; 修改后的程序:
#include
{
int f,newint ; short p, k ;
double c , r , s ; /* for task 1 */
printf(\ scanf(\ c = 5.0/9*(f-32) ;
printf(\/* for task 2 */
printf(\scanf(\s= PI * r * r;
printf(\/* for task 3 */
printf(\scanf(\
newint = (p&0xff00)|(k&0xff00)>>8; printf(\}
运行结果:
2、源程序修改替换题 替换后程序:
#include
int a, b;
printf(\ scanf(\ a=a+b; b=a-b; a=a-b;
printf(\
return 0; }
运行结果:
3、编程设计题
1,调试后的正确程序: #include
int main(void) {
int x ;
printf(\ x=getchar();
if(x>='A'&&x<='Z') {
x=x+32;
putchar(x); } else
putchar(x); return 0; }
运行结果:
2调试后的正确程序:
#include
unsigned short int x,m,n,result; printf(\ scanf(\ result=(x>>m)<<(15-n+1); printf(\ return 0; }
运行结果:
3 调试后程序:
#include
unsigned long int x; int a,b,c,d;
printf(\ scanf(\ a=(x&A)>>24; b=(x&B)>>16; c=(x&C)>>8; d=(x&D);
printf(\}
运行结果:
4、自设题
目的:学会逐步调试程序,并逐步观察各变量在每条语句执行时的变化情况 要求:输入三个已知三个整型数,并逐步求求他们的和s,积h计算,并显示结果
程序代码:
#include
int a,b,c,s,h;
scanf(\s=a+b;
s=s+c; h=a*b; h=h*c;
printf(\ return 0; }
运行结果:
四、实验体会
这次上机最大的收获就是学会了调试程序,单步调试程序观察每一步变量
的变化情况。但学会这个历经了很多困难,虽然在上机前做了充分地预习,但是因为第一次接触,自己摸索了一个下午也没有完全掌握,在上课时不知道为什么也总是调试不了,询问老师的时候也没有得到较好的解答。课后根据老师说的步骤一次次实践,最后终于学会了调试,并且也掌握了在调试中增设变量,虽然花了很多时间,但感觉还是很值得的。并且感觉学会调试程序对日后修改代码行数较多的程序是很有用的。
另一方面在这次上机中也学会了如何去修改一个有语法错误的程序,这帮助我们以后再编写程序时更加细心,同时这次上机也锻炼我们编写程序的能力。编程学得还不是很好,以后要经常自己编写程序,锻炼自己的编程能力。
s=s+c; h=a*b; h=h*c;
printf(\ return 0; }
运行结果:
四、实验体会
这次上机最大的收获就是学会了调试程序,单步调试程序观察每一步变量
的变化情况。但学会这个历经了很多困难,虽然在上机前做了充分地预习,但是因为第一次接触,自己摸索了一个下午也没有完全掌握,在上课时不知道为什么也总是调试不了,询问老师的时候也没有得到较好的解答。课后根据老师说的步骤一次次实践,最后终于学会了调试,并且也掌握了在调试中增设变量,虽然花了很多时间,但感觉还是很值得的。并且感觉学会调试程序对日后修改代码行数较多的程序是很有用的。
另一方面在这次上机中也学会了如何去修改一个有语法错误的程序,这帮助我们以后再编写程序时更加细心,同时这次上机也锻炼我们编写程序的能力。编程学得还不是很好,以后要经常自己编写程序,锻炼自己的编程能力。