i3geek.com
闫庚哲的个人博客

ACM笔记(1)——C语言

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);(释放)

赞(0)
未经允许不得转载:爱上极客 » ACM笔记(1)——C语言
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址