scanf

机试题2019

岁酱吖の 提交于 2020-03-17 12:30:49
# include <stdio.h> int main ( ) { int n , i , j , temp ; int a [ 1000 ] ; scanf ( "%d" , & n ) ; while ( n -- ) { for ( i = 1 ; i <= 8 ; i ++ ) { scanf ( "%d" , & a [ i ] ) ; } //冒泡排序 for ( i = 1 ; i <= 8 ; i ++ ) { for ( j = 1 ; j <= 8 - i ; j ++ ) { if ( a [ j ] > a [ j + 1 ] ) { temp = a [ j ] ; a [ j ] = a [ j + 1 ] ; a [ j + 1 ] = temp ; } } } for ( i = 1 ; i <= 8 ; i ++ ) printf ( "%d " , a [ i ] ) ; printf ( "\n" ) ; } return 0 ; } 来源: CSDN 作者: chenyx1998 链接: https://blog.csdn.net/chenyx1998/article/details/104918732

C语言 —— 你不得不知道的 scanf 的高级用法

两盒软妹~` 提交于 2020-03-17 10:49:56
如果你想让自己的输入更加炫酷、更加个性化、更加安全,那么还需要学习 scanf() 的高级用法,这才是大神和菜鸟的分水岭。 好了,言归正传,我们分三个方面讲解 scanf() 的高级用法。 1) 指定读取长度 还记得在 printf() 中可以指定最小输出宽度吗?就是在格式控制符的中间加上一个数字,例如,%10d表示输出的整数至少占用 10 个字符的位置: 如果整数的宽度不足 10,那么在左边以空格补齐; 如果整数的宽度超过了 10,那么以整数本身的宽度来输出,10 不再起作用。 其实,scanf() 也有类似的用法,也可以在格式控制符的中间加一个数字,用来表示读取数据的最大长度,例如: %2d表示最多读取两位整数; %10s表示读取的字符串的最大长度为 10,或者说,最多读取 10 个字符。 请看下面的例子: # include <stdio.h> int main ( ) { int n ; float f ; char str [ 23 ] ; scanf ( "%2d" , & n ) ; scanf ( "%*[^\n]" ) ; scanf ( "%*c" ) ; //清空缓冲区 scanf ( "%5f" , & f ) ; scanf ( "%*[^\n]" ) ; scanf ( "%*c" ) ; //清空缓冲区 scanf ( "%22s" , str ) ;

c语言第三次作业

萝らか妹 提交于 2020-03-16 09:00:30
观看视频1.2.2,1.3.1,1.3.2 1、视频笔记 2、编写程序代码列表 3、存在的问题: (1)分不清scanf函数与gets函数的区别 解决方法:通过查阅课本,明白scanf函数不能读入空格或Tab,而gets函数可以。 (2).判断:语句 int *p 和 printf("%d",*p); 中的*p含义相同。(F) 解析:前者表示指针变量,后者表示指针变量储存的地址。 来源: https://www.cnblogs.com/jhy12/p/12501725.html

二分、三分专题——经典题型略解

帅比萌擦擦* 提交于 2020-03-16 01:25:11
好久没写blog了嗷。 挑战程序设计竞赛上二分的标题就是——不光是查找值。所以在这里总结一下上一周的二分三分训练。 零、有序数组中查找某个值(不说了) 一、最大化最小值 POJ2456、POJ3258 这两个题非常像嗷,稍微改下代码就可以了嗷。 我先做的3258. 2456: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 #define maxn 50050 6 int l,n,m; 7 int dis[maxn]; 8 9 bool C(int x){ 10 int last=0; 11 for(int i=1;i<m;i++){//m-1次 12 int cur=last+1; 13 while(cur<n&&dis[cur]-dis[last]<x) 14 cur++; 15 if(cur==n) return 0; 16 17 last=cur; 18 } 19 return 1; 20 } 21 int main(){ 22 scanf("%d%d",&n,&m); 23 for(int i=0;i<n;i++) scanf("%d",dis+i); 24 sort(dis,dis+n); 25 26 int le=0,ri=dis[n-1

2020 SWJTU-ICPC Training Round #2(18年福建省赛)部分题解

青春壹個敷衍的年華 提交于 2020-03-15 22:41:46
A-Uint47 calculator(快速乘) 题意: 定义一堆变量然后进行加减乘除运算 思路: 这题难的地方在乘法,会超出long long的范围,所以要用到快速乘(原理跟快速幂类似) #include<iostream> #include<algorithm> #include<vector> #include<map> #include<string> #define Endl endl using namespace std; typedef long long ll; const ll mod=1ll<<47; map<string,ll> m; string s1,s2,s3; ll qm(ll a,ll b) { ll ans=0; while(b){ if(b%2) ans=(ans+a)%mod; a=(a+a)%mod; b/=2; } return ans; } int main() { ll num; while(cin>>s1>>s2){ if(s1=="def") cin>>num; else{ cin>>s3; if(s1=="add") num=(m[s2]+m[s3])%mod; if(s1=="sub") num=(m[s2]-m[s3]+mod)%mod; if(s1=="mul") num=qm(m[s2],m[s3]); if(s1==

[置顶]
读入优化&输出优化

流过昼夜 提交于 2020-03-15 19:43:35
注意了注意了注意了,重要的事情说3遍,这个东西是骗分神器,骗分神器,骗分神器!!! 众所周知:scanf比cin快得多,printf比cout快得多,如果你不知道就……就现在知道了 那有没有更快的呢?当然。 请看: 我懵逼了,至于慢近100ms吗? 好吧,这就是读入优化的效果,在数据很恐怖的情况下能比scanf多过1-5个点…… 比如说这种: 都说了要读入优化你还不读入优化,那不是找死吗…… 前面都是废话,现在开始说正事 读入优化 首先,读入优化这里是只是针对整数,getchar读字符是非常快的,所以我们就用getchar了。(下面都假设输入的数为x) 负数处理 很简单,用一个标志变量f,开始时为1,当读入了’-’时,f变为-1,最后 x*=f 即可 绝对值部分处理 显然getchar每次只能读一位,所以,每当读了一位时x*=10,为这一位“留位置”。 举个例子:现在读入了123,x为123,再读入了一个4,x*=10,变为了1230,现在它的最后一位空出来了,正好留给4,x+=4,x就变为了1234,当然,这里的’4’是char类型,需要减去’0’才是4,即: x=x*10+s-'0' (s为当前输入的字符) 关于细节 很多时候是有多余空格或者其他的乱码字符输入,为了防止bug,我们要严谨~详见代码。 代码 void read(int &x)//'&'表示引用

c++ 读入优化、输出优化模板

て烟熏妆下的殇ゞ 提交于 2020-03-15 19:43:18
  0. 在有些输入数据很多的变态题中,scanf会大大拖慢程序的时间,cin就更慢了,所以就出现了读入优化。其原理就是一个一个字符的读入,输出优化同理,主要使用getchar,putchar函数。   1. int型读入优化(long long的只要把x改成long long型即可): 1 #include<cctype> 2 inline int read() 3 { 4 int x=0,f=0; char ch=0; 5 while(!isdigit(ch)) {f|=ch=='-';ch=getchar();} 6 while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar(); 7 return f?-x:x; 8 }   2.double型读入优化: 1 inline double dbread() 2 { 3 double x=0,y=1.0; int f=0; char ch=0; 4 while(!isdigit(ch)) {f|=ch=='-';ch=getchar();} 5 while(isdigit(ch)) x=x*10+(ch^48),ch=getchar(); 6 ch=getchar(); 7 while(isdigit(ch)) x+=(y/=10)*(ch^48),ch=getchar(); 8

字符串操作的学习

故事扮演 提交于 2020-03-15 12:39:27
1、视频笔记 2、编写的代码列表 3、存在的问题 ①scanf函数与gets函数的区别是? 答:scanf函数不能读入空格或Tab,而gets函数可以。 ②shell的作用 答:它是交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令。shell遇到ctrl+c关闭程序,shell遇到ctrl+d输出EOF。 来源: https://www.cnblogs.com/szb1060131601/p/12494669.html

10个经典的C语言面试基础算法及代码

廉价感情. 提交于 2020-03-15 01:52:38
算法是一个程序和软件的灵魂,作为一名优秀的 程序员 ,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。 1、计算Fibonacci数列 Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。 C语言实现的代码如下: /* Displaying Fibonacci sequence up to nth term where n is entered by user. */ #include <stdio.h> int main() { int count, n, t1=0, t2=1, display=0; printf("Enter number of terms: "); scanf("%d",&n); printf("Fibonacci Series: %d+%d+", t1, t2); /* Displaying first two terms */ count=2; /* count=2 because first two terms are already displayed. */ while (count<n) {

5.1培训考试二

家住魔仙堡 提交于 2020-03-13 10:04:27
今天小姐姐给了我们说良心很良心,说毒瘤很毒瘤的一套题(小姐姐说是可以AK的) 老师一定刚去看了复联4 据说这是道水题,一个set模拟就好了 来我们看看小姐姐的标程(仅限c++11) #include <cstdio> #include <set> #include <algorithm> using namespace std; class People { int id, force; People() {} People(int i, int f): id(i), force(f) {}//构造函数,意思是把id赋值为i,把force赋值为f }; bool operator <(People x, People y) { return x.force < y.force; } int n; set <People> s; int main() { scanf("%d", &n); s.insert(People(1, 1000000000)); for (int i = 1, x, y; i <= n; ++i) { scanf("%d%d", &x, &y); auto it1 = s.upper_bound(People(x, y));//找到第一个大于当前能力的人,这里返回的是指针 if (it1 == s.begin()) printf("%d %d\n", x,