描述
会说浮点数之后,牛牛开始尝试字符
输入一个字符,输出这个字符。
输入描述:
输入一个字符,范围在ascii范围内
输出描述:
输出这个字符
作答
#include <stdio.h>
int main()
{
char a[]={''}; //创建一个变量a 并将' '字符常量赋值给a 注释1
scanf("%s\n",a); //输入一个字符串赋值给a 注释2
printf("%s\n",a); //将a用字符串输出 注释3
return 0;
}
问题一 注释1
''引号里至少含有一个字符 正确:' '
解决问题后的代码
#include <stdio.h>
int main()
{
char a[]={'1','4'}; //创建一个变量a 并将' '字符常量赋值给a 注释1
scanf("%s\n",a); //输入一个字符串赋值给a 注释2
printf("%s\n",a); //将a用字符串输出 注释3
return 0;
}
问题二 注释1
建立数组是应该输入向内存申请空间的大小 不输入就会自动根据数据申请 从而可能导致内存溢出使程序出错
内存溢出:内存溢出是指程序在运行过程中,分配给程序的内存超出了计算机系统的可用内存,导致程序无法继续运行,出现崩溃或异常。
问题三 注释2
vs中 scanf输入函数不要输入换行转义字符\n,不然程序输出要输入两次数据
解决问题后的代码
#include <stdio.h>
int main()
{
char a[30]={'1','4'}; //创建一个变量a 并将' '字符常量赋值给a 注释1
scanf("%s",a); //输入一个字符串赋值给a 注释2
printf("%s\n",a); //将a用字符串输出 注释3
return 0;
}
衍生问题
%c是用来打印字符 为什么以下代码不行?
#include<stdio.h>
int main()
{
char a[] = { '1','2' };
printf("%c\n", a);
return 0;
}
解答:%c
格式说明符只能输出一个字符,因此在循环中需要使用多个 %c
来输出多个字符。
正确代码
#include <stdio.h>
int main()
{
char a[] = { '1','4'};
/*scanf("%s", a);*/
int i = 0;
while (i<2)
{
printf("%c\n", a[i]);
i++;
}
return 0;
}