win10下使用anaconda安装pytorch和torchvision

1.输入sscanf scanf 输出sprintf printf

(1)scanf()和printf()

1
2
scanf("%d",&n);
printf("%d",n);

​ 事实上上面的写法其实可以表示成下面的样子,其中screen表示屏幕:

1
2
scanf(screen,"%d",&n);
printf(screen,"%d",n);

​ 可以发现,scanf的输入其实是把screen的内容以”%d”的格式传输到n中(即从左至右)。
而printf的输出则是将n以”%d”的格式传输到screen上(即从右至左)。

(2)sscanf()和sprintf()

1
2
3
char str[100]; 
sscanf(str,"%d",&n);
sprintf(str,"%d",n);

​ 上面sscanf写法的作用是把字符数组str中的内容以”%d”的格式写到n中(仍然是从左至右)。
​ 而sprintf写法的作用是将n以”%d”的格式写到str字符数组中(从右至左)。

2. scanf() 和 cin

(1)优点:

cin/cout:方便。
scanf/printf: 控制读入简单直观,读入时间快。

(2)缺点:

cin/cout:控制输入数据时打起来比较麻烦,需要记一些函数,读入时间慢。
scanf/printf:容易打错。

3.竞赛中常见输入格式

(1)while···EOF型

​ scanf函数的返回值为其成功读入的参数的个数。
​ scanf(“%d%d”,&a,&b)成功读入两个整数a,b那么scanf的返回值就是2。
​ 正常控制台的输入一般是不会失败的,只有在读取文件时达到文件末尾导致的无法读取现象,才会读入失败,这个时候,scanf函数会返回-1而不是0,且c语言中使用EOF(即End Of File)来代表-1。
读入数据

1
2
3
4
int n;
while(scanf("%d",&n) != EOF){
···
}

读入字符串

1
2
3
4
5
6
while(scanf("%s",str) != EOF){
···
}
while(gets(str) != NULL){
···
}

(2)while···break型

​ 这种类型是while···EOF型的延伸,要求当输入的数据满足某个条件时停止输入。
​ 这种类型有两种写法,一种是在while···EOF的内部进行判断,当满足退出条件时中断当前while循环

1
2
3
4
5
6
int a,b;
while(scanf("%d %d",&a,&b) != EOF){
if(a==0&&b==0)
break;
printf("%d\n",a+b);
}

另一种简洁的写法是,把退出条件的判断放到while语句中,令其与scanf用逗号隔开

1
2
3
4
int a,b;
while(scanf("%d %d",&a,&b) , a || b){
printf("%d\n",a+b);
}

(3)while(T–)型

在这种类型中通常给出测试数据的组数,然后才给出相应数量组数的输入数据。

1
2
3
4
5
6
7
int T,a,b;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&a,&b);
printf("%d",a+b);
}

4.竞赛中常见的输出格式

(1)正常输出

这种输出类型要求需要每两组输出数据中间没有额外的空行和空格

(2)每组数据输出之后都要额外增加一个空行

1
2
3
4
5
int a,b;
while(scanf("%d %d",&a,&b) != EOF){
printf("%d\n",a+b);
printf("\n");
}

(3)两组数据之间有一个空行,最后一组数据后面没有空行

1
2
3
4
5
6
7
8
9
int T,a,b;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&a,&b);
printf("%d",a+b);
if(T>0)
printf("\n");
}

与这种要求类似的要求是:输出一行N个整数,每两个整数之间用空格隔开,最后一个整数后面不允许加上空格,做法类似.

1
2
3
4
5
6
7
8
for(int i=0;i<N;i++)
{
printf("%d",s[i]);
if(i<N-1)
printf(" ");
else
printf("\n");
}

竞赛常见输入输出练习

小礼物走一个哟
0%