实验三  数据类型、运算符和简单的输入输出
printf函数具有计算功能吗
一、输入并运行教材第三章第四题给出的程序:
#include<stdio.h>
int main()
{char c1,c2;
c1=97;
c2=98;
printf("%c%C\n",c1,c2);
printf("%d%d\n",c1,c2);
return 0;
}
1.运行以上程序,分析为什么会输出这些信息
答:程序第四行以及第五行分别将97和98赋值给字符变量c1和c2,在c1和c2的存储单元中分别存放了97和98(以二进制形式存储)。第六行的目的是以字符形式输出c1,c2,即a,b。第7行以ASCII码形式输出c1,c2的值,得到97和98.
2.如果将程序第4、5行改为:
c1=197;
c2=198;
运行时会输出什么信息?为什么?
答:因为在该操作系统下,字符变量的赋值范围是0~127,而197,198超出了这个范围。
3.如果将第3行改为
int c1,c2;
运行时会输出什么信息?为什么?
答:同第1题,将97和98赋值给Int整型c1和c2,但以字符形式输出97和98通过ASCII码对应的a,b以及最后直接输出97,98.
二、输入第三章第五题的程序。即:
用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=7.1,c1='A',c2='a'。问在键盘上如何输入?
#include <stdio.h>
int main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%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;
}
运行时分别按一下方式输入数据,观察输出结果,分析原因。
答:scanf("a=%d b=%d",&a,&b);//这里a=%d b=%d是输入数字,而且中间是空格分开的,所以命令窗口输入时要遵循它的规则a=3 b=7两个之间的分隔符需要为空格或者换行符而不是用逗号a=3,b=7。这会使它不能辨认而导致数据溢出。