C程序设计 实验二 数据类型、运算符和表达式 第6讲 2007.10.19
不同类型数据之间赋值、运算符的应用和表达式输出。 知识点 不同类型数据之间赋值、运算符的应用和表达式输出。
教学重点与难点 重点: 不同类型数据之间赋值;各种算术运 算符,特别是自加自减运算符。 难点:自加自减运算符;复合赋值运算。
实验目的及要求 1、掌握C语言的各种类型及其定义方法,赋值方法。 2、掌握不同类型数据之间赋值的规律。 熟悉文件系统控件及其应用。 3、学会使用各种算术运算符,特别是自加自减运算符。 4、进一步熟悉C程序的编辑、编译、连接和运行的过程。 熟悉文件系统控件及其应用。
教学过程 ● 讲解实验目的及布置实验任务 ● 检查、指导与解答问题 ● 实验小结 ● 布置预习
实验内容及实验步骤 main() { char c1,c2; c1=’a’; c2=’b’; printf(“%c%c\n”,c1,c2); 题目1 输入并运行下面的程序。 main() { char c1,c2; c1=’a’; c2=’b’; printf(“%c%c\n”,c1,c2); }
① 运行此程序 ② 在此基础上增加一个语句 printf(“%d %d\n”,c1,c2); 再运行,并分析结果。
③ 将第2行改为: int c1,c2; 再运行,并观察其结果。 ④ 将第3、4行改为: c1=a; c2=b; 再运行,并分析结果。 ⑤ 在将3、4行改为: c1=”a”; c2=”b”;
题目2 输入并运行习题3.6给出的程序。 ⑥ 在将3、4行改为: c1=300; /* 用大于255的整数 */ c2=400; 再运行,并分析结果。 题目2 输入并运行习题3.6给出的程序。 main( ) { char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; printf("a%cb%c\tc%c\tabc\n",c1,c2,c3); printf("\t\b%c%c",c4,c5); }
题目3 练习一个有关字符和整型的程序。 main() { char c1,c2; c1=97; c2=98; 题目3 练习一个有关字符和整型的程序。 main() { char c1,c2; c1=97; c2=98; printf("%c %c\n",c1,c2); /*以字符形式输出*/ printf("%d %d\n",c1,c2); /*转换为整数形式输出*/ } 思考:可否改成 int c1,c2;?
题目4 输入并运行下面的程序。 main ( ) { int i,j,m,n; i=8; j=10; m=++i; n=j++; printf("%d,%d,%d,%d",i,j,m,n); }
思考: main ( ) { int i,j; i=8; j=10; printf(“%d,%d ”,i++,j++); ① m=++i;与m=i++;的不同之处? ② 若将4、5行该为: m=i++; n=++j; 再运行。 ③若将程序改为: main ( ) { int i,j; i=8; j=10; printf(“%d,%d ”,i++,j++); printf(“%d,%d ”,i,j); }
题目5 输入并运行下面的程序。 main( ) { int a=9; a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/ printf("%d\n",a); } 思考:赋值表达式a+=a-=a+a的求解步骤?
思考:若将printf函数中%d变为%f,可否输出分式的值? 题目6 输入并运行下面的程序。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); /*输出赋值表达式的值*/ } 思考:若将printf函数中%d变为%f,可否输出分式的值?
题目7 输入并运行下面的程序。 main( ) { int a=011; /*八进制整常量赋给a*/ printf(“%d\n”,++a); /*先自加,再使用a值*/ } 分析结果:
题目8 若int类型数据占两个字节,分析输出结果. main( ) { int k=-1; printf("%d,%u\n",k,k); } 思考:-1在内存中的存储形式?
题目9 输入并运行下面的程序。 #include<stdio.h> main( ) { printf("%d",null); } 运行情况: 因为变量null无定义,无法正确运行。 思考:如将null改为NULL,则结果如何?
题目10 若k,g均为int型变量,则分析结果。 main( ) { int k,g; k=017; /*此处为八进制常量*/ g=111; /*此处为十进制常量*/ printf("%d\t",++k); /*以十进制输出表达式++k的值*/ printf("%x\n",g++); /*以十六进制输出表达式g++的值*/ } 运行结果为: 16 6f
实验思考及讨论 i++和 ++i的区别 i--和 --i的区别
预习内容: 第四章 顺序结构程序设计