我有一到C语言题目想问问急死了,马上就要

来源:百度知道 编辑:UC知道 时间:2024/06/04 15:09:15
改错题:
下列程序中有错误,按题中的计算要求,修改为正确的程序内容,调试后将运行结果粘贴在程序末。
该函数将一个16进制的字符串转化为十进制数,如“2A”转化为42。字符串应该仅由数字和大写字母A至F构成,若字符串中出现其它符号则返回-1。(已知转化的整数在有效范围内)
int hexvalue( char *str )
{
int data, i, n;
for ( i = 0; str[i]!=’\0’; i++ )
{
if ( str[i]<=’9’ )
n = str[i] – ‘0’;
else if ( str[i]>=’A’ && str[i]<=’F’ )
n = str[i] – ‘A’ + 10;
else
return –1;
data = data*10 + n;
}
return data;
}

编程序:
试设计一个名为calc的函数,它能求出两个整型数的和与积,要求main调用该函数,调试后将运行结果粘贴在程序末。

你的源程序有多处错误其中data = data*10 + n;
不能写在循环内,修改后源程序如下:
int hexvalue( char *str )
{
int data=0,i, n=0;
for (i=0;str[i]!='\0';i++)
{
if (str[i]>='0'&&str[i]<='9')
n=n*16+str[i]-'0';
else if ( str[i]>='A'&&str[i]<='F')
n = n*16+str[i]-'A'+10;
else
return -1;
}
data=data*10+n;
return data;
}
main()
{
char s[80];
int x;
printf(" please enter a 16 jing zhi string:\n");
gets(s);
x=hexvalue(s);
printf("%s(16)=%d(10):\n",s,x);
}
2,源程序如下:
由于这个程序涉及到地址传递不用指针做很难做到!
main()
{
int a,b,sum,j;
printf("please enter a,b(a>0,b>0):\n");
scanf("%d %d",&a,&b);
calc(a,b,&sum,&j);
printf("sum=%d\n j=%d\n",sum,j);
}
int calc(int a,int b,int *s,int *j)
{
*s=a+b;