3.1得分问题
#include <stdio.h>
#include <Windows.h>
#include <string.h>
#include <ctype.h>
#define maxn 105
int main()
{
char s[100];
while(scanf("%s",s)==1)
{
int len=strlen(s);
int p=0,s1=0;
for(int i=0;i<len;i++)
{
if(s[i]=='O')
{
s1++;
p=p+s1;
}
else
{
s1=0;
}
}
printf("%d",p);
}
system("pause");
}
3.2 分子量问题
在这一题中练习了switch语句的使用,头文件的使用与上一段的程序有重合的地方,就不放上来。
int main()
{
char s[100];
while(scanf("%s",s)==1)
{
int len=strlen(s);
int i=0;
double m,sum=0.0;
char a;
while (i<len)
{
switch(*(s+i))
{
case 'C': m=12.01; break;
case 'H': m=1.008;break;
case 'O': m=16.00;break;
case 'N': m=14.01;break;
}
int n=*(s+i+1)-48;
switch ((*(s+i+1)> '0') && (*(s+i+1) <='9'))
{
case 1: sum=sum+m*n;i=i+2;break;
case 0: sum=sum+m;i=i++;
}
}
printf("%.3lf",sum);
}
system("pause");
}
例题4-4 信息码
#include <stdio.h>
#include <string.h>
int readchar()
{
for(; ;){
int ch=getchar();
if(ch!='\n'&&ch!='r') return ch;
}
}
int readint(int c)
{
int v=0;
while(c--) v=v*2+readchar()-'0';
return v;
}
int code[8][1<<8];
int readcodes()
{
memset(code,0,sizeof(code));
code[1][0]=readchar();
for(int len=2;len<=7;len++)
{
for (int i=0;i<(1<<len)-1;i++)
{
int ch=getchar();
if(ch==EOF) return 0;
if(ch=='\n'||ch=='\r') return 1;
code[len][i]=ch;
}
}
return 1;
}
void printcodes()
{
for(int len=1;len++;)
for (int i=0;i<(1<<len)-1;i++)
{
if(code[len][i]==0) return;
printf("code[%d][%d]=%c\n",len,i,code[len][i]);
}
}
int main()
{
while(readcodes())
{
//printcodes();
for(;;)
{
int len=readint(3);
if(len==0) break;
//printf("len=%d\n",len);
for(;;)
{
int v=readint(len);
//printf("v=%d\n",v);
if(v==(1<<len)-1) break;
putchar(code[len][v]);
}
}
putchar('\n');
}
getchar();
}
两个字母相等问题
#include<cstdio>
#include<cstring>
#include<cstdlib>
char a[110],b[110];
int pa[26],pb[26];
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int la,lb;
while(gets(a))
{
gets(b);
memset(pa,0,sizeof(pa));
memset(pb,0,sizeof(pb));
la = strlen(a);
lb = strlen(b);
if(la!=lb)
{
puts("NO");
continue;
}
for(int i = 0; i < la; i++)
{
pa[a[i]-'A']++;
pb[b[i]-'A']++;
}
qsort(pa,26,sizeof(pa[0]),cmp);
qsort(pb,26,sizeof(pb[0]),cmp);
if(!memcmp(pa,pb,sizeof(pa)))
puts("YES");
else puts("NO");
}
getchar();
return 0;
}