我看似是在学C语言,其实是在学英语...
题目的大概意思可能是说:进行多次测试,每次测试具有多个问题,每个问题的做题结果包括“O”正确,“X”错误。题目会在第一行输入一个数字N,表示测试的次数,下面将有N行的测试结果。我们需要根据测试结果进行打分。其规则为:当出现“O”的时候进行加分,当这个“O”为连续“O”序列的第x个时,加x分。也就是说“OOO”中,第一个O加1分,第2个加2分,第三个加3分。(书上给的OJ网站,怪偏僻的...提交结果竟然是邮箱反馈???)
我个人的思路是:先创建int count 用来储存测试的次数,然后进行count次循环。每次循环当中,声明int goal并初始化0,用来统计分数,int lian = 0用来储存“连杀数”。声明char alp[50](觉得应该够长了),用来储存测试结果。并利用strlen()函数来获取alp字符串的长度(记得添加头文件string.h),并赋值到int类型len当中。然后循环依次判断每一个字符,如果是O,就把连杀数先+1,然后分数就加上连杀数的值,若不是O,就把连杀数归0。循环判断完之后就输出分数。然后进行下一次测试的计算。。。如图:
然后...还有12道例题要做...
无论一个题目多么的简单,只要它是用英文描述的,我第一眼都会感觉非常难。比如:
根据书上的题目概述,就是要我们求分子量啦...给你N个分子式,分别求出N个分子量。且每个分子式最多包含4种原子,原子量也给我们了...我原以为这本是道送分题,直到我看到了输入示例...哎呀,分子式还有数字下标呢,咋办啊...又懵了...
我想,对于每个分子式,都应该记录对应的4种原子出现的个数,最后四则运算。所以我需要对分子式进行判断,扫描到一个字符时如果有下标,那么个数就加上下标的值,没下标就加1,可是问题又来了。扫描到的内容代表一个原子,那后面还要扫描字符并判断是否为下标...而且这下标的值可能还不是个位数,挺烦人的...
我最后采用了一个省脑子,但是非常非常非常笨的方法来解决这道题因此这代码也很长...我就不展示了免得丢人现眼,没啥价值。有多长呢?
不过好歹是通过了,如果我理解没错的话??
这是通过了吧?还有11道例题...
这个题目的意思就是说,当把前N个正整数连在一起时,我们要求出0~9分别出现的总次数。这样的操作要分析K次,这个K会在第一行输入,下面K行每行代表一个N...
乍一看感觉挺麻烦,连起来的数可能很长,其实很简单。不管它的这N个正整数是否连在一起,我们都能够得到它各个位的值(它的大小限制在10000以内)。因此我们对于每次操作,只要进行N次的循环就行了。用一个数组ci[10](初始化值为0)来统计各个数字出现的次数。每次从1到N的每次循环中我们都可以很轻易的得到各个位的值,对应下标的数组自增就行了,当然,不要忘记判断数的位数,不然尝试取出12的百位值时你可能会得到0,这就冤枉0了...
以下是我的代码:
然后...下一题...
题目就一句话:分别求出N个周期字符串的最小周期。我提交了两次,都WA了。不知道为啥。第一次因为输出忘记换行,第二次我真不知道哪里有问题。不想写了,我还有其他事要处理呢....代码发出来一下,要是有发现问题所在的小伙伴可以回复我,我能看见的。
#include
#include
int main(void){
int count;
scanf("%d", &count);
while(count--){
char alp[90];
scanf("%s", alp);
int len = strlen(alp);
int yin[20];
memset(yin, 0, sizeof(yin));
int k = 1;
for (; k <= len;k++){
if(len%k==0)
yin[k]++;
}
for (k = 1; k <= len;k++){
if(yin[k]==1){
char alp1[90];
char alp2[90];
int ci = k;
while(ci--){
alp1[ci] = alp[ci];
alp2[ci] = alp[ci];
}
alp1[k] = 0;
alp2[k] = 0;
ci = len / k - 1;
while(ci--){
strcat(alp1, alp2);
}
if(strcmp(alp,alp1)==0){
printf("%d\n", k);
break;
}
}
}
}
}
————分割线————
溜了溜了...