ACM文件的输入输出
#include <stdio.h> int main() { freopen("slyar.in", "r", stdin); freopen("slyar.out", "w", stdout); /* 中间按原样写代码,什么都不用修改 */ fclose(stdin); fclose(stdout); return 0; }
一
问题:利用scanf(“%d”,&number);进行输入时,会输入一个回车符作为结束,这个时候在输入缓存里就把这个回车字符存在里面了。当你要再读入一个字符时,第二次调用scanf时会出现第一个是空白的字节(ASCII为10)
解决:①第二次调用时加空格,如scanf(” %c”,&c);就会默认先把缓存里的回车符读入(如果不加空格),加空格就可以利用格式化的输入跳过一个字符,而达到你的目的了。
②利用getchar()读取一个字节后再读字符。
二
问题:C语言整行读取(包涵空格)
解决:gets(char *);
三
问题:与32位INT型的最大最小值做比较
解决:#include <LIMITS.H>,INT_MAX最大值,INT_MIN最小值
四
问题:清空数组
解决:int dp[1011]; memset(dp,0,sizeof(dp));
五
问题:宏定义Max,无法进行加减运算
解决:定义函数Max,不要用宏!
六
问题:快速排序
解决:
#include <algorithm>
using namespace std;
int a[n];
int cmp ( int a , int b )
{
return a>b;
}
①sort(a,a+n,cmp);
②qsort( a, n,sizeof(s[0]),cmp );
七
问题:动态申请空间
解决:C++中可以用:int *a=new int [n];(申请)delte[] a;(释放)
C语言中可以用malloc:int *a=(int*)malloc(n*sizeof(int));(申请)free(a);(释放)