局部变量和全局变量可以重名;作用域遵循就近原则
#include<stdio.h>
int a=10;
void fun();
int main(int argc, char const *argv[])
{
int a=8;
fun();
printf("%d\n",a);// 这里是8
return 0;
}
void fun()
{
printf("a:%d\n",a); //这里是10
}
1.1 putchar()/getchar()
** 1.1.1 putchar**
功能:向终端输出一个字符
头文件:#include
函数的原型:int putchar(int c);
参数:要输出的字符
#include <stdio.h>
int main(int argc, const char *argv[])
{
//可以传一个字符常量
putchar('H');
putchar('\n');
//也可以传字符的ascii码
putchar(65);
putchar(10);
//也可以传一个保存字符或者字符ascii码的变量
char value1 = 'Y';
char value2 = 97;
putchar(value1);
putchar(value2);
putchar(10);
//也可以传一个能计算出结果的表达式
putchar('A'+3);//D
putchar(10);
int num = 48;
putchar(num+5);//5
putchar(10);
return 0;
}
1.1.2 getchar
功能:在终端获取一个字符<br /> 头文件:#include <br /> 函数的原型:int getchar(void);<br /> 返回值:获取到的字符<br />格式:<br /> %d int<br /> %c char<br /> %f float<br /> %lf double<br /> %s 字符串<br /> %p 指针<br /> %o 八进制 %#o<br /> %x 十六进制 %#x
#include <stdio.h>
int main(int argc, const char *argv[])
{
//char num1 = getchar();
//printf("输入的字符是[%d] [%c]\n", num1, num1);
//连续多次使用getchar时 会将 回车也就是换行符
//获取到,这种情况我们称之为 垃圾字符
//我们多次连续使用getchar时要清理垃圾字符
char num2 = getchar();
getchar();//可以吃掉垃圾字符 '\n'
char num3 = getchar();
getchar();//可以吃掉垃圾字符 '\n'
char num4 = getchar();
getchar();//可以吃掉垃圾字符 '\n'
printf("num2 = [%d] [%c]\n", num2, num2);
printf("num3 = [%d] [%c]\n", num3, num3);
printf("num4 = [%d] [%c]\n", num4, num4);
return 0;
}
scanf
#include <stdio.h>
int scanf(const char *format, …);
功能:按指定的格式向终端输入(输入完毕时以回车结束)
参数:多个
返回值:正确输入的字符个数
第一个字符输入格式错误,直接返回0
scanf格式必须和终端输入格式一一对应,不能加’\n’
变量名前边加&(取地址符),表示取变量的地址
int a=0;
scanf("%d",&a);
printf("a:%d\n",a);
=====================
int a=0,b=0;
scanf("%d %d",&a,&b);
printf("a:%d b:%d\n",a,b);
[2]垃圾字符回收
2.1 通过空格回收
可以回收一个或多个空格 tab 回车
#include<stdio.h>
int main(int argc, char const *argv[])
{
char c=0,d=0;
scanf("%c %c",&c,&d);
printf("c:%c d:%d\n",c,d);
return 0;
}
可以回收任意一个字符
#include<stdio.h>
int main(int argc, char const *argv[])
{
char c=0,d=0;
scanf("%c% *c %c",&c,&d);
printf("c:%c d:%c\n",c,d);
return 0;
}
2.3getchar
scanf输入结束时,会在终端输入’\n’;
解决’\n’对程序造成的影响:
功能:在终端获取一个字符 头文件:#include 函数的原型:int getchar(void); 返回值:获取到的字符
#include<stdio.h>
int main(int argc, char const *argv[])
{
while (1)
{
char a;
scanf("%c",&a);
printf("%c\n",a);
getchar();
}
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
//char num1 = getchar();
//printf("输入的字符是[%d] [%c]\n", num1, num1);
//连续多次使用getchar时 会将 回车也就是换行符
//获取到,这种情况我们称之为 垃圾字符
//我们多次连续使用getchar时要清理垃圾字符
char num2 = getchar();
getchar();//可以吃掉垃圾字符 '\n'
char num3 = getchar();
getchar();//可以吃掉垃圾字符 '\n'
char num4 = getchar();
getchar();//可以吃掉垃圾字符 '\n'
printf("num2 = [%d] [%c]\n", num2, num2);
printf("num3 = [%d] [%c]\n", num3, num3);
printf("num4 = [%d] [%c]\n", num4, num4);
return 0;
}
可以使用C语言编写一个简单的程序,通过ASCII码来实现将终端输入的字母进行大小写转换,非字母输入则打印"error"。
#include <stdio.h>
int main() {
char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
if (ch >= 'A' && ch <= 'Z') {
// 输入的是大写字母,转换为小写
ch = ch + 32; // 小写字母的ASCII码比大写字母多32
printf("转换后的字符:%c\n", ch);
} else if (ch >= 'a' && ch <= 'z') {
// 输入的是小写字母,转换为大写
ch = ch - 32; // 大写字母的ASCII码比小写字母少32
printf("转换后的字符:%c\n", ch);
} else {
// 输入的不是字母,输出"error"
printf("error\n");
}
return 0;
}
可以使用C语言编写一个简单的程序,根据输入的成绩范围输出相应的等级或补考信息
#include <stdio.h>
int main() {
int score;
printf("请输入一个成绩(0-100):");
scanf("%d", &score);
if (score >= 90 && score <= 100) {
printf("等级:A\n");
} else if (score >= 80 && score <= 89) {
printf("等级:B\n");
} else if (score >= 70 && score <= 79) {
printf("等级:C\n");
} else if (score < 70 && score >= 0) {
printf("补考\n");
} else {
printf("输入无效,请输入0-100之间的成绩\n");
}
return 0;
}