scanf使用说明

写题的时候c和c++最大的区别就是输入输出了

首先说明其实一般的程序都是c++ 人家那种硬件代码才是纯c的 我又不用往板子上烧 不用写那么麻烦

贴一段硬件的纯c代码看一看 其实区别也不是很大 2333

 1 void ComputePowerSpectrum(int32_t* frame,
 2                           int64_t* power_spectrum){
 3     int32_t* buffer = (int32_t*)malloc(sizeof(int32_t) * FRAME_LEN_PADDED);
 4 
 5     memset(buffer, 0, sizeof(int32_t) * FRAME_LEN_PADDED);
 6     fixed_point_fft(frame, buffer, FRAME_LEN_PADDED);
 7 
 8     int64_t first_energy = FixedMulInt64(frame[0], frame[0])>>1;
 9     int64_t last_energy = FixedMulInt64(buffer[1], buffer[1])>>1;
10     uint16_t half_dim = FRAME_LEN_PADDED/2;
11 
12     power_spectrum[0] = first_energy;
13     power_spectrum[half_dim] = last_energy;
14     for (i = 1; i < half_dim; i++){
15         int32_t real = frame[i], img = buffer[i];
16         power_spectrum[i] = FixedMulInt64(real, real)>>1;
17         power_spectrum[i] += FixedMulInt64(img, img)>>1;
18         assert(power_spectrum >= 0);
19     }
20     free(buffer);
21 }

 

然后就主要讲一下scanf的使用吧

竞赛里一般都是用scanf 虽然不太好打(相对于cin) 但是速度比较快

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int n;
 6     while(~scanf("%d",&n))
 7     {
 8         
 9     }
10     return 0;
11 }/*
12 
13 
14 
15 */

scanf printf都要接受两个参数

一个是后面的要输出的参数

要记得输入的时候参数要加上取地址符& 输出的时候不用取地址符&

 

另一个是前面的字符串 也就是scanf中f对应的format的意思 格式化字符串

%d %f %c %s这样的符号通俗的称为占位符

常用的占位符大概有这些

1 int                -> %d
2 unsigned int       -> %u
3 long long          -> %lld
4 unsigned long long -> %llu
5 double             -> %lf
6 char               -> %c
7 char[]             -> %s

值得一提的是

目前普遍认为double输入是用%lf 输出用%f

但是看了c++官网发现好像没有%lf这种用法了(小声bb

 

 但是在目前的c++11里还是普遍认为

再值得一提的是 普遍认为输入字符串是不用取地址的

但实际上加不加都可以

1 char str[maxn];
2 scanf("%s",&str);
3 scanf("%s",str);

 

 

 

关于~scanf("xxxx",&xx)的返回值

它的返回值就是输入的参数的个数

当输入到EOF的时候会返回-1(11111111) 按位取反之后就是0(00000000)了

就可以跳出循环了

 

posted @ 2019-10-29 22:50  良将ℓ  阅读(328)  评论(0编辑  收藏  举报