C三道题(六)

来源:互联网 发布:淘宝网怎么找人工客服 编辑:程序博客网 时间:2024/06/07 04:09

1、(1)分析程序, 写出输出结果?

    char *ptr;     if ((ptr = (char *)malloc(0)) == NULL) //malloc有默认申请最小值,结果不为空,判断结果为假。        puts("Got a null pointer");     else         puts("Got a valid pointer");      //输出。

(2) 分析程序, 写出输出结果?

    char * GetStr()    {        char *tmp;                 //该变量在子函数中申请,子函数结束时销毁。        tmp = "123"        return tmp;                //返回了一个地址,在子函数中该地址存储的是字符‘1’,函数结束后可能被其他程序更改    }    void main()    {        printf("%s.\n", GetStr()); //输出应为随机值,可能是123。    }

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

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

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

#include <stdio.h>#include <string.h>void main (void){    char *p = "ABCXYZ!";    int i = 0;    for (i=0; i<strlen(p); i++)    {        if (p[i]>='A' && p[i]<'Z')        {            printf ("%c", p[i]+1);        }        else if (p[i] == '!')        {            printf ("!\n");            return;        }        else if (p[i] == 'Z')            printf ("A");        else            printf ("%c", p[i]);    }}
原创粉丝点击