目录

一、列举一下避免回车的四种方法:

二、其他形式%d


一、列举一下避免回车的四种方法

❤1、手动\n。

在scanf()中使用’\n’屏蔽回车符号。
scanf(“%c”, &c);

❤2、scanf空格。

在scanf()括号首位添加空格,过滤回车字符。
scanf(” %c”, &c); //%c 前面加空格,过滤回车。

3、getchar()。

接收字符前,使用getchar()来读取一次回车符号。
scanf(“%d”, &n);
getchar(); // 读取上次输入的回车字符
scanf(“%c”, &c);

4、fflush。

接收字符前,使用fflush()清空输入流中缓冲区中的内容。(位于头文件#include)
scanf(“%d”, &n);
fflush(stdin);//清空输入流缓冲区的字符,
scanf(“%c”, &c);

————————————————

附几处出的错:

————————————————

1、打完中文后写了中文分号。

2、算式中的2a应写成2*a,漏了‘*’。

3、判断语句中==写成=。

4、热知:设置宽度后默认输出右对齐(C语言可以printf(“%-8d”,a)也就是加个负号)

二、其他形式%d

%-8d:左对齐,宽8位

%08d:宽度小于8时前面用0补位

%8.2f:保留小数点后两位

—————————————————(见文末代码,题目:日期菜单)

#include
#include
int main()
{
void menu1(int a);
void menu2(int a,int b,int c);
char start;
int year,a,b,c;
while(1){
printf(“主菜单\n”);
printf(“(1) 闰年计算,请输入a\n”);
printf(“(2) 星期计算,请输入b\n”);
printf(“(3) 退出程序请输入q\n”);
scanf(” %c”,&start);/此处有空格!不然无法忽视回车!
switch(start){
case ‘a’:
printf(“子菜单(1)\n”);
printf(“1)请输入年份:”);
printf(“2)退到主菜单请输入 -1\n”);
menu1(year);
break;

case ‘b’:
printf(“子菜单(2)\n”);
printf(“请输入年月日 “);
printf(“2)退到主菜单请输入 -1;-1;-1\n”);
menu2(a,b,c);
break;

case ‘\n’:;
break;

case ‘q’:
printf(“嘻嘻,结束喽\n”);
return 0;

default:
printf(“?xc么\n”);
break;
}
}
return 0;
}
void menu1(int a){
scanf(” %d”,&a);
if(a==-1);
else if(a%400==0||(a%4==0&&a%100!=0)) printf(“是\n”);
else printf(“否\n”);
}
void menu2(int y,int m,int d){
int w,c;
scanf(” %d%d%d”,&y,&m,&d);
c=y/100;
if(y==-1&&m==-1&&d==-1);
else if(y<1582||(y=1582&&m<10)||(y=1582&&m==10&&d<=4))
w=(c/4-2*c+y+y/4+13*(m+1)/5+d-1)%7;
else if(y>1582||(y=1582&&m>10)||(y=1582&&m==10&&d>=15))
w=(y+y/4+c/4-2*c+13*(m+1)/5+d+2)%7;
switch(w){
case 1:printf(“星期一\n”);break;
case 2:printf(“星期二\n”);break;
case 3:printf(“星期三\n”);break;
case 4:printf(“星期四\n”);break;
case 5:printf(“星期五\n”);break;
case 6:printf(“星期六\n”);break;
case 0:printf(“星期日\n”);break;
}
}