首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序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
39
问题
给定程序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://jikaoti.com/ti/4fd0FFFM
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
有以下程序#include<stdio.h>structS{inta;intb;};main(){structSa,*p=&a;a.a=99;
以下叙述中正确的是()。
有以下程序:#includemain(){inty=9;for(;y>0;y一一)if(y%3==0)printf(“%d”,一一y);}程序运行后的输出结果是()。
设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。下列所示的输入形式中正确的是(注:口代表空格字符)()。
下列定义变量的语句中错误的是()。
下列叙述中正确的是()。
请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应
在软件开发中,需求分析阶段产生的主要文档是()。
某二叉树中度为2的结点有10个,则该二叉树中有()个叶子结点。
以下选项中非法的字符常量是
随机试题
简述增长速度与发展速度的区别。
硝酸铵炸药的储存期为()个月。
保障退休后生活的第一道“防线”应当是()。[2011年5月真题]
案例:王老师在教“Word自选图形的设置”中,先出示两张对比图片,让学生通过比赛,尽快找出两张图片之间的区别。当学生找出图片的不同后,再引导学生思考如何利用自选图形的工具功能让两张图片变得相同,从而激发学生的求知欲,让学生自主探究自选图形的旋转或
材料:在“种子萌发环境条件”探究活动中,某教师拟参照下列各项给予学生评价:(1)能否根据观察或生活经验提出问题,根据问题提出假设?(2)能否利用身边的材料设计探究假设的实验方案,包括设计对照实验?(3)能否按照试验计划准备实验材料,有步骤地进行实验
联系实际,谈谈正确儿童观的内容
甲和乙因合同纠纷诉至法院,诉讼过程中出现下列情形,不应回避的是()。
Britishuniversities,groaningundertheburdenofahugeincreaseinstudentnumbers,arewarningthatthetraditionofafree
有以下程序:#includevoidfun(char(*P)[6]){int1;for(i=0;i
ThefloodofwomenintothejobmarketboostedeconomicgrowthandchangedU.S.societyinmanyways.Manyin-homejobsthatuse
最新回复
(
0
)