c语言问题 关于指针 关于函数调用的。

2025-05-14 13:59:23
推荐回答(2个)
回答1:

#include
void main()
{
void fun(char*,char *);
char n[10],r[10];
scanf("%s",n);
fun(n,r);
printf("%s",r);
}

void fun(char* n,char *r)
//题目要求是用形参返回结果,没说是用函数返回值来返回结果
//我这里用形参r来返回结果
{
int i=0;
while(*n!='\0') //注意这里是!=
{
if(*n%2!=0) //直接用n%2就行了,因为字符0,9的ASCII码正好是48-57,奇偶性一致
{
r[i]=*n;
i++;
}
n++;
}
r[i]='\0'; //别忘了加上字符串结束符
}

回答2:

//输入不超出 unigned int 的范围就可以了

int fun(unsigned int *inp); /*声明子函数*/
int main(int argc, char *argv[])
{

unsigned int n;
scanf("%d",&n);
fun(&n); /*调用子函数*/
printf("%d",n);

system("PAUSE");
return 0;
}

int fun(unsigned int *inp)
{
int n = *inp, unit = 0, carry = 1,tmp;

while(n % 10)
{
tmp = n % 10;
n = n/10;
if(0 != tmp % 2)
{
unit = carry * tmp + unit;
carry *=10;
}
}
*inp = unit;
return 0;
}