网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
10月18日漏签0天
c语言吧 关注:800,356贴子:4,367,378
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 3 4 5 6 7 8 9 下一页 尾页
  • 238回复贴,共9页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

零基础C语言入门

  • 只看楼主
  • 收藏

  • 回复
  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是本人的C语言自学笔记,不算严谨的教程。


  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门001——编译器下载
201901开始自学c语言。
看过的教程:
1. 百度贴吧编程吧——愿望de星 2010年(不知道会不会过时)。写的教程(帖子隐藏了)
对零基础很友好。我也很喜欢贴吧的氛围。我把帖子整理了打印了出来。很感谢这个领路人。让我这个没上过大学在社会上混了十多年的人看了帖子觉得C语言没那么难。
2. 优酷北方素素的视频,浏览产不高,但也是这个视频带我入门。
3. 神书《c primer plus》。79块钱买了这本厚书之后发现这个版本花里胡哨,新手看的云里雾里。如果是新手强烈不推荐,还不如全网黑的谭浩强,甚至还不如我几块钱打印的百度帖子。网上真的很多无脑黑谭浩强,无脑吹cprimer。
4. B站小甲鱼的教学视频(从零开始学习C语言这一个系列80%的笔记转载自小甲鱼老师)。对零基础很友好。强烈推荐。B站给我打开了一扇新的大门,说B站是一所没有院墙的大学一点不为过。
5. B站C3程序猿,非常适合零基础。很优秀的老师,讲的很细,细到每一个小符号反斜杠。能把新手难以理解的概念给你讲透彻。新手常见的错误都能照顾到。因为他有几十个qq群,还开了直播间。反馈很及时。结合思维导图xmind和桌面黑板pointfix。很生动形象。课程安排相对小甲鱼也比较合理(虽然名气浏览量没有小甲鱼高,小甲鱼的概念有时会有点跳跃)。先讲地址再讲指针(地址讲透彻了指针就水到渠成了),先讲指针再讲函数,先讲函数再讲字符串,因为字符串要用到函数。
还有一点就是这个老师对c语言的语法逻辑研究的很深。就是不光教你怎么写代码,还教你c语言规定这么写的语法逻辑。
重点推荐的是4,5两个视频教程。这两个都是作者的第二套教程,更成熟,且对新手常见的问题能照顾到。
20190409注册csdn 博客写学习笔记
有想学的上车跟我一起学。我的学习方法是边看C3的教程边敲代码边思考。不能光看不动手。
写代码前要准备的工具(开发环境):
windows系统(苹果系统不了解)
Microsoft Visual Studio Community 2017版(功能强大,占用空间比较大,好几个G,比较臃肿)
平板电脑或手机也有很不错的编译器应用。
其他的推荐codeblocks。不推荐老古董。
vs2017社区版下载时选c/c++,组件就用默认勾选,全勾选几十个G了。也用不到。
安装好后打开如图:



右击源文件——添加——新建项



运行后黑框闪退的解决方法:
(或者在rerurn 0;上面一行加上system (“pause”);)


vs2017里,scanf()函数要加_s,会更安全(这跟其他编译器不同)
不想加要设置sdl检查



2025-10-18 09:13:35
广告
不感兴趣
开通SVIP免广告
  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门002——用helloworld小程序举例学习c语言语法
机器语言 <——> C语言
机器(cpu)只懂0和1这两种指令。(计算机芯片由很多晶体管组成,晶体管只有关与开两种状态,分别用0和1表示。这样就有很多种组合)。编译器把我们的代码解析编译成机器语言00100011001,给cpu进行运算。
如果你不按照c语言的语法,输入的是编译器不懂的命令。编译器就读不懂你的指令。不能正确的解析,编译。你给我的是什么啊 ?你想要干嘛?其实我们设计一门编程语言就是设计的一套规范约定。程序员只有按照约定好的格式输入。程序才会被正确的编译,执行。
现在开始我们第一个程序,这也是人类历史上第一个c程序
vs2017——文件——新建——项目,windows桌面——windows桌面向导,
在解决方案管理器里点源文件——新建项——c++文件(cpp)——名称改为helloworld.c。这里后缀一定要用.c因为我们学的是c语言
#include <stdio.h>
int main(void)
{
printf("Hello world!\n");//输出一句话
system("pause");
return 0;
}

