(1)分析程序, 写出输出结果?
char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts("Got a null pointer");
else
puts("Got a valid pointer");
》》》输出Got a valid pointer。原因:ptr指向一个有效地址,但无法存入数据
(2) 分析程序, 写出输出结果?
char * GetStr()
{
char *tmp;
tmp = "123"
return tmp;
}
void main()
{
printf("%s.\n", GetStr());
}
》》》输出123。原因:字符串不存放在栈中,子函数调用结束不会消失
2、输入一个正整数,输出原数并逆序打印出各位数字。
//例如:原数:123456 逆序:654321//逆序函数原型:int invers_int(int x)(需要用到递归实现)
int invers_int(int x)
{
if( x<1 )
return 0;
else
printf("%d",x%10);
return invers_int(x/10);
}
3、按以下规律翻译密码:将每一个字母变成它后面的字母,例如,将A变成B,B变成C,…,Z变成A,非字母字符不变,“!”作为电文结束标志。
void func(char arr[])
{
int i = 0;
while(1)
{
if(arr[i] >= 'A'&& arr[i] < 'Z'||arr[i] >= 'a'&& arr[i] < 'z')
arr[i]++;
else if(arr[i] == 'Z')
arr[i] -= 25;
i++;
}
return arr;
}