求助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 展开
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 展开
展开全部
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
#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符合
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是被看做字符的,而不是宏定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
亲啊!这几道题都是关于函数调用的!第一题选B,最后面的t=…是交换两个数!
第二题i a(i) a(i) 是函数的调用!第三题选A假如我没有猜错的话,你把A中答案抄错了,多写了一个5!%f默认6位小数,结果不会四舍五入的!就这些拉,希望对亲学习有帮助噢!
第二题i a(i) a(i) 是函数的调用!第三题选A假如我没有猜错的话,你把A中答案抄错了,多写了一个5!%f默认6位小数,结果不会四舍五入的!就这些拉,希望对亲学习有帮助噢!
追问
追问第一题
for ( i=0, j=strlen (str );i<strlen ( str)/2; i++,j--)
没看懂
第二题 数据的来源
能否详细一点
第三题我也选的A,可是标准答案给的D 不知道为什么 答案错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询