牛客网编程初学者入门训练 BC
库函数
多组输入
1、!=EOF
~按位取反
~EOF
~-1
-1补码全1 整数在内存中存的是补码
~-1是全0 为假
#include <stdio.h>
int main()
{
int iq = 0;
while (~scanf("%d", &iq))
{
if (iq >= 140)
{
printf("Genius\n");
}
}
return 0;
}
2、~按位取反
#include <stdio.h>
int main()
{
int iq = 0;
while ((scanf("%d", &iq)) != EOF)
{
if (iq >= 140)
{
printf("Genius\n");
}
}
return 0;
}
消除\n的方法
1、getchar
#include <stdio.h>
#include <string.h>
int main()
{
int ch = 0;
char vowel[] = "aeiouAEIOU";
while ((ch = getchar()) != EOF)
{
if(strchr(vowel, ch))
{
printf("Vowel\n");
}
else
{
printf("Consonant\n");
}
getchar(); //清理 \n
}
return 0;
}
2、scanf空格处理\n
#inlcude <stdio.h>
int main()
{
int ch = 0;
char vowel[] = "aeiouAEIOU";
//在%c的前面加上空格,会消化掉前面所有的空白字符,然后读取下一个字符
while (scanf(" %c", &ch) != EOF)
{
if (strchr(vowel, ch))
{
printf("Vowel\n");
}
else
{
printf("Consonant\n");
}
}
return 0;
}
3、加\n
int main()
{
int ch = 0;
char vowel[] = "aeiouAEIOU";
//在%c的后面加上'\n',其实在输入时就会消化掉这个\n字符
//不会为下次留下空白字符的隐患
while (scanf("%c\n", &ch) != EOF)
{
if (strchr(vowel, ch))
{
printf("Vowel\n");
}
else
{
printf("Consonant\n");
}
}
return 0;
}
八进制,十六进制
012 - 八进制 12
0X12 - 16进制 18
打印:八进制%o,十六进制%X
域宽
printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数
printf("%15d", 0xABCDEF);
输入补0
通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;
通过printf函数的==%0==格式控制符,输出数值时指定左面不使用的空位置自动填0。