算法学习 PAT乙级--知识点积累(一)

1.关于大数

给定区间 [−2^{31}​​,2^{31}​​] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。

  • 不能用int类型存放输入的数据,用long long
    long long  a[t][3];
    for(int i=0;i
  • unsigned int (unsigned long

        4字节8位可表达位数:2^32=42 9496 7296 范围:0 ~ 42 9496 7295 (42*10^8)

  • int (long)

         4字节8位可表达位数:2^32=42 9496 7296    范围:-21 4748 3648 ~ 21 4748 3647 (21*10^8)

  • long long (__int64)

       8字节8位可表达位数:2^64=1844 6744 0737 0960 0000  

       范围:-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 (922*10^16)

  • unsigned long (unsigned __int64)

        8字节8位可表达位数:2^64=1844 6744 0737 0960 0000   范围:0 ~ 1844 6744 0737 0955 1615 (1844*10^16)

 

2.关于输入

(1)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

   输入样例:

Hello World Here I Come

  输出样例:

Come I Here World Hello
    char c,array[40][80];
    int i=0,j=0;
    while((c = getchar()) != '\n'){
        if(c != ' '){
            array[i][j++] = c;
        }else{
            array[i][j] = '\0';
            i++;
            j=0;
        }
    }
    array[i][j] = '\0';
    for(int k=i;k>=0;k--){
        printf("%s%s",array[k],k==0?"":" ");
    }

(2)1010 一元多项式求导 

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0
while((c = getchar()) != '\n'){
      scanf("%d %d",&m,&n);
      ...
  }

 

3.关于素数

int isPrime(int n){
    int k=0;
    //#include   
    //double sqrt(double x) 返回x的平方根。 
    k=(int)sqrt(n);
    for(int i=2;i<=k;i++){
        if(n%i==0)
          {
            //不是素数,返回0
             return 0;
          }
    }
    //是素数,返回1
    return 1;
}

4.关于C语言库函数——ctype.h

(1)isalnum 

功能:判断字符变量c是否为字母或数字

说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。

(2)isalpha

功能:判断字符ch是否为英文字母,当ch为英文字母a-z或A-Z时,返回非零值(不一定是1),否则返回零。

(3)isupper

功能:判断字符c是否为大写英文字母,当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。

(4)islower

功能:检查参数c是否为小写英文字母。若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。

(5)isblank

功能:检查参数c是否为空白字符,也就是判断是否为空白(space)或是制表符(tab)。空白(space)的ASCII码为32,制表符(tab)的ASCAII码则为9。

(6)isdigit

功能:判断字符c是否为数字

说明:当c为数字0-9时,返回非零值,否则返回零。

(7)ispunct

函数说明:检查参数c是否为标点符号或特殊符号。返回TRUE也就是代表参数c为非空格、非数字和非英文字母。

返回值:若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。

(8)isxdigit

函数说明:检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。16进制数字:0123456789ABCDEF。

参数类型为int,但是可以直接将char 类型数据传入.

 

5.关于输入输出

数据类型 输入/输出格式符 举例
int %d scanf("%d",&n);
long long  %lld scanf("%lld",&n);
float %f scanf("%f",&n);
double %lf / %f(输入输出不一样) scanf("%lf",&n);
char %c scanf("%c",&n);
字符串(char数组) %s scanf("%s", n);
  • scanf的%c格式是可以读入空格和换行的。
  • %md 使不足m位的int型变量以m位进行右对齐输出,高位用空格补充,本身超过m位的保持原样;
  • %0md使不足m位的int型变量以m位进行右对齐输出,高位用0补充,本身超过m位的保持原样;
  • %.mf  让浮点数保留m位小数输出,(保留使用的是四舍六入五成双,四舍五入需用到round函数)

 

 

你可能感兴趣的:(算法)