上机练习五

五、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;
 } 
上一篇:选择排序


下一篇:HTML – Naming Conversion