习题3-1 得分
#include<stdio.h>
int main(){
int score=0;
char c;
int count=0;
while ((c=getchar())!=EOF) {
if (c=='X') {
count=0;
}
elseif(c=='O'){
count++;
score+=count;
}
}
printf("%d\n",score);
return0;
}
习题3-2 分子量
#include<stdio.h>
#include<string.h>
#define MAXN 10
int count[MAXN];
char s[MAXN];
int main(){
memset(count,0,sizeof(count));
scanf("%s",s);
int i=0;
while (s[i]!='\0') {
if ((s[i+1]>='C'&&s[i+1]<='O')||s[i+1]=='\0') {
switch (s[i]) {
case'C':
count[0]++;
break;
case'H':
count[1]++;
break;
case'N':
count[2]++;
break;
default:
count[3]++;
break;
}
i+=1;
}
else{
switch (s[i]) {
case'C':
count[0]+=s[i+1]-'0';
break;
case'H':
count[1]+=s[i+1]-'0';
break;
case'N':
count[2]+=s[i+1]-'0';
break;
default:
count[3]+=s[i+1]-'0';
break;
}
i=i+2;
}
}
float total=12.01*count[0]+1.008*count[1]+14.01*count[2]+16.00*count[3];
printf("%.3f\n",total);
return0;
}
习题3-3 数数字
#include<stdio.h>
#include<string.h>
#define MAXN 10
int count[MAXN];
char s[10010];
int main(){
memset(count,0,sizeof(count));
scanf("%s",s);
int i=0;
while (s[i]!='\0') {
count[s[i]-'0']++;
i++;
}
for (i=0; i<9; i++) {
printf("%d ",count[i]);
}
printf("%d\n",count[9]);
return0;
}
习题3-4 周期串
#include<stdio.h>
#include<string.h>
char s[100];
int main(){
scanf("%s",s);
long len=strlen(s);
int flag=1;
for (long i=1; i<=len; i++) {//周期
flag=1;
for (long j=0; j<i; j++) {
int n=1;
while (j+i*n<len) {
if (s[i*n+j]==s[j]) {
n++;
}
else{
flag=0;
j=len;//退出条件
}
}
}
if (flag) {
printf("%ld\n",i);
break;
}
}
return 0;
}