贵州大学C语言实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
-Ex02-数据类型、运算符和
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式
实验课程名称 C语言实验报告 实验项目名称 数据类型、运算符和表达式 专 业 班 级 电子信息科学与技术08级1班 学 生 姓 名 学 号 指 导 教 师
理 学 院
实验时间:2010年4月22日
实验2 数据类型、运算符和表达式
1.实验目的
(1)掌握G语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它
们赋值的方法。
(2)掌握不同的类型数据之间赋值的规律。
(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加
(十十)和自减(一一)运算符的使用。
(4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 2.实验内容和步骤
(1)输人并运行下面的程序
#include
void 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行改为;
cl=a;/*不用单撇号*/
c2=b;
再使之运行,分析其运行结果。 分析:编译通不过,会显示a、b未被定义。
?再将第4,5行改为:
cl="a";/*用双撇号*/
c2 ="b";
再使之运行,分析其运行结果。
分析:编译通不过,有语法上的错误。
?再将第4,5行改为:
c1 = 300;/*用大于255的整数*/
c2 = 400;
再使之运行,分析其运行结果。
分析:字符型变量为一个字节,且为无符号型,字符会输出ASCII表中44和144所对应的
字符,而要将其转换为数字,会进行符号位扩展,则会输出44和-112。
(2)输人并运行教材第3章习题3. 6给出的程序
#include
main ()
{
char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c %c\n",c4,c5); }
分析输出结果:(短线代表空格数)
aa-bb---cc------abc
-------A-N
(3)输人并运行下面的程序
#include
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,d);
c=a=e;
d=b=f;
printf("%d,%d\n",a,b);
printf("%u,%u\n",c,d);
}
请对照程序和运行结果分析:
?将一个负整数斌给一个无符号的变t,会得到什么结果。画出它们在内存中的表 示形式。
符号位会变成数位位,数值的绝对值增大。
?将一个大于32767的长整数斌给整型变t,会得到什么结果。画出它们在内存中 的表示形式。
会出现从低位向高位截取16位,且第16位为符号位。
?将一个长整数赋给无符号变量,会得到什么结果(分别考虑该长整数的值大于或 等于65535以及小于65535的情况)。画出它们在内存中的表示形式。 会出现从低位向高位截取16位,且第16位为符号位。大于截取,等于为零,小于不变。
读者可以改变程序中各变的值,以便比较。例如:a = 65580, b=-40000. e =
65535,f=65580。
(4)输人习题3. 10
#include
void main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
?运行程序,注意i,j,m,n各变量的值。分别作以下改动并运行:
?将第6,7行改为:
m=i++;
n=++j;
再运行。
?将程序改为:
#include
void main()
{
int i,j;
i=8;
j=10;
printf("%d,%d\n",i++,j++);
}
?在?的基础上,将printf语句改为:
printf("%d,%d,%d,%d\n",i,j,++i,++j);
?再将printf语句改为:
printf("%d,%d,%d,%d\n",i,j,i++,j++);
?将程序改为:
#include
void main()
{
int i,j,m=0,n=0;
i=8;
j=10;
m+=i++;
n-=--j;
printf("i=%d,j=%d,m=%d,n=%d\n",i,j,m,n);
}
(5)按习题3. 7的要求编程序并上机运行
该题的要求是:
要将“China”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre" 。 请编一程序,用赋初值的方法使。cl,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使cl,c2,c3,c4,c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出。
?输入事先已编好的程序,并运行该程序。分析是否符合要求。
习题3.7的程序:
#include
void main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("password is %c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
?改变cl,c2,c3,c4,c5的初值为:‘T’、‘o’、‘d’、‘a’、‘y’,对译码规律作如下补充:‘W’用‘A’代替,‘X’用‘B’代替,‘Y’用‘C’代替,‘Z’用‘D’代替。修改程序并运行。
?将译码规律修改为:将一个字母被它前面的第4个字母代替,例如‘E’用‘A’代替,‘Z’用‘U’代替,‘D’用‘Z’代替,‘C’用‘Y‘代替,‘B’用‘X’代替,‘A’用‘W’代替。修改程序并运行。
程序如下:
#include
void main()
{
int i,n;char c,str[100];
printf("Please input words:\n");
gets(str);
n=strlen(str);
for (i=0;i<=n-1;i++)
{
c=str[i];
if(c>=97&&c<=122)
c='a'+(c-'a'-4+26)%26;
if(c>=65&&c<=90)
c='A'+(c-'A'-4+26)%26;
else
c='a'+(c-n)%26;
str[i]=c;
}
printf("The password is:\n%s",str);
getch();
}