C语言第1次上机

更新时间:2023-03-17 18:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计 实验报告

班级 日期 学生姓名 学号

第 1 次上机

实验1 表达式与标准输入输出

1.1实验目的

(1)熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类型及运算过程中的类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结核性。

(2)掌握getchar,putchar,scanf和printf函数的用法。 (3)掌握简单C程序(顺序结构程序)的编写方法。

1.2 实验任务

编写并上机调试运行能实现以下功能的程序。

(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。这些地址在机器中用无符号长整形表示。编写一个程序,以机器存储的形式读入一个互联网IP地址,对其译码,然后用常见的句点分隔的4部分的形式输出。例如,

整形676879571二进制表示就是:00101000 01011000 01011100 11010011,按照8位一组可表示为:40 88 92 211,由于CPU处理数据的差异,它的顺序是颠倒的,所有最终格式为211.92.88.40。

1.3 实验步骤及结果

(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验中出现的问题)

(1)分析:输入字符,判断是否为大写字母,转换时只需对字符C作C-‘A’+’a’处理。 #include void main(void) {

char c;

printf(\

scanf(\ if(c>'A'&&c<'Z'){

}

c=c-'A'+'a'; printf(\} else

printf(\

问题:当if句后面缺{ }时

(2)分析:欲使其向左端靠齐,需要使无关项为零,可以先向左移再引入逻辑尺,也可以先移到最右端再移到最左端。这里用后者,对X作X》》M《《(15—N+1)处理。 #include void main() {

unsigned short int x,m,n; printf(\

scanf(\ x=x>>m<<(15-n+1); printf(\}

问题:当缺少分号时

(3)分析:把长整型数8位一组表示出来,需要先分别把这8位数移到最右端,再分别转换成十进制数字。这里还需注意四组数的顺序。 #include main() {

unsigned long x,a,b,c,d; printf(\ scanf(\

a=(x&0xff000000)>>24; b=(x&0x00ff0000)>>16; c=(x&0x0000ff00)>>8; d=(x&0x000000ff);

printf(\ }

问题:当printf(\时结果顺序颠倒

实验2 流程控制实验

2.1 实验目的

(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环语句的使用,掌握重复循环技术,了解转移语句与标号语句。 (2)熟练运用for、while、do-while语句来编写程序。 (3)练习转移语句与标号语句的使用。

(3)使用集成开发环境中的调试功能:单步执行,设置断点,观察变量值。

2.2 实验任务

编写并上机调试运行能实现以下功能的程序。 (1) 假设工资税金按以下方法计算:x < 1000元,不收取税金;1000 ≤ x < 2000,收取5%的税金;2000 ≤ x < 3000,收取10%的税金;3000 ≤ x < 4000,收取15%的税金;4000 ≤ x < 5000,收取20%的税金;x>5000,收取25%的税金。编写一个程序,输入工资金额,输出应收取税金额度,要求分别用if语句和switch语句来实现。

(2)编写一个程序,将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替。

(3)编写一个程序,打印如下的杨辉三角形。

1 /* 第0行 */ 1 1 /* 第1行 */ 1 2 1 /* 第2行 */ 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1

jjCCii每个数据值可以由组合计算(表示第i行第j列位置的值),而的计算如下:

Ci0?1 (i=0,1,2,…)

Cij?Cij?1*(i-j?1) / j (j=0,1,2,3,…,i)

说明:本程序中为了打印出金字塔效果,要注意空格的数目。一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。

(4)编写一个程序,将用户输入的任意正整数逆转,例如,输入1234,输出4321。 在此基础上添加代码找出5000以内的所有回文数,要求一屏显示20行每行5个回文数,用户输入ESC键退出,其它键继续显示。

2.3 实验步骤及结果

(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验中出现的问题) (1)

i>分析:if句需要列出所有表达式,除按要求的范围分别输出外,还需考虑X《0的情况。注意if语句的格式和输出数据的形式。 #include int main() {

float x;

printf(\ scanf(\

if(x<0)printf(\

else if(x>=0 && x<1000)printf(\ else if(x<2000)printf(\

else if(x<3000)printf(\ else if(x<4000)printf(\ else if(x<5000)printf(\ else

printf(\ return 0; }

问题:当if句后面多加了分号时

ii>分析:switch语句重在定义case为(int)(x/1000.0),就列举了0,1,2,3,4和default几种情况,注意switch的格式。 #include int main() {

float x ;int Case = 0;

printf(\ scanf(\

Case = (int)(x/1000.0); switch(Case) {

case 0:printf(\

case 1:printf(\ case 2:printf(\ case 3:printf(\ case 4:printf(\ default:printf(\ }

return 0; }

本文来源:https://www.bwwdw.com/article/xm8f.html

Top