c语言题目 求解
4个回答
展开全部
#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;
}
结果如下:
展开全部
第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题第二空都不要丢掉后面的分号。
有什么疑问请留言。
第一空: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题第二空都不要丢掉后面的分号。
有什么疑问请留言。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
左图,依次填——
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;)
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;)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
来强调某件事
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询