#include<stdio.h>voidmain()1int a,b;unsigned c,d;long e,f;a=100 ;b=-100 ;e=50000;f=32767;c=a;d=b;printf("%d,%d \n",a,b),printf("%u,%u \n",a,b),printf("%u,%uI n",c,b);c=a-e;d=b=f;printf("%d,%d In",a,b),printf("%u,%u In",c,d),1请对照程序和运行结果分析:(1)将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的表示形式。(2)将一个大于32765的整数赋给整型变量,会得到什么结果。画出它们在内存中的表示形式。(3)将一个整数赋给无符号的变量,会得到什么结果(分别考虑该整数的值大于或等于65535以及小于65535的情况)。画出它们在内存中的表示形式。同学们可以改变程序中各变量的值,以便比较。例如:a=65580,b=-40000,e=65535,f=65580。Eg2-4:输入下面程序:#include<stdio.h>void main()tint ij,m,n;i=8 ;j=10 ;m=++i;n=j++,printf("%d,%d,%d,%d",;jj,m,n);7
7 #include <stdio.h> void main( ) { int a,b ; unsigned c,d ; long e,f ; a=100 ; b=-100 ; e=50000 ; f=32767 ; c=a ; d=b ; printf(“%d,%d \ n ”,a,b); printf(“%u,%u \ n ”,a,b); printf(“%u,%u \ n ”,c,b); c=a=e ; d=b=f ; printf(“%d,%d \ n ”,a,b); printf(“%u,%u \ n ”,c,d); } 请对照程序和运行结果分析: (1)将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的表示 形式。 (2)将一个大于 32765 的整数赋给整型变量,会得到什么结果。画出它们在内存中的表 示形式。 (3)将一个整数赋给无符号的变量,会得到什么结果(分别考虑该整数的值大于或等于 65535 以及小于 65535 的情况)。画出它们在内存中的表示形式。 同学们可以改变程序中各变量的值,以便比较。例如: a = 65580, b = -40000, e = 65535, f = 65580。 Eg2-4:输入下面程序: #include <stdio.h> void main( ) { int i,j,m,n ; i=8 ; j=10 ; m=++i ; n=j++; printf("%d,%d,%d,%d",i,j,m,n); }
(1)运行程序,注意i,j,m,n各变量的值,分别作以下改动并运行。(2)将程序中m,n的符值改为:m=i++;n=++j:再运行。(3)将程序改为:#include<stdio.h>void main()( inti,j;i=8; j=10;printf(%d,%d", i++, j++);运行并分析结果。(4)在(3)的基础上,将printf语句改为:printf("%d,%d",++i,++i);运行并分析结果。(5)再将printf语句改为:printf("%d,%d,%d,%d", i, j, i++, j++),运行并分析结果。(6)将程序改为:#include<stdio.h>void main()1int ij,m=0,n=0 ;j=10 ;i=8 ;m+=i++;n-=.-j;,printf("i=%d, j=%d, m=%d, n=%d",ji,j,m,n)1运行并分析结果。实验报告要求对照运行结果分析以上各程序的算法,及产生该结果现象的原因。四、实验内容二(综合及设计类)Eg2-5:将“China”译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。(1)请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为c’、,h’、,i、,n’、,a’,经过运算,使cl、c2、c3、c4、c5分别变为”G”、,1”、’m’、,r’、,e’,并输出,分析是否符合要求。(2)改变cl、c2、c3、c4、c5、的初值为:,T’、,o”、,d”、’a、y’,对译码规律作如下补充:,W”用’A"代替,,X”用'B'代替,,Y”用’C”代替,,Z”用’D,代替。修改程序并运行。(3)将译码规律修改为:将字母用它前面的第4个字母代替,例如:,E用’A'代替,,Z'用’U”代替,,D'用,Z”代替,,C”用'Y”代替,'B'用,X”代替,,A用,V’代替。修改程序并运行。8
8 (1)运行程序,注意 i,j,m,n 各变量的值,分别作以下改动并运行。 (2)将程序中 m, n 的符值改为:m=i++; n=++j; 再运行。 (3)将程序改为: #include <stdio.h> void main( ) { int i, j; i=8; j=10; printf(“%d,%d”, i++, j++); } 运行并分析结果。 (4)在(3)的基础上,将 printf 语句改为: printf(“%d,%d”, ++i, ++j); 运行并分析结果。 (5)再将 printf 语句改为: printf(“%d,%d,%d,%d”, i, j, i++, j++); 运行并分析结果。 (6)将程序改为: #include <stdio.h> void main( ) { int i,j,m=0,n=0 ; j=10 ; i=8 ; m+=i++; n- = - - j; printf("i=%d, j=%d, m=%d, n=%d",i,j,m,n); } 运行并分析结果。 实验报告要求对照运行结果分析以上各程序的算法,及产生该结果现象的原因。 四、 实验内容二(综合及设计类) Eg2-5:将“China”译成密码, 译码规律是:用原来字母后面的第 4 个字母代替原来 的字母。例如,字母“A”后面第 4 个字母是“E”,用“E”代替“A”。因此,“China” 应译为“Glmre”。 (1)请编一程序,用赋初值的方法使 c1、c2、c3、c4、c5 五个变量的值分别 为’c’、’h’、’i’、’n’、’a’,经过运算,使 c1、c2、c3、c4、c5 分别变 为’G’、’l’、’m’、’r’、’e’,并输出,分析是否符合要求。 (2)改变 c1、c2、c3、c4、c5、的初值为:’T’、’o’、’d’、’a’、’y’, 对译码规律作如下补充:’W’用’A’ 代替,’X’用’B’代替,’Y’用’C’代 替,’Z’用’D’代替。修改程序并运行。 (3)将译码规律修改为:将字母用它前面的第 4 个字母代替,例如:’E’用’A’ 代替,’Z’用’U’代替,’D’用’Z’代替,’C’用’Y’代替,’B’用’X’代 替,’A’用’V’代替。修改程序并运行
Eg2-6:求下列表达式的值,并编写程序,上机进行验证。①x+a%3*(int)(x+y)%2/4设 x=2.5,a=7,y=4.7②(float)(a+b)/2+(int)x%(int)y设 a=7,b=3,x=3.5,y=2.5Eg2-7:求下列表达式的值,并编写程序,上机进行验证。设a=12,n=5。① a+=a② a-=2③a*=2+3④ a/=a+a9
9 Eg2-6:求下列表达式的值,并编写程序,上机进行验证。 ① x+a%3*(int)(x+y)%2/4 设 x=2.5,a=7,y=4.7 ② (float)(a+b)/2+(int)x%(int)y 设 a=7,b=3,x=3.5,y=2.5 Eg2-7:求下列表达式的值,并编写程序,上机进行验证。 设 a=12,n=5。 ① a+=a ② a-=2 ③ a*=2+3 ④ a/=a+a
实验三顺序结构程序设计实验目的1、熟练掌握C语言中赋值语句的使用方法:2、掌握格式输入输出scanfO函数、printfO函数的调用语法;整型、实型、字符型数据的输入输出格式。3、掌握字符输入输出函数getcharO、putchar函数的调用语法。相关知识点scanfO函数和printfO函数的意义及用法:getcharO函数和putcharO函数的意义及用法;gets()函数和putsO函数的意义及用法;三、实验内容一(验证及程序分析)Eg3-1:从键盘输入两个0到127的整数,求两数的平方差并输出其值以及这两个整数的ASCII码对应的字符。(1)算法分析:标准ASCII码值范围是0到127,所以在这范围内的数可以以字符形式输出,实现方法是用格式输出函数并用格式符c控制输出。(2)源程序:#include<stdio.h>void main()1int x,y,sub ;scanf("%d%d",&x,&y),/*变量前一定要加取地址符&*/sub=x*x-y*y;printf("%c,%c,%din",x,y,sub),1(3)在VC++编辑环境下编辑源程序。(4)编译直到程序没有错误。(5)从键盘输入10050/,运行结果如何?(6)输出结果:Eg3-2:输入程序#include<stdio.h>void main()10
10 实验三 顺序结构程序设计 一、 实验目的 1、熟练掌握 C 语言中赋值语句的使用方法; 2、掌握格式输入输出 scanf()函数、printf()函数的调用语法;整型、实型、字符 型数据的输入输出格式。 3、 掌握字符输入输出函数 getchar()、putchar()函数的调用语法。 二、 相关知识点 scanf()函数 和 printf()函数的意义及用法; getchar()函数 和 putchar()函数的意义及用法; gets()函数 和 puts()函数的意义及用法; 三、 实验内容一(验证及程序分析) Eg3-1: 从键盘输入两个 0 到 127 的整数,求两数的平方差并输出其值以及这两个整数 的 ASCII 码对应的字符。 (1)算法分析:标准 ASCII 码值范围是 0 到 127,所以在这范围内的数可以以字符 形式输出,实现方法是用格式输出函数并用格式符 c 控制输出 。 (2)源程序: #include <stdio.h> void main( ) { int x,y,sub ; scanf("%d%d",&x,&y); /* 变量前一定要加取地址符& */ sub=x*x-y*y ; printf("%c,%c,%d\n",x,y,sub); } (3)在 VC++编辑环境下编辑源程序。 (4)编译直到程序没有错误。 (5)从键盘输入 100 50↙,运行结果如何? (6)输出结果: Eg3-2: 输入程序 #include <stdio.h> void main( )
tint a,b;float d,e ;charcl,c2;double fg;longm,n;unsigned int p,q ;a=61 ;b=62 ;cl=a';c2=b';d=3.56 ;e=-6.87 ;f-3157.890121g=0.123456789;m=50000;n=-60000 ;p=32768;q=40000;printf("a=%d,b=%d)nc1=%c,c2=%clnd=%6.2f,e=%6.2fin",a,b,cl,c2,d,e),printf("f-%15.6f,g=%15.12finm=%ld,n=%ldinp=%u,q-%uln",f,g,m,n,p,q);1(1)运行程序并分析结果。(2)在此基础上,修改程序的第10~15行(即变量赋值部分)为:b=62;a=61;c2=b;cl=a, f-3157.890121;g-0.123456789d-f,e-g,p=a=m=50000;q=b=n=-60000;运行程序,分析结果。(3)改用scanf函数输入数据而不用赋值语句,scanf函数如下:scanf%d%d.%c.%c.%f.%f%lf.%lf.%ld.%ld.%u.%u&a,&b,&cl,&c2,&d,&e,&f,&g,&m,&n,&p,&q);输入的数据如下:61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50000,-60000,32768,40000(回车)(说明:if和Id格式符分别用于输入double型和long型数据)分析运行结果。(4)将printf语句改为:printf("a=%d,b=%d)nc1=%c,c2=%clnd=%15.6f,e=%15.12fn", a,b,c1,c2,d,e);printf("f-%f,g=%flnm=%d,n=%d)np=%d,q=%d)n", f, g, m, n, p, q);运行程序,分析结果。(5)将p、q改用%o格式符输出。(6)将scanf函数中的%lf和%ld改为%f和%d,运行程序分析结果。对照程序和运行结果思考:(7)将一个负整数赋给一个无符号的变量,会得到什么结果。(8)将一个大于32767的长整数赋给整型变量,会得到什么结果。(9)将一个长整数赋给无符号变量,会得什么结果(分别考虑该长整数的值大于或11
11 { 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=50000 ; n=-60000 ; p=32768 ; q=40000 ; 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); } (1)运行程序并分析结果。 (2)在此基础上,修改程序的第 10~15 行(即变量赋值部分)为: a=61; b=62; c1=a; c2=b; f=3157.890121; g=0.123456789 d=f; e=g; p=a=m=50000; q=b=n= - 60000; 运行程序,分析结果。 (3)改用 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); 输入的数据如下: 61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50000,-60000,32768,40000(回车) (说明:lf 和 ld 格式符分别用于输入 double 型和 long 型数据)分析运行结果。 (4)将 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); 运行程序,分析结果。 (5)将 p、q 改用%o 格式符输出。 (6)将 scanf 函数中的%lf 和%ld 改为%f 和%d,运行程序分析结果。 对照程序和运行结果思考: (7)将一个负整数赋给一个无符号的变量,会得到什么结果。 (8)将一个大于 32767 的长整数赋给整型变量,会得到什么结果。 (9)将一个长整数赋给无符号变量,会得什么结果(分别考虑该长整数的值大于或