求助3道C语言题目,求详细过程

1.阅读下列程序:main(){charstr[100];scanf(“%s”,str);inverse(str)printf(“%s\n”,str);}inverse[... 1.阅读下列程序:
main ( )
{
char str [ 100];
scanf ( “%s”,str);
inverse ( str )
printf ( “%s\n”, str);
}
inverse [ str ]
char str[ ];
{
char t ;
int i , j;
for ( i=0, j=strlen (str );i<strlen ( str)/2; i++,j--)
{
t =str [ i];
str [ i]=str [ j-1];
str [ j-1]=t;
}
}
如果输入“an anple ”,输出结果是( )
A.an anple B.elpna na C.an D.na

2.以下程序的运行结果是输出如下图形。请填空。
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
#include <stdio.h>
Void a(int i)
{ int j,k;
For(j=0;j<=7-i;j++) printf(” ”);
For(k=0;k<【1】;k++) printf(”* ”);
Printf(”\n”);
}
Main( )
{ int i;
For(i=0;i<3;i++) 【2】;
For(i=3;i>=0;i- -) 【3】;


3.下列程序的输出结果是 ( )
#define R 3.0
#define PI 3.1415926
#define L 2*PI*R
#define S PI*R*R
Main ( )
{
Printf ( “L=%f S=%f\n”,L,S);
}
A.L=18.8449555 S=28.274332
B.18.8449556=18.849556 28.274333=28.274333
C.L=18.849566 28.274333=28.274333
D. 18.8449556=18.849556 S=28.274333
展开
 我来答
精锐狐狸
2012-12-26 · 超过13用户采纳过TA的回答
知道答主
回答量:82
采纳率:100%
帮助的人:24.4万
展开全部
1、D na
#include"stdio.h"
#include"stdlib.h"
void main ( )
{
char str [ 100];
scanf ( "%s",str);//输入"an anple" scanf以空格或回车为结束 str只取空格以前的字符串an
inverse (str);// 进入下面调用函数inverse(str)字符串str互换前后字符“an”变成"na"
printf ( "%s\n", str);//输出str ”na“
}
inverse (str)
char str[ ];
{
char t ;
int i , j;
for ( i=0, j=strlen(str)//i j赋初值0、字符串长度strlen
;i<strlen (str)/2;//循环到字符串的前一半停止
i++,j--)
{
t =str [ i];str [ i]=str [ j-1];str [ j-1]=t; //字符串前半和后半互换
}
}
2、

#include <stdio.h>
void a(int i)
{
int j,k;
for(j=0;j<=7-i;j++) //每行输出的空格数 6,5,4,3,2,1,0
printf(" ");
for(k=0;k<2*i-1;k++) //<1>每行输出的*号数1,3,5,7
printf("*");
printf("\n");//行完毕换行
}
void main( )
{
int i;
for(i=0;i<3;i++) a(i+1);//<2>正序a()循环三行
for(i=3;i>=0;i--) a(i+1);//<3>反序a()循环四行
}

3、A
#include"stdio.h"
#define R 3.0
#define PI 3.1415926
#define L 2*PI*R
#define S PI*R*R
//前面都是宏定义 几个数 直接算就可以
void main ( )
{
printf ( "L=%f S=%f\n",L,S);// %里的才是变量 双引号里的其他字符照原样输出
}

你说3 选d?答案肯定错了 我运行过了 a
匿名用户
2012-12-26
展开全部
1. B inverse的作用就是把字符串倒置
2. 2*(i-5)+1 a(i+5) 【输出前三行】 a(i+5)【输出后四行】
3. A 很明显输出是 "L=XXXXX S=XXXXX" 只有A符合
追问
第一题 
for ( i=0, j=strlen (str );i<strlen ( str)/2; i++,j--)
没看懂

第二题 数据的来源
能否详细一点

第三题我也选的A,可是标准答案给的D 不知道为什么
追答
for  (i=0, j=strlen (str );i<strlen ( str)/2; i++,j--)
j=strlen (str ) j的初值是字符串的长度,然后j从末尾、i从开始位置向中间移动,并且相交换
i<strlen ( str)/2是循环次数,只要交换字符串长度一般的次数就行了,如果字符串长度为6,交换3次就行了

从For(j=0;j<=7-i;j++) printf(” ");看出是打印空格的,前三行空格数分别为3、2、1
推出(7-i)=2、1、0 所以i为5、6、7
从 For(k=0;k<【1】;k++) printf(”* ”);看出打印"*"的前三行*的个数分别为1、3、5而i为5、6、7 所以推出【1】为 2*(i-5)+1
For(i=0;i<3;i++) 【2】:前面已经知道前三行i为5、6、7,所以要传递进a()函数的参数为外面的i+5【外面的i为0,1,2,刚好差5】所以【2】为a(i+5)
下面【3】和【2】一样的道理

第三天绝对选A ,在双引号里面的L和S是被看做字符的,而不是宏定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ddd1c50
2012-12-26 · 超过21用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:35.7万
展开全部
亲啊!这几道题都是关于函数调用的!第一题选B,最后面的t=…是交换两个数!
第二题i a(i) a(i) 是函数的调用!第三题选A假如我没有猜错的话,你把A中答案抄错了,多写了一个5!%f默认6位小数,结果不会四舍五入的!就这些拉,希望对亲学习有帮助噢!
追问
追问第一题
for ( i=0, j=strlen (str );i<strlen ( str)/2; i++,j--)
没看懂

第二题 数据的来源
能否详细一点

第三题我也选的A,可是标准答案给的D 不知道为什么 答案错了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龙锋蔡生
2012-12-26
知道答主
回答量:33
采纳率:0%
帮助的人:8.3万
展开全部
D, #include <stdio.h>
Void a(int i)
{ int j,k;
For(j=0;j<=7-i;j++) printf(” ”);
For(k=0;k<【1】;k++) printf(”* ”);
Printf(”\n”);
A
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式