1. 包含头文件
standard标准 in输入out输出head头文件
头文件里有标准输入输出函数等
2. 主函数
主函数是所有分支程序的入口。所有程序都是从主函数的位置开始执行,再自上而下执行主函数花括号里的程序。
一个项目里只能有一个主函数
int main(int argc, const char*argv[])标准主函数 、命令行
c99 标准 int main(void) void意思是该函数没有参数
3. printf()函数
函数 是一个独立的,自主式代码段,用来完成特定的任务,且能被重复使用。如main() printf() scanf()。
调用printf()函数(标准输出函数),函数名后面的小括号里填入所需参数即可。当程序运行到这一行时,控制权被转给已命名的函数printf,函数执行结束后控制权被返回至主函数main。
print(打印)这里与打印没用半毛钱关系。这里的意思是输出,在屏幕上显示。
4. system(“pause”)卡住程序,方便观察结果,其他编译器可能不用加这一行。
5. 返回值
一般函数都有一个返回值。这个以后再讲。
6. 注释
/*……*/或 '//……给程序添加注释
电脑能够理解你的程序,然后其他人或许也会读你的程序。另外,你会经常修改程序,如果程序非常庞大,你可能不记得你之前写的东西有什么功能,别人看了没有注释的代码也很难知道是什么意思,没有条理。
所以给程序加必要的注释是非常好的习惯。
注意:我们加注释不是给电脑看的,而是给我们人看的,电脑会忽略我们的注释,不会运行。
有时候,调试程序的时候想暂时删除某一行或几行代码,可以在这些代码前加注释符,编译器就会无视这些代码。想恢复的时候去掉注释符。
7. 英文符号
代码里所有的符号如大括号小括号分号句号 都是英文符号。一定要切换成英文输入法。中文符号跟英文符号长的很像很难发现。特别像逗号小括号之类。
中文分号会比英文大一点。
分号的作用告诉编译器,一条语句在哪里结束,下一条语句在哪里开始。少了分号必定会报错。
双引号没有正反之分,前后两个引号完全一样,有的系统显示问题统一显示成正引号,造成打不出反引号的错觉。
8. 空格和空行(不是反斜杠n)理论上想怎么加就怎么加。编译器会忽略空格空行,逐个读取字符。但我们为了程序员自己或其他人好懂,从排版就能很直观明白各部分代码的结构和功能。代码的良好排版不是给编译器看的,是给我们程序员自己和同事看的。如果你代码一个空格空行都没有,像这样:#include <stdio.h>
int main(void) { printf(“Hello world!\n”); system(“pause”); return 0; }程序也是能正常运行,但你可能会被其他同事暗杀。或者过很久自己也会去看,你很可能不记得之前写的东西有什么功能。


  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门003——printf()格式化输出函数与转义字符
print(打印)这里与打印没用半毛钱关系。这里的意思是输出,在屏幕上显示。
printf() 格式化输出函数,顾名思义就是按照标准的格式输出到屏幕。
这些常用的函数是编译器中提前定义好的,目的是增加程序的效率。我们要用的时候直接调用就行。
\n 转义符(转义符来用打印一些特殊含义的符号或执行特殊任务),表示换行。
#include<stdio.h>
int main(void)
{
printf("hello\n");
printf("world\n");
system("pause");
return 0;
}

在字符串中反斜杠 + 字符是转义字符,代表特殊含义。
转义字符就是配合反斜杠来打印一些特殊功能的字符或执行特殊命令。
下面表格是常用的转义字符


