本篇为杂记若有需要的内容使用ctrl+f进行关键词查找
怎么输出"%"字符
int main(void)
{
printf("输入%%d %%c %%c zhangsan%%d\n");
return 0;
}
在前面加%即可
各参数控制符含义
%d是按照十进制整数形式输出
%nd中的n表示有效数字的位数;
%c是按照字符型输出;
%f是按照浮点数输出;
%lf是按照长浮点数输出;
%o是按照八进制输出;
%x是按照16进制输出;
%e是按照科学计数法输出结果
怎么使输出内容输出固定长度并设置左对齐右对齐
printf(“%5d”); // 每个占五个字符的位置,然后右对齐
printf(“%-5d”);// 每个占五个字符的位置,然后左对齐
怎么使程序运行完不自动关闭
头文件添加
#include <stdlib.h>
主函数main在return 0之前添加
system(“pause”)
加"#"表示以进制原型输出
仅在输出#o或#x或#X时有用(八进制,十六进制),作用是使输出的内容带上进制的前缀
例如对八进制数11 使用%o输出11,使用%#o则输出017)
例如对十六进制数1A 使用%x输出1a,使用%#x则输出0x1a)
连用两个scanf导致第二个参数获取不到值
char ch,ch2;
scanf("%c",&ch);
scanf("%c",&ch2);
printf("ch = %c\n",ch);
printf("ch2 = %d\n",ch2);
结果出错,第二个变量获取不到值
解决:
方法一:把第一个scanf 改成 scanf ("%c\n", &ch);
方法二:在第一个scanf 后添加下面的语句
fflush (stdin);
方法三:在puts ("再输入一个字符");语句下面添加下面的语句
while (getchar () != '\n');
方法四:在scanf()的%d前加空格
为什么输入时要加&但是输出时候不要
存储的数据存储在内存空间里,scanf是个输入函数,&(取地址符号)意味着在你输入数据后取变量的地址为存储对象。
输出时%d表示数据的输出形式,数据在存储空间内以二进制存储,不同的读取方式会有不同的结果,print是输出函数,输出变量地址的值。
在while中使用scanf注意点
#include <stdio.h>
int main(void)
{
char ch = '1';
while (ch != 'n')
{
float score;
printf("请输入你的成绩:");
scanf("%f",&score);
printf("是否重新输入?(y|n):");
scanf("\n%c",&ch);
}
return 0;
}
如上程序代码,若没有在scanf("\n%c",&ch);中加入\n,则程序在执行到scanf("%f",&score);时将\n当作一个字符处理,那么ch会得到一个错误的随机的值所以在回车后不询问你是否需要重新输入直接开始下次循环
方法1:在scanf里的输入控制符前加\n
方法2:在printf("请输入你的成绩:");后添加下面的语句
fflush (stdin);
方法三:在printf("请输入你的成绩:");下一行添加下面的语句
while (getchar () != '\n');
使用#计算时正负取决于被除数
5 % 2 = 1
5 % -2 = 1
-5 % 2 = -1
-5 % -2 = -1
怎么使运算返回实数
1. sum = sum + 1.0/i;
2. sum = sum +(float)(1.0/i);
3. sum = sum + 1/(float)i
4. sum = sum + 1.0 * 1 / i;//1.0默认为double型可能报错
错误:
sum = sum + (float)(1/i);
LNK2005:main already define in
你使用vc++6.0已经编译一个cpp文件且包含main()这时你不关闭这个窗口继续用这个没关闭的vc++6.0打开另一个含有main()的文件并编译就会发生
多行退格
shift+tab
自动补齐
alt+f8
文件名不能包含的字符
\
/
:
*
?
“
<
>
|