第8周编程练习
1:单词长度
题目内容:
你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。
输入格式:
输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.
输出样例:
4 5 2 3 3 4
#include<stdio.h> int main() { int i; char a; //定义字符型变量 while(1){ scanf("%c",&a); //输入字符 if(a=='.'){ //两种情况,第一种是结束时,a=='0'的情况 if(i!=0){ printf("%d",i); } break; } if(a==' '){ //第二种是碰见空格的情况 if(i!=0){ printf("%d ",i); i=0; } } else { i+=1; //没空格,没点,正常增加i } } return 0; }
2:GPS数据处理
#include <stdio.h> #include <string.h> int main() { char s[1000],*p; int check,sum,hour,min,sec; do { scanf("%s",s); if (s[0]=='$' && s[1]=='G'&&s[2]=='P'&&s[3]=='R'&&s[4]=='M'&&s[5]=='C') { for (p=s+7;*p!=',';p++); //找到定位的位置,刚开始直接输的第19位,结果错误,简直是个大坑 if (*(p+1)=='A') { p=s; check=*(++p); for (p=p+1;*p!='*';p++) //进行异或计算 { check = check^(*p); } p++; sum=0; for (;*p!='\0';p++) //将十六进制转换为10进制 { if (*p>='0' && *p<='9') { sum = sum*16+*p-'0'; }else if (*p>='A' && *p<='F') { sum = sum*16 +*p-'A'+10; } } if (sum==(check%65536)) //记录时间 { hour = (s[7]-'0')*10+s[8]-'0'+8; if (hour>=24) hour=hour-24; min = (s[9]-'0')*10+s[10]-'0'; sec = (s[11]-'0')*10+s[12]-'0'; } } } }while(strcmp(s,"END")!=0); printf("%02d:%02d:%02d\n",hour,min,sec); return 0; }