首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序MODl1.C中函数char *fun(char *s1,char *s2,char *r)的功能:将两个长度相等的数字字符串当作两个加数,求其代表的数值之和并以字符串的形式存入r所指内存且返回。 例如:s1是”723”,s2是”567”
给定程序MODl1.C中函数char *fun(char *s1,char *s2,char *r)的功能:将两个长度相等的数字字符串当作两个加数,求其代表的数值之和并以字符串的形式存入r所指内存且返回。 例如:s1是”723”,s2是”567”
admin
2022-10-25
81
问题
给定程序MODl1.C中函数char *fun(char *s1,char *s2,char *r)的功能:将两个长度相等的数字字符串当作两个加数,求其代表的数值之和并以字符串的形式存入r所指内存且返回。
例如:s1是”723”,s2是”567”,则返回的字符串为”1290”。要考虑进位。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<string.h>
char *fun(char *s1,char *s2,char *r)
{
int len,cy=0,md;
char *p,*q,*t;
len=strlen(s1);
p=s1+len-1:
q=s2+len-1:
t=r+len;
/************found************/
*t=’\0’;
while(p>=s1)
{
/************found************/
md=*p+*q-’0’+cy:
if(md>=10) cy=1;
else cy=0;
{t=md%10+’0’;
p﹣﹣;
q﹣﹣;
t﹣﹣;
}
/************found************/
if(cy=1)
*t=’1’;
else
{
while(*r++=*++t);
}
return r;
}
void main()
{
char sl[100],s2[100],s3[101];
strcpy(s1,”65743”);
strcpy(s2,”85339”);
fun(s1,s2,s3);
printf(”%s+%s=%s\n”,s1,s2,s3);
}
选项
答案
(1)*(t+1)=’\0’;或者*(1+t)=’\0’; (2)md=*p-’0’+*q-’0’+cy; (3)if(cy==1)
解析
题干要求将两个长度相等的数字字符串当作两个加数,求其代表的数值之和并以字符串的形式存入r所指内存且返回。指针p指向字符串s1的最后一个字符,指针q指向字符串s2的最后一个字符,指针t指向r+len。
(1)指针变量r存放相加以后的字符串,相加后可能会发生进位(多一位),因此,指针t后面一位用来存放字符串结束标志。这里将“*t=’\0’;”修改为“*(t+1)=’\0’;”或“*(1+t)=’\0’;”。
(2)将指针变量p和q指向的数字字符相加,所以需要减去字符0。这里将“md=*p+*q-’0’+cy;”修改为“md=*p-’0’+*q-’0’+cy;”。
(3)如果cy为1,则加法运算发生进位,指针t的位置存放1。这里将“if(cy=1)”修改为“if(cy==1)”。
转载请注明原文地址:https://kaotiyun.com/show/qRkp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
有以下程序:#include<stdio.h>#include<string.h>typedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(S
以下函数实现按每行8个输出w所指数组中的数据:#include<stdio.h>voidfun(int*w,intn){inti;for(i=0;i<n;i++){______________printf("%d",w[i]);}p
下述语句中,在字符串s1和s2相等时显示“theyareEqual”的是()。
下列定义变量的语句中错误的是()。
有以下程序#include<stdio.h>#defineFNA(x)x*x#defineFNB(x)x+xmain(){inta=2,b=4;printf("%d,%d
有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为()。
有以下程序:#include<stdio.h>voidfun(intp){intd=2;p=d++;printf("%d",p);}main(){inta=1:fun(a);printf(
已有定义inta=3;和输出语句printf(“%8x”,a);以下正确的叙述是()。
以下选项中正确的定义语句是()。
有以下程序#includemain(){inta=1,b=0;printf("%d,",b=a+b);printf("%d\n",a=2*b);}程序运行后的输出结果是()。
随机试题
甲公司是一家餐饮上市公司,企业的目标是为股东创造更多价值。在下列情形中,反映企业创造价值的是()。
关于气管内插管,下列哪项是不正确的?
生物转化反应分为两相反应,下列哪项不属于第一相反应
下列关于肺泡表面活性物质的叙述,错误的是
下列表述中属于适用移送管辖必须具备的条件的是:()。
设A为m×n矩阵,则齐次方程组Ax=0仅有零解的充分条件是()。
地基验槽时,需在基底进行轻型动力触探的部位有( )。
某公司因业务需要,经营地点从吴忠迁至银川。该公司需要办理()税务登记。
A、 B、 C、 D、 B部分数依次为1、2、3、4、(5),答案为B。
Rayburn制造公司目前是一家完全权益结构的公司,公司的权益价值是2000000美元,权益的成本为18%,并假定不存在税收。该公司计划发行400000美元的债务用于回购公司股票,债务成本是10%。请计算:回购后公司总的资本成本:
最新回复
(
0
)