专业 信息安全 班级 1103 日期 成绩 实验组别 第 1次实验 指导教师 学生姓名 严志颖 学号 U201114113 同组人姓名
实验名称 表达式和标准输入与输出实验
一、实验目的
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(\"input the radius r:\"); scanf(\"%f\s = PI * r * r; printf(\"\\nThe acreage is %.2f\\n\\n\ /* for task 3 */ printf(\"input hex int k, p :\"); scanf(\"%x %x\ newint = (p&0xff00)|(k&0xff00)<<8; printf(\"new int = %x\\n\\n\ } 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(\"Input Fahrenheit:\" ) ; scanf(\"%d\ c = 5.0/9*(f-32) ; printf(\"\\n %d (F) = %.2f (C)\\n\\n \ /* for task 2 */ printf(\"input the radius r:\"); scanf(\"%lf\s= PI * r * r; printf(\"\\nThe acreage is %.2lf\\n\\n\ /* for task 3 */ printf(\"input hex int k, p :\"); scanf(\"%h %h\ newint = (p&0xff00)|(k&0xff00)>>8; printf(\"new int = %d\\n\\n\ } 运行结果: 2、源程序修改替换题 替换后程序: #include int a, b; printf(\"Input two integers a,b:\"); scanf(\"%d %d\ a=a+b; b=a-b; a=a-b; printf(\"\\na=%d,b=%d\ return 0; } 运行结果: 3、编程设计题 1,调试后的正确程序: #include int x ; printf(\"Please input one char:\"); 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(\"Please input x,m,n:\\n\"); scanf(\"%hu%hu%hu\ result=(x>>m)<<(15-n+1); printf(\"%hu\ return 0; } 运行结果: 3 调试后程序: #include unsigned long int x; int a,b,c,d; printf(\"Please input x:\"); scanf(\"%lu\ a=(x&A)>>24; b=(x&B)>>16; c=(x&C)>>8; d=(x&D); printf(\"%d.%d.%d.%d\} 运行结果: 四、实验体会 C语言的学习需要平时多多练习;在编写程序时经常忘记一些基本格式,或者把优先级搞错,有时候还把声明忘了,需要多多留心一些细节。 因篇幅问题不能全部显示,请点此查看更多更全内容