(今天进行对一些实例进行编程,来自牛客网初学者入门训练)
1. 输入描述:多组输入,每一行输入大写字母。
输出描述:针对每组输入输出对应的小写字母。
备注:多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。
#include <stdio.h>
int main()
{
char ch=0;
while(scanf("%c\n",&ch)!=EOF)
{
printf("%c\n",ch+32);
getchar()
}
return 0;
}
2. 输入描述:多组输入,每一行输入整数n(0 <= n < 31)。
输出描述:针对每组输入输出对应的2的n次方的结果。
#include <stdio.h>
int main()
{
int n=0;
while(scanf("%d\n",&n)!=EOF)
{
printf("%d\n",1<<n);
}
return 0;
}
3. 输入描述:多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。(KiKi每h分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分 钟后还有多少盒未打开的酸奶?)
输出描述:针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。
#include <stdio.h>
int main()
{
int n=0;
int m=0;
int h=0;
while(scanf("%d %d %d\n",&n,&m,&h)!=EOF)
{
if (m%h==0)
printf("%d\n",n-m/h);
else
printf("%d\n",n-m/h-1);
}
return 0;
}
4. 输入描述:一行,连续输入5个整数(范围0~100),用空格分隔。
输出描述:一行,输出5个数的平均数(保留一位小数)。
#include <stdio.h>
int main()
{
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
scanf("%d %d %d %d %d\n",&a,&b,&c,&d,&e);
printf("%.1f\n",(a+b+c+d+e)/5.0);
return 0;
}
5. 输入描述:一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。
输出描述:一行,a+b的十进制结果。
#include <stdio.h>
int main()
{
int a=0;
int b=0;
scanf("%x %o\n",&a,&b);
printf("%d\n",a+b);
return 0;
}
6. 输入描述:多组输入,每行输入包括一个字符。
输出描述:针对每行输入,输出该字符是字母(YES)或不是(NO)。
#include <stdio.h>
int main()
{
char ch=0;
while(scanf("%c\n",&ch)!=EOF)
{
if ((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
printf("YES\n")
else
printf("NO\n")
}
return 0;
}
总结:1. 多组输入:while(scanf(%d,&n)!=EOF)
2. 大小写转换:用ASCii码表对照 应+32
3. 吸收字母:用getchar()
4. 左移操作符:b=a<<n 等价于 b=a*2^n
右移操作符:b=a>>n 等价于 b=a/2^n
5. = 与 == 的区别:=是赋值的意思 ==是等一操作符,判断两边是否相等。