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]);
}
}