by1234kdz
1.C
原因:x取地址只取3位,之后到y,后面的数字都给到y,而y是float类型的,所以x=123而y=45.67800
2.原因:
程序由上而下运行
get
c1 getchar获取第一个字符1
a1 取得2
c2 获取之后的第一个,即a
a2 获取b以前的三位
17,21,11\n
3.140000,3.142\n
5.大写转换小写
#include <stdio.h>
#include <string.h>
int main() {
char arr[255];//定义一个char类型数组用于存放字母
char change;//定义一个char类型的交换媒介
int length;
printf("输入一个大写字母字符串:");
gets(arr);
length=strlen(arr);//数组长度
int i;
for(i=0;i<length;i++){
change=arr[i];
arr[i]=change+32;//数组的元素转换为小写
}
puts(arr);//输出修改后的数组
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/baac2a05c78547118b0ca9678e5d3386.png#pic_center
显然,scanf只能接收一个\n,所以会导致输入第一个换行之后,其他的所有都会被继续执行,所以只需要清除scanf中\n的缓存就可以继续输入。所以用到getchar(),以下是修改后的代码:
#include <stdio.h>
int main(){
int a;
char b;
float c;
printf("Please input an integer:");
scanf("%d",&a);
printf("integer:%d\n",a);
getchar();
printf("Please input a charater:");
scanf("%c",&b);
printf("character:%c\n",b);
getchar();
printf("Please input a float number:");
scanf("%f",&c);
printf("float:%f\n",c);
}