求教编程问题

1.使用指针,完成 + - * / 运算。要求:用户输 入两个数据,使用指针得到运算结果,并输出。2.使用指针传递函数参数。要求:完成一个函数,函数的功能是:通过传地址的方法,传递进来两个字符,并把两个字符转换成大写,在主函数中输出。3.用户输入两个字符串, (1),输出两个字符串的长度。 (2),输出两个字符串的比较结果。 (3),将第二个字符串连接到第一个字符串的后面,然后输出。
2026年09月20日 06:45
有2个网友回答
网友(1):

1、
#include

main()
{
int a,b,*p=&a,*q=&b;
char op, *o=&op;
long s;
printf("请输入算式,例如1+2:\n");
scanf("%d%c%d",p,o,q);
switch(op)
{
case '+': s=*p+(*q); break;
case '-': s=*p-(*q); break;
case '*': s=(*p)*(*q); break;
case '/': s=(*p) / (*q); break;
}
printf("%d%c%d=%ld",*p,*o,*q,s);
}
2、
#include

void Change(char *p,char *q)
{
if((*p) > 96 && (*p) < 123)
*p -= 32;
if(*q > 96 && *q < 123)
*q -= 32;
}
main()
{
char a='d',b='n';
printf("before:a=%c,b=%c\n",a,b);
Change(&a,&b);
printf("after:a=%c,b=%c\n",a,b);
}
3、
如果不是叫自己创建函数的话,就直接用系统给的函数就可以了(#include),求长度用strlen(char *),求比较结果用strcmp(char *,char *),连接的话用strcat(char *,char *),若是要用自己编写的函数,我这里有一个我编的,可以看看
/*
*函数描述:void strconnection(char *p,char *q)
*
*功能描述:连接两个字符串
*
*错误报告:
*
*返回值 :无
**/
void strconnection(char *p,char *q)
{
int i=0,j=0;
while(p[i]!=0)
i++;
for(;q[j]!='\0';i++,j++)
p[i]=q[j];
p[i]='\0';
}
/*
*函数描述:char strcomparison(char *p,char *q)
*
*功能描述:将数组p,q比较大小
*
*错误报告:暂无
*
*返回值 :等于返回0,大于返回1,小于返回2
**/
char strcomparison(char *p,char *q)
{
int i;
for(i=0;(*(p+i)!='\0'&&*(q+i)!='\0'&&i<60);i++)
{
if(*(p+i)>*(q+i))
return 1;
else if(*(p+i)<*(q+i))
return 2;
}
if(*(p+i)==0&&*(q+i)==0) return 0;
else if(*(p+1)==0) return 1;
else return 2;
}
/*
*函数描述:int strlength(char *str)
*
*功能描述:查看字符串str的长度
*
*错误报告:暂无
*
*返回值 :返回长度i
**/
int strlength(char *str)
{
int i=0;
while(*(str+i)!=0)
i++;
return i;
}

网友(2):

//1.

#include
#include

int main(void)
{
float a, b;
float *p = NULL;

printf("输入两个数:");
scanf("%f%f", &a, &b);

p = (float*)malloc(sizeof p);
*p = a + b;
printf("%a+b=%f\n", *p);
*p = a - b;
printf("a-b=%f\n", *p);
*p = a * b;
printf("a*b=%f\n", *p);
if(b != 0){
*p = a / b;
printf("a/b=%f\n", *p);
}

getch();

return 0;
}

//2.

void toUp(char *a, char *b);

int main(void)
{
char *a, *b;
char ca = 'a', cb = 'b';

a = &ca;
b = &cb;

toUp(a, b);

putchar(*a);
putchar(*b);

getch();

return 0;
}

void toUp(char *a, char *b)
{
if(*a >= 'a' && *a <= 'z'){
*a -= 32;
}
if(*b >= 'a' && *b <= 'z'){
*b -= 32;
}
}

//3.

#include
#include
#define M 100

int main(void)
{
char s1[M], s2[M];

puts("输入两个字符串:");
scanf("%s", s1);
fflush(stdin);
scanf("%s", s2);

printf("s1长度=%d\n", strlen(s1));
printf("s2长度=%d\n", strlen(s2));
puts("比较结果:");
if(strcmp(s1, s2) < 0){
puts("s1小于s2");
}else{
if(strcmp(s1, s2) > 0){
puts("s1大于s2");
}else{
puts("s1等于s2");
}
}

puts("拼接结果:");
printf("s1+s2=%s", strcat(s1, s2));

getch();

return 0;
}