本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。
输入格式:
输入在一行中给出2个正整数A和B。
输出格式:
在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。
输入样例:3 2输出样例:
3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 = 1
解题
#include
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a, &b);
printf("%d + %d = %d\n",a, b, a+b);
printf("%d - %d = %d\n",a, b, a-b);
printf("%d * %d = %d\n",a, b, a*b);
printf("%d / %d = %d\n",a, b, a/b);
return 0;
}
02-1. 厘米换算英尺英寸(15)
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)*0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
输入格式:
输入在一行中给出1个正整数,单位是厘米。
输出格式:
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
输入样例:170输出样例:
5 6
解题
#include
int main()
{
int cm = 0;
scanf("%d", &cm);
int foot= cm / 30.48;
int inch= ((cm / 30.48) - foot)*12;
printf("%d %d",foot,inch);
return 0;
}
02-2. 然后是几点(15)
有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
输入格式:
输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。
输出格式:
输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。
输入样例:1120 110输出样例:1310解题方法一:
#include
int main()
{
int time,add,hour,minute,hour1,minute1,minute2;
//现在时间,和经过的时间,需要计算用到的小时和分钟
scanf("%d %d",&time,&add); //输入现在时间和经过的时间
hour1=time/100; //现在时间取小时出来
minute1=time%100; //现在时间取分钟出来
minute2=hour1*60+minute1; //把小时乘60加上分钟,算出现在时间总分钟数
minute=minute2+add; //算出经过后的总分钟
hour=minute/60; //求出小时部分
minute=minute%60; //取余数求出分钟部分
printf("%d",hour*100+minute); //小时乘100加上分钟算出答案
return 0;
}
方法二:
#include
int main()
{
int time, add; //现在时间,经过时间
int hour, minute; //需要用到的小时,需要用到的分钟
scanf("%d %d", &time, &add); //输入现在时间,经过时间
hour = time / 100; //得出小时
minute = time % 100; //得出分钟
minute += add; //分钟加上经过分钟数
while (minute >= 60) //选择 当分钟小于等于60
{
minute -= 60; //分钟数减去60
hour += 1; //小时加上1
}
while (minute < 0) //选择 当分中数小于0
{
minute += 60; //分钟加60
hour -= 1; //小时减去1
}
printf("%d", hour * 100 + minute);//小时乘上100加上分钟数 然后输出
return 0;
}
02-3. 逆序的三位数(10)
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:123输出样例:321解题#include
int main()
{
int a,b,c,abc;
scanf("%d",&abc);
a=abc/100; //原数百位
b=abc/10%10;//原数十位
c=abc%10; //原数个位
printf("%d",c*100+b*10+a);
return 0;
}
02-4. BCD解密(10)
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。
输入格式:
输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。
输出格式:
输出对应的十进制数。
输入样例:18输出样例:12解题方法一:#include
int main()
{
int x; //输入一个值x
scanf("%d",&x); //%d读入一个十进制数x
printf("%x",x); //%x输出一个16进制x
return 0;
}
方法二:
#include
int main()
{
int a,b,n;
scanf("%d",&n); //输入值
a=n/16; //取整 求出16进制个位
b=n%16; //取余 求出16进制十位
printf("%d",a*10+b); //十位乘10加上个位,求出16进制数
return 0;
}
03-0. 超速判断(10)
模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。
输入格式:
输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。
输出格式:
在一行中输出测速仪显示结果,格式为:“Speed: V - S”,其中V是车速,S或者是Speeding、或者是OK。
输入样例1:40输出样例1:Speed: 40 - OK输入样例2:75输出样例2:Speed: 75 - Speeding解题:#include
int main(int argc, const char * argv[])
{
int speed;
scanf("%d",&speed);
if (speed>60)
{
printf("Speed: %d - Speeding\n",speed);
}
else
{
printf("Speed: %d - OK\n",speed);
}
return 0;
}
解题:03-1. 三天打鱼两天晒网(15)
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出1个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:103输出样例1:Fishing in day 103输入样例2:34输出样例2:Drying in day 34
#include
int main(int argc,constchar * argv[])
{
//一天-二天-三天-四天-五天
//打鱼-打鱼-打鱼-晒网-晒网
//三天打鱼两天晒网,周期是5天,除以5,余数为4即前三天为打鱼,第四天为晒网,整除的话也是晒网。
int n;
scanf("%d",&n);
if ((n%5)==4||(n%5)==0) //余数为4,或者整除无余数,显示晒网
{
printf("Drying in day %d\n",n);
}
else //否则显示为打鱼
{
printf("Fishing in day %d\n",n);
}
return0;
}
三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。
输入格式:
输入在一行中给出3个正整数,顺序对应球A、B、C的重量。
输出格式:
在一行中输出唯一的那个不一样的球。
输入样例:1 1 2输出样例:
C
解题
#include
int main(int argc, const char * argv[])
{
//三个小球找出不同,即对三个数字比价运算
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
//满足条件1 a=b
if (a==b)
{
printf("C"); //a=b时,输出c
}
//else if 否则,满足条件2 b=c
else if(b==c)
{
printf("A");
}
//else if 否则,满足条件3 a=c
else if(a==c)
{
printf("B");
}
return 0;
}
03-3. 12-24小时制(15)
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
输入格式:
输入在一行中给出带有中间的“:”符号(半角的冒号)的24小时制的时间,如
12:34
表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6
表示5点零6分。提示:在scanf的格式字符串中加入“:”,让scanf来处理这个冒号。
输出格式:
在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串“AM”或表示下午的字符串“PM”。如“
输入样例:5:6 PM
”表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00
就是12小时制的12:0 PM
;而0点被认为是第二天的时间,所以是0:0 AM
。21:11输出样例:9:11 PM解题#include
int main(int argc, const char * argv[])
{
int m,n;
scanf("%d:%d",&m,&n);
//&&逻辑 与
if (m>=0 && m<12) {
printf("%d:%d AM\n",m,n);//满足条件1 m大于等于0 并且m小于12
}
else if (m==12){
printf("%d:%d PM\n",m,n);//满足条件2 m等于12
}
else if (m>12 && m<=24){ //满足条件4 大于12 并且小于等于24
printf("%d:%d PM\n",m%12,n);
}
return 0;
}
03-4. 成绩转换(15)
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于等于60为D; 小于60为E。 输入格式:
输入在一行中给出1个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:90输出样例:A解题#include
int main(int argc, const char * argv[])
{
int grade=0;
scanf("%d",&grade);
//满足条件1 大于等于90分为A
if (grade>=90) {
printf("A\n");
}
//满足条件2 小于90且大于等于80为B
else if (grade<90 && grade>=80){
printf("B\n");
}
//满足条件3 小于80且大于等于70为C
else if (grade<80 && grade>=70){
printf("C\n");
}
//满足条件4 小于70且大于等于60为D
else if (grade<70 && grade>=60){
printf("D\n");
}
//满足条件5 小于60为E
else if (grade<60){
printf("E\n");
}
return 0;
}
04-0. 求符合给定条件的整数集(15)
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。输入格式:
输入在一行中给出A。
输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:2输出样例:234 235 243 245 253 254 324 325 342 345 352 354 423 425 432 435 452 453 523 524 532 534 542 54 3解体
#include
//a开始的的连续3个数。无重复的组合。每行六个,每个间有空格
int main()
{
int a;
scanf("%d",&a);
//这里需要a,a+1,a+2,a+3,所以需要连续的三个循环
int i,j,k;
int cnt=0;
i=a;
while (i<=a+3) {
j=a;
while (j<=a+3) {
k=a;
while (k<=a+3) {
if (i!=j) {
if (i!=k) {
if (j!=k) {
cnt++;
printf("%d%d%d",i,j,k);
if (cnt==6) {
printf("\n");
cnt=0;
}else {printf(" ");}
}
}
}
k++;
}
j++;
}
i++;
}
return 0;
}
04-1. 水仙花数(20)
水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3<=N<=7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:3输出样例:153 370 371 40 7解题#include
int main()
{
int n;
scanf("%d",&n);
n=3;
int first=1;
int i=1;
while (i
first *=10;
i++;
}
//printf("first=%d\n",first);
//遍历100-999
i=first;
while (i
int t=i;
int sum=0;
do{
int d=t%10;
t/=10;
int p=d;
int j=1;
while (j
p *=d;
j++;
}
sum +=p;
}while (t>0);
if (sum==i) {
printf("%d\n",i);
}
i++;
}
return 0;
}
解题04-2. 打印九九口诀表(15)
下面是一个完整的下三角九九口诀表:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81本题要求对任意给定的1位正整数N,输出从1*1到N*N的部分口诀表。
输入格式:
输入在一行中给出一个正整数N(1<=N<=9)。
输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。
输入样例:4输出样例:1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16
#include
int main()
{
int n;
scanf("%d",&n);
int i,j;
i=1;
while (i<=n) {
j=1;
while (j<=i) {
printf("%d*%d=*%d",j,i,i*j);
if (i*j<10) {
printf(" ");
}else {
printf(" ");
}
j++;
}
printf("\n");
i++;
}
return 0;
}
04-3. 统计素数并求和(20)
解题本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出2个正整数M和N(1<=M<=N<=500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:10 31输出样例:7 143#include
int main(int argc, const char * argv[])
{
int m,n;
int i;
int cnt=0;
int sum=0;
scanf("%d %d",&m,&n);
if (m==1)
m=2;
for (i=m; i<=n; i++) {
int isPrime=1;
int k;
for (k=2; k
if (i%k==0) {
isPrime=0;
break;
}
}
//判断i是否是素数
if (isPrime) {
cnt++;
sum+=i;
}
}
printf("%d %d\n",cnt,sum);
return 0;
}
04-4. 猜数字游戏(15)
猜数字游戏是令系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
输入格式:
输入第一行中给出2个不超过100的正整数,分别是系统产生的随机数、以及猜测的最大次数N。随后每行给出一个用户的输入,直到出现负数为止。
输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。
输入样例:58 4 70 50 56 58 60 -2输出样例:Too big Too small Too small Good Guess!解题
- #include
- int main()
- {
- int m = 0, n = 0;
- // int m = rand()%100+1;
- // int n = rand()%100+1;
- int count = 0;
- int a = 0;
- int guess=0;
- int over=0;
- scanf("%d %d",&m,&n);
- while(count
- {
- over=0;
- scanf("%d",&guess);
- if(guess<0)
- {
- printf("Game Over\n");
- over=1;
- }
- else if(guess==m&&count==0)
- {
- printf("Bingo!\n");
- over=1;
- }
- else if(guess==m&&count<3)
- {
- printf("Lucky You!\n");
- over=1;
- }
- else if(guess==m)
- {
- printf("Good Guess!\n");
- over=1;
- }
- else if(guess>m)
- {
- printf("Too big\n");
- }
- else if(guess
- {
- printf("Too small\n");
- }
- count++;
- }
- if(over==0)
- {
- printf("Game Over\n");
- }
- return 0;
- }
05-0. 求序列前N项和(15)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后2位。题目保证计算结果不超过双精度范围。
输入样例:20输出样例:32.66解题#include
int main()
{
int n;
double dividend,divisor;
double sum=0;
int i;
double t;
scanf("%d",&n);
//n=20000;
dividend=2;
divisor=1;
for (i=1;i<=n; i++) {
sum+=dividend/divisor;
t=dividend;
dividend=dividend+divisor;
divisor=t;
}
printf("%.2f\n",sum);
return 0;
}
05-1. 约分最简分式(15)
分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠“/”分隔,如:
12/34
表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。提示:在scanf的格式字符串中加入“/”,让scanf来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用“分子/分母”的形式表示分数。如
输入样例:5/6
表示6分之5。60/120输出样例:1/2解题#include
int main()
{
int dividend,divisor;
scanf("%d/%d",÷nd,&divisor);
int a=dividend;
int b=divisor;
int t;
while (b>0) {
t=a%b;
a=b;
b=t;
}
printf("%d/%d\n",dividend/a,divisor/a);
return 0;
}
05-1. 约分最简分式(15)
分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠“/”分隔,如:
12/34
表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。提示:在scanf的格式字符串中加入“/”,让scanf来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用“分子/分母”的形式表示分数。如
输入样例:5/6
表示6分之5。60/120输出样例:1/2解题#include
int main()
{
int dividend,divisor;
scanf("%d/%d",÷nd,&divisor);
int a=dividend;
int b=divisor;
int t;
while (b>0) {
t=a%b;
a=b;
b=t;
}
printf("%d/%d\n",dividend/a,divisor/a);
return 0;
}
05-2. 念数字(15)
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下:
0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu输入格式:
输入在一行中给出一个整数,如:
1234
。提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如
输入样例:yi er san si
。-600输出样例:fu liu ling ling解题#include
int main()
{
int x;
scanf("%d",&x);
if (x<0) {
printf("fu ");
x=-x;
}
int mask=1;
int t=x;
while (t>9) {
t/=10;
mask*=10;
}
do{
int d= x/mask;
switch (d) {
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
if (mask>9) printf(" ");
x%=mask;
mask/=10;
}while (mask>0);
printf("\n");
return 0;
}
05-3. 求a的连续和(15)
输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa+...+aaa...a(n个a)。 如a为2、n为8时输出的是2+22+222+...+22222222的和。
输入格式:
输入在一行中给出两个整数,先后表示a和n。
输出格式:
在一行中输出要求的数列之和。
输入样例:2 4输出样例:2468解题#include
int main(int argc, const char * argv[])
{
int a,n;
scanf("%d %d",&a,&n);
int sum=0;
int i;
int t=0;
//0*10+2 2*10+2 (2*10+2)*10+2
for (i=0; i
t=t*10+a;
sum+=t;
}
printf("%d\n",sum);
return 0;
}
06-0. 混合类型数据格式化输入(5)
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。
输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:2.12 88 c 4.7输出样例:c 88 2.12 4.70解题
- #include
- int main()
- {
- double a ;
- int b ;
- char c ;
- double d ;
- scanf("%lf %d %c %lf",&a,&b,&c,&d);
- // printf("%lf %d %c %lf",a,b,'c',d);
- printf("%c %d %.2lf %.2lf",c,b,a,d);
- return 0;
- }
06-1. 简单计算器(20)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:1+2*10-10/2=输出样例:10
- #include
- int main() {
- char symbol = '0' ;
- int result, a;
- int i = 0;
- scanf("%d", &result);
- while(symbol != '=') {
- scanf("%c", &symbol);
- if(symbol == '=')
- break;
- scanf("%d", &a);
- if(symbol == '+')
- result = result + a;
- else if(symbol == '-')
- result = result - a;
- else if(symbol == '*')
- result = result * a;
- else if(symbol == '/') {
- if(a != 0)
- result = result / a;
- else
- i = 1;
- }
- else
- i = 1;
- }
- if(i)
- printf("ERROR\n");
- else
- printf("%d\n", result);
- return 0;
- }
06-2. 字符串字母大小写转换(10)
输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变。
输入格式:
输入在一行中给出一个长度不超过40的、以#结束的非空字符串。
输出格式:
在一行中按照要求输出转换后的字符串。
输入样例:Hello World! 123#输出样例:hELLO wORLD! 123解题
- #include
- #include
- #define STRING_SIZE 40
- int main() {
- int i = 0;
- char str[STRING_SIZE + 1] ;
- gets(str);
- while(str[i] != '#') {
- if(str[i]>=97 && str[i]<=122)
- str[i] = str[i] - 32 ;
- else if(str[i]>=65 && str[i]<=90)
- str[i] = str[i] + 32 ;
- ++i;
- }
- str[i] = '\0';
- printf("%s\n", str);
- return 0;
- }
06-3. 单词长度(15)
解题你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格;最后的‘.’不计算在内。
输入格式:
输入在一行中给出一行文本,以‘.’结束。
提示:用
scanf("%c",...);
来读入一个字符,直到读到‘.’为止。输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.输出样例:
4 5 2 3 3 4
#include #include #define STRING_SIZE 1000 int main() { char str[STRING_SIZE + 1]; char *i ; int len ; gets(str); i = strtok(str, " .") ; while(i != NULL) { len = strlen(i) ; i = strtok(NULL, " .") ; if(i != NULL) printf("%d ", len); else printf("%d", len); } return 0; }