C语言的题目!高手请进来帮忙!

1.以下函数fun的功能是将一个字符串的内容颠倒过来,请填空.#include<string.h>voidfun(charstr[]){inti,j,k;for(i=0,... 1.以下函数fun的功能是将一个字符串的内容颠倒过来,请填空.
#include <string.h>
void fun(char str[])
{
int i,j,k;
for(i=0,j=____;i<j;i++,____)
{k=str[i];str[i]=str[j];str[j]=k;
}
}
答案是strlen(str)-1,j--
为什么?详细点

2.对以下的程序,从第一列开始输入数据:2473回车,程序的输出结果是____
#include<stdio.h>
void main()
{
while(c=getchar())!=`\n`)
{
switch(c-`2`)
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default :putchar(c+2);break;
}
}
printf("\n");
}
答案是668977
为什么?详细点

3.当输入为adf123fgf456kfg#时,下面程序的输出结果为:
#include<stdio.h>
void main()
{
char c;
int m=0,n=0;
while((c=getchar())!=`#`)
{
switch(c>=`a`&&c<=`z`)
{
case 1:m++;break;
case 2:n++;break;
}
}
printf("%d,%d\n",m,n);
}
答案是9,6
为什么?详细点

谢谢各位大侠了!!!!
展开
 我来答
翁氏家族_知识
推荐于2016-03-06 · 超过14用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:0
展开全部
#include <string.h>
void fun(char str[])
{
int i,j,k;
for(i=0,j=____;i<j;i++,____)
{k=str[i];str[i]=str[j];str[j]=k; //从第一个到最后一下颠倒
}
}
strlen(str)-1:解释:strlen(str)字符串的长度。 -1为数组的最大下标。数组是从0开始的
J--:解释:循环后减一,即从第一个到最后一下颠倒。

/***********************************************************/

#include<stdio.h>
void main()
{
while(c=getchar())!=`\n`)
{
switch(c-`2`)
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default :putchar(c+2);break;
}
}
printf("\n");
}
说明:当=2时,C=2,C-2=0 执行以下两句。
case 0: //因为没break所以流程到下面
case 1:putchar(c+4); //break为退出选择。
//以上输出为6

当=4时,C=4,C-2=2,
case 2:putchar(c+4);break; //也为6

当=7时,C=7,C-2=5,执行
default :putchar(c+2);break;//default为以上都没时选择这句。
//为9

当=3时,C=3,C-2=1,执行
case 1:putchar(c+4);
case 2:putchar(c+4);break; //为77
//所以答案是668977

/**************************************************/

#include<stdio.h>
void main()
{
char c;
int m=0,n=0;
while((c=getchar())!=`#`) //输入赋给c
{
switch(c>=`a`&&c<=`z`)
{
case 1:m++;break;
case 2:n++;break;
}
}
printf("%d,%d\n",m,n);
}
//我想你这道题出错了吧。c>=`a`&&c<=`z`因为此语句不管怎样不可能为2.
//只有1或0
//所以我想应将case 2:n++;break; 改为case 0:n++;break;
//解释:c>=`a`&&c<=`z`此条件为a到z之间的小写。ASCII比较。
//所以m=9,n=6(其余数字)
考阵cO
2008-08-27 · TA获得超过785个赞
知道小有建树答主
回答量:532
采纳率:100%
帮助的人:330万
展开全部
第一道:for(i=0,j=____;i<j;i++,____)
是一个算法,自己在纸上算算,k=str[i];str[i]=str[j];str[j]=k;
是交换左右两个数,根据i++j--来推移。在纸上演算吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式