圈中如果是\a运行结果就是计算机响一声。如果是printf(“hello\b”)运行结果就是hell
%d是转换说明符,转换说明符又叫格式说明符,决定着输出的格式。也有占位置的作用。

想按照特定格式输出,可以加一些修饰符。
printf()修饰符表

思考题:

这个题有些偏了,可以在编译器中敲代码,运行看下结果。想不出原因可以绕过。


  • 云羽与
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有心了


  • 云羽与
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主辛苦


  • 滑稽滑稽滑稽
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主你好棒


  • fp43219
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


2025-10-18 09:07:35
广告
不感兴趣
开通SVIP免广告
  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
课后作业
用printf()打印图形



  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门004——数据类型、变量、赋值运算符、变量打印
某年级各班的同学总数:56人,60人,69人……
各同学的体温:37.2℃,36.5℃,36.9℃,
水库水位变化值:12.1米,15.6米,12.0米……
单词和中文:hello world!我爱你
这些都是数据。
为什么要给数据分类型
所占内存不一样即大小不一样。计算机对他们分类处理。不同的数据类型对应着自己的存储和计算方式。这样会让计算机工作更有条理,计算更加清晰,从而增加计算效率。


整型变量 int类型 12 ,111 和上例中各班人数
浮点型变量 float类型 2.5 ,7.0, 123.4 和上例中水位、体温
双精度浮点型变量 double类型
字符型变量 char类型 ‘a’ ‘X’
C语言把数据存放在变量中,变量就是电脑内存里的一个盒子,用来保存数字或字符
这个盒子里面的东西是变化的,例如我放一个数字1放进这个盒子,这个盒子现在装的是数字1,然后我又放数字2进入,原来的数字1就自动替换成数字2,然后你放什么进去,它就是总是替换,它是可变的
数据类型就可以用变量来表现
每个变量都有名字,因为你得知道你存放的是哪个盒子,所有盒子得标个记号
有了变量名你就声明一个变量了。或者说建立。在内存中申请一块空间来放我们的数据。
例如:
int a意思就是说我用一个叫a的变量,类型int,存放整数。
或者说我拿了一个盒子,做了个标记a,以后用来存放整数。
int a
char b
float c
以上就是声明不同类型的变量。但要记住,在一个程序中,变量名不能重复。例如:
int a
int a
或
int a
float a
都是错误的。变量名有唯一性。
C 语言变量命名需要遵守的规范
C语言变量名只能是英文字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成,空格和其他特殊字母不行。下横线通常用于连接一个比较长的变量名,比如i_love_fishC
第一个字母必须是由英文字母或者下划线开头,也就是不能用数字开头。
变量名区分大小写。因为C语言是大小写敏感的编程语言,也就是大写的FISHC跟小写的fishc会被认为是不同的两个名字。在传统的命名习惯中,我们用小写字母来命名变量,用大写字母来表示符号常量名。
不能使用关键字来命名变量。

声明了一个变量,我们就可以使用这个变量了,可以在里面存放数据。
可以在声明的时候存放:
int a=1
注意:不能念:a等于1,要念:把1赋值给变量a
也可以在声明后存放:
int a;//声明
a=1//赋值
还可以用表达式存放:
int a;
a=3-2
甚至还可以加入其他变量
int a;
int b=2
a=b-1
另外,声明变量的时候可以连续声明:
int a,b
还有int a=1,b;
但是不可以int a=b=12;因为b还没有声明。
“=”不是数学里的等号,可以把他看成一个向左的箭头,把右边的值传递到左边。
“=”左右两边的数据类型必须一致。不能int a;a=2.9
“=”左边不能为常量。常量不能被修改被赋值。一定要是一个可以修改的变量(左值)。不能2=a。
变量的打印
#include<stdio.h>
int main(void)
{
int num = 56;
float num1=12.0;
printf("%d\n%f\n",num,num1);
system("pause");
return 0;
}
注意:printf()前面的类型%d%f一定要跟后面的变量的类型个数一致,一一对应。
不能printf("%f",num), 也不能printf("%d",num1)
#include<stdio.h>
int main(void)
{
int a=1;
printf("%d\n",a+1);
system("pause");
return 0;
}

