若有定义:int x,y; char s1,s2,s3; 并有以下输入数据:(注:└┘代表空格)
1└┘2<回车>
U└┘V└┘W<回车>
则能给x赋给整数1,给y赋给整数2,给s1赋给字符U,给s2赋给字符V,给s3赋给字符W的正确程序段是(C )。
A.scanf(”x=%dy=%d”,&x,&y); s1=getchar();s2=getchar();s3=getchar();
B.scanf(”%d%d”,&x,&y); s1=getchar();s2=getchar();s3=getchar();
C.scanf(”%d%d%c%c%c”,&x,&y,&s1,&s2,&s3);
D.scanf(”%d%d%c%c%c%c%c%c”,&x,&y,&s1,&s1,&s2,&s2,&s3,&s3);
虽然现在还不明正确答案,据猜测C选项最符合输入要求
学习到的知识点:输入的空格也占取一个输出位
(注意点:输入形式应依照scanf中的格式,空格也会作为一个输入数据)
**关于输入年月日求该日在此年中的日数问题改进**
#include ”stdio.h”
main()
{
int year, month, days, leap;
scanf("%d/%d",&year,&month);
switch (month)
{ case 1:
case 3:
case 5;
case 7:
case 8:
case 10:
case 12: days=31;
break;
case 4:
case 6:
case 9:
case 11: days=30;
break;
case 2: if (year%400==0) leap=1;
else if (year%4==0 && year%100!=0) leap=1;
else leap=0;
if (leap)
days=29;
else
days=28;
}
printf("%d\n", days);
}
复习的知识点:switch结构的运用
(注意点:break的安放位置)
利用switch语句 简洁且思路清晰,易理解性较强,排除了输入12月以上月份的情况。