C语言练习题(9)

来源:互联网 发布:广告市场有多大 知乎 编辑:程序博客网 时间:2024/06/11 15:28

1、

(1)分析程序, 写出输出结果?         char *ptr;          if ((ptr = (char *)malloc(0)) == NULL)          puts("Got a null pointer");          else          puts("Got a valid pointer");     //会输出Got a valid pointer。原因:malloc(0)会返回一个特别的可以被成功释放的指针。
   (2) 分析程序, 写出输出结果?         char * GetStr()         {                  char *tmp;                  tmp = "123"                  return tmp;         }         void main()         {                  printf("%s.\n", GetStr());         }//会输出123。原因:返回指针指向常量123,常量在程序退出之后才释放。

2、输入一个正整数,输出原数并逆序打印出各位数字。
//例如:原数:123456 逆序:654321
//逆序函数原型:int invers_int(int x)(需要用到递归实现)

#include <stdio.h>int invers_int(int x){    printf("%d", x % 10);    x /= 10;    if (x == 0)        return 0;    else        return(invers_int(x));}int main(void){    int num = 0;    printf("Input numbers:");    scanf("%d", &num);    printf("原数:%d\n", num);    printf("逆序:");    invers_int(num);    return 0;}

3、按以下规律翻译密码:将每一个字母变成它后面的字母,例如,将A变成B,B变成C,…,Z变成A,非字母字符不变,“!”作为电文结束标志。

#include <stdio.h>int main(void){    char c;    while ((c = getchar()) != '!')    {        if ((c < 'Z'&&c >= 'A') || (c < 'z'&&c >= 'a'))            printf("%c", c + 1);        else if (c == 'z')            printf("a");        else if (c == 'Z')            printf("A");        else            printf("%c", c);    }}