也可以不用变量,只用常量。表达式可以作为参数
#include<stdio.h>
int main(void)
{
printf("%d\n",2+3);
system("pause");
return 0;
}
C 语言声明变量的语法
int a; // 在内存中找到一个整型大小的位置,然后霸占起来,并给它命名叫 a
char b; //在内存中找到一个字节大小的位置,然后霸占起来,并给它命名叫 b
float c; //在内存中找到一个单精度浮点型数据大小的位置,然后霸占起来,并给它命名叫 c
double d; //在内存中找到一个双精度浮点型数据大小的位置,然后霸占起来,并给它命名叫 d
在 C 语言里,所谓的数据类型就是坑的大小。我们说变量就是在内存里边挖一个坑,然后给这个坑命名。那么数据类型指的就是这个坑的尺寸形状。C 语言允许使用的类型如上图。
我们可以为这些基本数据类型加上一些限定符,比如表示长度的 short 和 long。比如 int 经过限定符修饰之后,可以是 short int,long int,还可以是 long long int(这个是 C99 新增加的)。
这里需要说的是,这里 C 语言并没有限制 int 的坑具体要挖多大,short int 或 long int 的坑又要挖多大。标准只是要求:short int <= int <= long int <= long long int。


  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门005——字节、位、取值范围、sizeof()运算符
1.比特位和字节
CPU 能读懂的最小单位(只能存放 0 和 1)—— 比特位,bit,b
内存机构的最小寻址单位 —— 字节,Byte,B
关系:1Byte == 8bit
因此,一个字节可以表示最大的数是:11111111(二进制的255即2的8次方-1)
2.二进制、十进制和十六进制

3. 符号位
存放 signed 类型的存储单元中,左边第一位表示符号位。如果该位为 0,表示该整数是一个正数;如果该位为 1,表示该整数是一个负数。
一个 32 位的整型变量,除去左边第一位符号位,剩下表示值的只有 31 个比特位。
4.补码
计算机是用补码的形式来存放整数的值。
正数的补码是该数的二进制形式。
负数的补码需要通过以下几步获得:
先取得该数的绝对值的二进制形式
再将第1步的值按位取反
最后将第2步的值加1

5. 二进制表示最大值和最小值6. 基本数据类型的取值范围
6. 基本数据类型的取值范围


7.sizeof用于获得数据类型或表达式的长度
注意sizeof()是一个运算符,不是一个函数
sizeof后面可以是对象sizeof (9.9)
也可以是变量名int a ;sizeof(a)
也可以是类型名sizeof(char)
#include<stdio.h>
int main(void)
{
int i = 2;
float j = 3.0;
char k = 'g';
double l = 3.0;
printf("int 类型所占字节: %d\n",sizeof(int));
printf("变量 i 所占字节: %d\n",sizeof(i));
printf("float 类型所占字节: %d\n",sizeof(float));
printf("变量 j 所占字节: %d\n",sizeof(j));
printf("char 类型所占字节: %d\n",sizeof(char));
printf("变量 k 所占字节: %d\n",sizeof(k));
printf("double类型所占字节: %d\n",sizeof(double));
printf("变量l所占字节: %d\n", sizeof(l));
system("pause");
return 0;
}


  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门006——交换ab两个变量的值
想交换两个变量的值,a=b,b=a;这样行吗。试验:
#include<stdio.h>
int main(void)
{
int a = 3, b = 5;
a = b;//b的值赋给a,这时两个的值都是5
b = a;//a的值为5赋给b
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}

