#include <stdio.h>
int main(){
int a[
4][
4],b[
4][
4],i,j;
printf(
"please input original matrix elements -> 16 numbers: \n");
for(i=
0;i<
4;i++){
for(j=
0;j<
4;j++){
scanf(
"%d",&a[i][j]);
printf(
"m",a[i][j]);
b[
3-j][i]=a[i][j];
}
printf(
"\n");
}
printf(
"rotated matrix:\n");
for(i=
0;i<
4;i++){
for(j=
0;j<
4;j++){
printf(
"m",b[i][j]);
}
printf(
"\n");
}
return 0;
}
scanf
int main(){
int a;
int i;
printf(
"###for_1 start###\n");
for (i=
0; i<
2; ++i)
{
scanf(
"%d", &a);
printf(
"$i=%d a=%d\n",i, a);
}
printf(
"\n**i=%d a=%d\n###for_1 end###\n\n\n\n",i, a);
printf(
"###for_2 start###\n",i, a);
for (i=
0; i<
2; i++)
{
scanf(
"%d", &a);
printf(
"$i=%d a=%d\n",i, a);
}
printf(
"\n**i=%d a=%d\n",i, a);
printf(
"###for_2 end###\n");
return 0;
}
//在
for循环中的i++和++i效果一样,实际上,i++和++i在单独用(没有赋值给变量)时没有区别。
/*
for_1中,我输入了
3个数(
1,
2,
3),第
3个数在for_2中第一次循环中被程序读取了,所以直接出
现了
"$i=0 a=3";然后我再向缓冲区输入
2个数(
3,
4),结果只
printf了一次。由此可以看出
scanf的用法。
*/
1.假设输入是一根连接到你程序上的管子,你所有的输入都会像水一样按顺序灌进程序。每当你按下(换行符),新的输入就会全部加入这个管子中等待被程序接受。scanf干了什么呢?如果管子中还有水,它就试图按一定格式从管道中取出水来,如果格式不对或者管子是空的,就会结束并等待下一个输入。相当于你一次放入几个数到管子中,但程序还是一个一个取数的,一个一个输出的。
2.假如在你的程序中输入了一个字母会怎么样,请搜索“stdin流阻塞”。
3.首先,在你没有回车时,你所输入的字符是保存在终端的,并没有给电脑处理当你键入回车,系统才开始对它进行处理,第一个数字,处理完显示出来,然后依次显示剩余的数字,直到遇到回车。原理大概就这样,scanf格式输入以遇到第一个空白字符为结束编制,我们常输入回车就起这个作用,但是如果后边也需要输入,同时书写格式与它完全不同,可以省略回车,因为在下次输入完你就会输入回车。 【转发】