c语言题目 求解

 我来答
施秋露sf
2019-04-28
知道答主
回答量:2
采纳率:0%
帮助的人:1.5万
展开全部
#include <stdio.h>
#include <string.h>

/* No.1 */
void reverse(char *s,char k)
{
int i,j;
j = strlen(s)-1;
for(i=0;i<j;i++,j--)
{
k = *(s+i);
s[i] = *(s+j);
s[j] = k;
}
}

int main()
{
char str[80],k;
gets(str);
printf("\n Original is: %s\n",str);
reverse(str,k);
printf("\n Now is: %s\n",str);
return 0;
}

/* No.2 */
int main()
{
char str[100];
int i,sum = 0;
gets(str);
for(i=0;i<strlen(str);i++)
if(str[i]>='0'&&str[i]<='9') sum = sum*10+str[i]-48;
printf("sum is %d\n",sum);
return 0;
}

结果如下:

Yuqi_Tan

2019-04-28 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3416万
展开全部
第3题:
第一空:char *s
第二空:strlen(s)-1
第三空:i<j
第四空:*(s+i)=*(s+j);
特别说明:第三题题目本身有一个错误:变量k的定义语句不应该放在main函数中,应该放到reverse函数中:
1、主函数中的char str[80],k;这一行改成char str[80];。
2、reverse函数中,在int i,j;下面增加一行:char k;。
就可以了。
原因是:主函数中声明了变量k但用不到,而reverse函数中用到了k可是没声明。main函数中声明的局部变量k的作用域只在main函数内部,而下面调用函数时只使用了一个参数str,也没有把k作为参数传递过去(也没有必要),所以,reserve函数中的k会编译不通过。这应该是题目本身的一个bug 。
第5题:
第一空:填写下面三个的任意一个都可以:
str[i]!=‘\0’
str[i]!=0
str[i]
第二空:sum*10+str[i]-‘0’;
注意:第3题第四空和第2题第二空都不要丢掉后面的分号。
有什么疑问请留言。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2019-04-28 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6503万
展开全部
左图,依次填——
char *s,char k=0(或char *s,int k=0)、j=strlen(s)-1、i<j、*(s+i)=*(s+j);(s[i]=s[j])。
右图,依次填——
str[i]!='\0'(或str[i]或str[i]!=0)、sum*10+str[i]-'0';(或sum*10+str[i]-48;)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
勇敢的小德欧Ch
2019-04-28 · TA获得超过105个赞
知道答主
回答量:51
采纳率:44%
帮助的人:11.1万
展开全部
来强调某件事
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式