试想有两篇博文 ,想交换两篇的内容,复制一篇的内容粘贴到另一篇会覆盖后者。怎么办?只有找个临时中转,新建一个博文或文档。把前面一个复制进去,再把后者覆盖到前者,再把中转文档复制到后者。同理,交换变量的值就可以新定义一个中间变量来暂时存放其中一个变量的值。
int t;
t=a//a的值先放到中转变量里;
a=b;//b的值赋给a
b=t;//中转变量里存的值也就是最初a的值赋给b


  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门007——ascⅡ字符表、字符常量
ASCⅡ(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准 ISO/IEC 646。
标准 ASCⅡ字符表使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9,标点符号,以及在美式英语中使用的特殊控制字符。
其中,ASCⅡ 字符表上的数字 0~31 以及 127(共 33 个)分配给了控制字符,用于控制像打印机等一些外围设备:
数字 32~126 分配给了能在键盘上找到的字符

//设计一个程序,输入ascⅡ码就能输出对应的字符
#include<stdio.h>
int main(void)
{
printf("%c\n", 49);
system("pause");
return 0;
}
//设计一个程序,输入字符就能输出对应的ascⅡ码
#include<stdio.h>
int main(void)
{
char ch ;
printf("请输入一个英文字符\n");
scanf("%c", &ch);
printf("他对应的ascⅡ码为%d\n", ch);
system("pause");
return 0;
}
输入一个大写字母并转换成小写字母:

字符常量的本质就是整型常量,其值为对应ascⅡ 值。占四个字节 。(字符变量占一个字节)。如’A’可以直接当数字(对应的ascⅡ值65)来使用,直接放入表达式运算。如:‘A’+2,等效于65+2。


  • 雲淡風輕alex
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
零基础C语言入门008——变量的地址、scanf()格式化输入函数
变量的地址:
每个变量都对应一块内存空间,计算机每一个空间都有唯一的一个标志代表着,本质是一个数,从0开始到很大的一个数,32位程序是2ˆ32-1,64位程序是2ˆ64-1。这个数就是地址,就像我们家的地址一样。

#include<stdio.h>
int main(void)
{
int a = 12;
printf("%p\n",&a);
system("pause");
return 0;
}
&表示取地址,%p表示打印16进制的地址
注意,这个地址值,不同的编译器结果都可能 不一样,同一台电脑同一个编译器,再次编译结果也可能 不一样,内存随机分配。
学会了打印(也就是输出),能在程序中打印变量的值了,但也只能打印我们事先在程序中写好的值。
能不能在程序过程中自己手动用键盘输入变量的值,再打印出来呢?
这时我们就要学习scanf()标准输入函数。格式如下:
scanf("%d",&a);
&是取址符。
scanf("%d",&a);的意思就是你从键盘输入一个整型变量的值,它会自动存放到变量a那个地址。也就是它会找到那个标记为a的盒子,然后把值放进去。
为什么printf()没&,因为它是直接输出,a变量的地址已经事先知道,而scanf() 我们输入数据都是直接输入到内存里的。变量a的值从外部获取,得先知道变量a的地址,知道地址你才好把值放进去。且标准输入函数的格式需要,后面要的是地址信息。
每个变量名都有对应的地址,变量名只是地址的别名,就好像外号一样,之所以用变量名而不用地址名,因为变量名比地址名好记,方便。而地址名是数字,你不可能知道地址的十六进制数字00x0是什么。
扯远了,内存地址在学指针的时候你就会知道,现在先别管这些,知道太细反而越弄越糊涂,你现在就只需要知道scanf()的格式scanf("%d",&a);和print()差不多,但是变量名前一定要加&,除了scanf("%s",a);字符串格式就不需要,这也跟指针有关系,现在先别管,你只要知道除了%S,其他类型的变量都要在前面加&, 引号里面注意不要加\n,没必要
printf()是格式化输出函数,我想这个你们应该很容易掌握
scanf()是格式化输入函数,顾名思义,就是你在输入时必须按照指定的格式输入才行
#include<stdio.h>
int main(void)
{
int num=5;
printf(“前:%d\n”, num);
//前面加个输入提示
printf(“请输入一个整数:”);
scanf("%d", &num);
printf(“后:%d\n”,num);
system(“pause”);
return 0;
}
#include <stdio.h>
main(void)
{
int a,b;
printf(“请输入两个数\n”);
scanf("%d%d",&a,&b);
printf(“a=%d,b=%d\n”,a,b);
system(“pause”);
return 0; }
这个是连续输入
输入1 回车 输入2 回车
或者
输入1 空格 输入2 回车
注意:最后的回车是必要的,意味着完成输入
现在再改变一下
把scanf("%d%d",&a,&b);改成scanf("%d,%d",&a,&b);中间加一个逗号
那么,再怎么输入?
注意:出现怎么打什么
先输入1,再输入,(逗号),再输入2 回车
就是这样:1,2 回车
结果也是a=1,b=2,如果输入1就回车,那么b的值就没办法获取,而是你想不到的结果(这个自己去运行)
无论出现什么你就照打什么
如scanf("%d;%d",&a,&b);你就打1分号2 回车
哪怕是一个字母一个符号
因为scanf跟printf不同,printf你双引号里面有什么,他都会打印在屏幕。效果直观,出现什么偏差可以对应着改双引号里面的内容。而scanf双引号里面出现的元素必须你手动输入,且一个不漏,一个不多,一一对应。否则就获取错误的值。经常性的错误有scanf("%d,%d,%d",a,b,c)三个%d用逗号或其他符号隔开,scanf(“a=%d,b=%d,c=%d”,a,b,c)。结尾或用\n。然后键盘输入的时候又没输入逗号。或者scanf("%d%d%d",a,b,c)输入的时候又加逗号隔开,这样b的值就是你输入的第二个逗号。且很难发现。
所以scanf里面除了%d%d%d什么符号都不要带。逗号和\n都不需要。输入的时候,输入一个就按一下回车表示完成一个,中间不要加任何符号。如果你非要手贱不加不舒服,那么输入的时候就必需对应的输入
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
#include <stdio.h>
int main(void)
{
int a;
float b;
char c;
printf("请输入a的值:");
scanf("%d",&a);
printf("请输入b的值:");
scanf("%f",&b);
printf("请输入c的值:");
scanf("%c",&c);
printf("a的值为:%d,b的值为:%f,C的值为:%c\n",a,b,c);
system("pause");
return 0;
}
这个是正确的吗?你运行的时候你就会发现,变量c没办法输入了,程序直接结束
哪里有问题?
下面我们来分析
首先程序显示 请输入a的值:
我们输入1,在按回车键
又会显示 请输入b的值:
我们输入1.1 按回车
这时候程序就会显示
请输入c的值:a的值为:1,b的值为:1.100000,C的值为:
这是为什么?别忘了之前说过,空格和回车也是字符
开始输入了1到了变量a里,按回车,继续下一个输入
又输入了1.1到了变量b里
此时再按回车的话,就会被scanf接收了,因为变量c是字符格式,回车也是字符,自动存到变量c里
非字符变量,用scanf连续输入,按空格或回车会等待下一个输入
但是字符和字符串变量,scanf会直接接收空格和回车
怎么解决?在%c前面加一个空格,就是这样scanf(" %c",&c);
#include <stdio.h>
int main(void)
{
int a;
float b;
char c;
printf("请输入a的值:");
scanf("%d",&a);
printf("请输入b的值:");
scanf("%f",&b);
printf("请输入c的值:");
scanf(" %c",&c);
printf("a的值为:%d,b的值为:%f,C的值为:%c\n",a,b,c);
system("pause");
return 0;
}
这样程序就能正常按我们意图运行。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 4 5 6 下一页 尾页
  • 238回复贴,共9页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示