实验2 数据类型、运算符和简单的输入输出
1,实验目的
(1)掌握C语言数据类型,了解字符型数据和整型数据的内在关系。
(2)掌握对各种数值型数据的正确输入方法。
(3)学会使用C语言的有关算数运算符,移机包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
(4)学会编写和运行简单的应用程序。
(5)进一步熟悉C程序的编辑、编译、连接和运行的过程。
2,实验内容和步骤
(1)输入并运行教材第3章第4题给出的程序。
#include<stdio.h>
Int main()
{char c1,c2;
c1=97;
c2=98;
printf(“c1=%c,c2=%c\n”,c1,c2);
printf(“c1=%d,c2=%d\n”,c1,c2);
return 0;
}
运行以上程序,分析为什么会输出这些信息。
输出信息:c1=a,c2=b
c1=97,c2=98
Press any key to continue
第6行是将c1,c2按%c的格式输出,97是字符a的ASCⅡ代码,98是字符b的ASCⅡ代码。
第7行是将c1,c2按5d的格式输出,所以输出两个十进制整数。
如果将程序第4,5行改为
c1=197;
c2=198;
运行时会输出什么信息?为什么?
输出信息:c1=?,c2=?
c1=-59,c2=-58
Press any key to continue
由于Visual C++6.0字符型数据是作为signed char类型处理,它存字符的有效范围为0~127,超出此范围的处理方法,不痛的系统得到的结果不痛,因而用“%d”格式输出,结果是不可预期的。
用“%d格式输出时,输出c1=-59,c2=-58.这是按补码形式输出的,内存字节中第1位为1时,作为负数。59和197之和等于256,58与198之和也等于256.
如果将程序第3行改为
  int c1,c2;
运行时会输出什么信息?为什么?
输出结果:c1=a,c2=b
c1=97,c2=98
Press any key to continue
因为97和98在int类型的有效范围。
(2)输入第3章第5题得程序。即:
  用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问键盘上如何输入?
#include<stdio.h>
int main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f%e",&x,&y);
scanf("%c%c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
    return 0;
}
运行时分别按一下方式输入数据,观察输出结果,分析原因。
1,a=3,b=7,x=8.5,y=71.82,A,a
2,a=3  b=7  x=8.5  y=71.82  A  a
3,a=3  b=7  8.5  71.82  A  a
4,a=3  b=7  8.5  71.82Aa
5,3  7  8.5  71.82Aa
6,a=3 b=7
8.571.82
A
a
7,a=3  b=7
8.571.82
Aa
8,a=3  b=7
8.671.82Aa
printf输出格式char
通过此题,总结输入数据的规律和容易处所的地方。、、
1~8情况输入数据及输出数据:
1,    a=3,b=7,x=8.5,y=71.82,A,a↙
        a=3,b=-858993460,x=-10737.000000,y=-107374176.000000,c1=,,c2=b
        Press any key to continue
2,    a=3  b=7  x=8.5  y=71.82  A  a↙
        a=3,b=-858993460,x=-107374176.000000,y=-107374176.000000,c1=b,c2==
        Press any key to continue
       
3,    a=3  b=7  8.5  71.82  A  a↙
        a=3,b=-858993460,x=-107374176.000000,y=-107374176.000000,c1=b,c2==
        Press any key to continue
4,    a=3  b=7  8.5  71.82Aa↙
        a=3,b=-858993460,x=-107374176.000000,y=-107374176.000000,c1=b,c2==
        Press any key to continue
5,    3  7  8.5  71.82Aa↙
        a=-858993460,b=-858993460,x=3.000000,y=7.000000,c1= ,c2=8
        Press any key to continue
6,    a=3  b=7↙
    8.5  71.82↙
    A↙
    a↙
7,    a=3  b=7↙
    8.5  71.82↙
    Aa↙
8,    a=3  b=7↙
8.571.82Aa↙
(2)输入以下程序:
#include<stdio.h>
int main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
return 0;
}
编译和运行程序,注意i,j,m,n各变量的值。
9,11,9,10
    Press any key to continue
将第6,7行改为:
m=i++;
n=++j;
再编译和运行,分析结果。
9,11,8,9
    Press any key to continue
程序改为:
#include<stdio.h>
int main()
{int i,j;
i=8;
j=10;
printf("%d,%d\n",i++,j++);
}
再编译和运行,分析结果。
8,10
    Press any key to continue
的基础上,将printf语句改为
printf("%d,%d\n",++i,++j);
再编译和运行。
9,11
    Press any key to continue
再将printf语句改为:
printf("%d,%d,%d,%d\n",i,j,i++,j++);
再编译和运行,分析结果。
8,10,8,10
    Press any key to continue
程序改为:
#include<stdio.h>
int 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);
}
再编译和运行,分析结果。
i=9,j=9,m=8,n=-9
    Press any key to continue
(3)假如我国国民生产总值的年增长率9%,计算10后我国民生产总值与现在比增长的百分比。编写程序。
  #include<stdio.h>
#include<math.h>
int main()
{
float p,r; 
int n;     
scanf("r=%f",&r);
n=10;
p=pow(1+r,n);
printf("p=%f\n",p);
return 0;
}