广 州 大 学
                验  报  告 
学      院      商学院                       
专业、班级                           
姓名、学号                              
课程名称      C程序设计                           
项目名称  数据类型、运算符和表达式实验                             
实验时间:  2012    年    3 月  20  日
数据类型、运算符和表达式实验报告
开课实验室:                                                2012年3月20日
学院
年级、专业、班
姓名
成绩
课程
名称
C程序设计
实验项目
   
指导教师
签名
一、实验目的
1.掌握C语言数据类型,熟悉如何定义一个整形、字符型和实型的变量,掌握它们赋值的方法。
2.掌握不同数据类型数据之间赋值的规律。
3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
二、实验原理(算法分析(包括流程图))
1.变量a、b中各存有一个整数,交换两数后输出。
2.从键盘输入一个字符,输出这字符的ASCII码的值。
3.整形变量的用法。编辑运行下面的程序,在上机前先用人工分析程序,写出应得结果,上机后将二者对照。
#include <stdio.h>
int  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);
                第1页
c = a = e;
    d = b = f;
    printf("%d,%d\n", a, b);   
printf("%u,%u\n", c, d);
return 0;
}
4.  基本输入输出函数的用法。编辑运行下面的程序,并根据执行结果分析程序中各个语句的作用。
#include  <stdio.h>
int main()
{
  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=5.67; e=-6.78;
  f=1234.56789; g=0.123456789;
  m=50000; n=-60000;
  p=32768; q=40000;
  printf("a=%d,b=%d\nc1=%c,c2=%c\n",a,b,c1,c2);
  printf("d=% f,e=% f\n",d,e);
  printf("f=% f,g=% f\n",f,g);
  printf("m=%ld,n=%ld\np=%u,q=%u\n",m,n,p,q);
  return 0;
            第2页
三、实验过程原始记录(数据、图表、计算等)
实验一:变量a、b中各存有一个整数,交换两数后输出。
输入为:a=10,b=20;输出为:a=20,b=10;
实验二:从键盘输入一个字符,输出这字符的ASCII码的值。
输入a;输出97:
实验三:运行给出程序
  上机前输出结果猜想:100,-100
                      100,206
                      100,206
                      50000,32767
                      50000,32767
  实际运行结果:    100,-100
                      100,4294967196
                      100,4294967196
                      50000,32767
                      50000,32767
                             
更改数据为    a = 65580;b = -40000;e = 65535;f = 65580;
输出结果为:65580,-40000
            65580,4294967196
            65580,4294967196
            65535,65580
            65535,65580
实验四:
源程序运行结果为:a=61,b=62
                  c1=a,c2=b
                  d=5.670000,e=-6.780000
                  f=1234.567890,g=0.123457
                  m=50000,n=-600000
                  p=32768,q=40000
                    第3页
四、实验结果及分析
实验一输出结果为:a,b值互换。
分析:在C程序设计中,两个值互换需要一个中间变量来储存数据,如果直接交换会导致其中一个数据丢失。
实验二分析: 实验二为自己设计的程序。在设计这个程序是要注意scanf的用法。Scanf为格式输入符,在输入字符时要注意字符输入方式。在本次实验中其调用格式为:scanf("<格式化字符串>",<地址表>);
实验三分析:输出格式的不同会导致输出结果的不同。将负数赋值给无符号变量时,无符号变量会将这个负值的符号也纳入计算范围从而返回一个正值,导致最后输出结果不正确。这个实验让我认识到在设计程序时要注意输出格式的选择。
实验四分析:实验四更加强调个语句中在程序的含义。
程序为:printf("d=% f,e=% f\n",d,e);
        printf("f=% f,g=% f\n",f,g);
输出结果为:
          当程序改为:printf("d=%-6.2f,e=%-6.2f\n",d,e);
                  printf("f=%-15.6f,g=%-15.10f\n",f,g);
      输出结果为:
    继续将程序改边为:printf("d=%-6.2f\te=%-6.2f\n",d,e);
                      printf("f=%-15.6f\tg=%-15.10f\n",f,g);
    输出结果为:
以上3种都是改变了输出格式使输出数据的有效数字改变。其中%f表示浮点型数据,%-15.6f表示输出数据向左对齐,右端补空格,输出数据中占15列、小数点后有六位小数。\t用来调整输出数据位置。%c表示输出字符。
总结:在c语言程序设计中,数据类型的选择、运算符的选择和表达式的书写都与结果的最后输出有很大的联系。就像数据类型的选择,如果将负数赋值到一个无符号变量里面,那么输出结果就会变成了一个正数输出;或者将双精度浮点型的数值赋值到单精度浮点型数据上就会导致部分数据丢失。所以在程序设计的过程中要慎用数据类型、运算符和表达式。
五、附录(自己实现的源代码)
实验一:#include "stdafx.h"
int main(int argc, char* argv[])
    int a,b,c;
    a=10;
    b=20;
    c=a;
    a=b;
    b=c;
    printf("a=%d\nb=%d\n",a,b);
    return 0;
}
实验二:#include "stdafx.h"
int main(int argc, char* argv[])
    Char c1;
scanf("%c",&c1);
    printf("%d",c1);
printf输出格式 无符号    return 0;
}
六、(e-mail)
  709378515@qq
                          第5页