五、2014
1、字符转换
题目:
从键盘读入一个字符串,若遇到字母,则输出 0;若遇到数字则输出 1;否则不输出。例如:输入 ab2&3@c,输出 00110
代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
gets(str);
int len = strlen(str);
for(int i=0;i<len;i++)
{
if((str[i]>='a'&&str[i]<='z')||str[i]>='A'&&str[i]<='Z')
putchar('0');
else if(str[i]>='0'&&str[i]<='9')
putchar('1');
}
return 0;
}
2、空气浓度计算
题目:
空气质量指数是描述空气质量状况的无量纲指数,根据污染物的浓度换算得出。编程输入浓度 C,输出指数 I。其中 PM2.5 的浓度和级别 I 列表如下(图有点看不太清)
浓度计算公式为:result = ((Imax-Imin)/(Cmax-Cmin))*(C-Cmin)+Imin
代码:
#include<stdio.h>
//result = ((Imax-Imin)/(Cmax-Cmin))*(C-Cmin)+Imin
double calcu(double Cmax, double Cmin, double Imax, double Imin, double C)
{
double res;
res = ((Imax-Imin)/(Cmax-Cmin))*(C-Cmin)+Imin;
return res;
}
int main()
{
double res, C;
scanf("%lf", &C);
if(C>=0&&C<=12.0)
res = calcu(0, 12.0, 0, 50, C);
else if(C>=12.1&&C<=35.4)
res = calcu(12.1, 35.4, 51, 100, C);
else if(C>=35.5&&C<=55.4)
res = calcu(35.5, 55.4, 101, 150, C);
else if(C>=55.5&&C<=150.4)
res = calcu(55.5, 150.4, 151, 200, C);
else if(C>=150.5&&C<=250.4)
res = calcu(150.5, 250.4, 201, 300, C);
else if(C>=250.5&&C<=350.4)
res = calcu(250.5, 350.4, 301, 400, C);
else if(C>=350.5&&C<=500.4)
res = calcu(350.5, 500.4, 401, 500, C);
printf("浓度C为%5.2f时,指数I为%5.2f\n", C, res);
return 0;
}
3、汉明距离
题目:
两个长度相等的二进制字符串的汉明距离定义为不相等的字符个数,编程计算
汉明距离。例如:10010100 和 10000101 的汉明距离为 2
代码:
#include<stdio.h>
#include<string.h>
const int maxn = 20;
int main()
{
char str1[maxn], str2[maxn];
int len, num;
scanf("%s", str1);
scanf("%s", str2);
len = strlen(str1);
num = 0;
for(int i=0;i<len;i++)
{
if(str1[i]!=str2[i])
num++;
}
printf("%s与%s的汉明距离为%d\n", str1, str2, num);
return 0;
}
4、李白买酒
题目:
李白街上走,提壶去买酒。遇店加一倍,见花喝一斗。N 遇店和花,喝光壶中酒。借问此壶中,原有多少酒。编程输入 N,输出原来的酒数和遇店、遇花的过程。
例如:输入 N=3,输出:原酒数为 1 斗;第一次遇店加一倍即加 1 斗,剩 2斗;第 1 次遇花喝 1 斗,剩 1 斗;第 2 次遇店加一倍即加 1 斗,剩 2 斗;第一次遇花喝 1 斗,剩 1 斗。
代码:
#include<stdio.h>
int main()
{
int N;
scanf("%d", &N);
double res=0;
for(int i=0;i<N;i++)
res = (res+1)/2;
printf("原来有%6.3f斗酒\n",res);
int i=0;
while(res!=0)
{
i++;
printf("第%d遇店加一斗,剩下%6.3f\n", i, res*2);
printf("第%d遇花喝一斗,剩下%6.3f\n", i, res*2-1);
res = res*2-1;
}
return 0;
}