c语言基础-4

局部变量和全局变量可以重名;作用域遵循就近原则

#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;
}

image.png

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;
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值