求救一道C语言的题目,求详细解答过程!非常感谢!!

来自:    更新日期:早些时候
求几道C语言问题的详细解答过程~

我也在学C,说说我的看法,希望我们能相互交流,共同进步。

1、\是转义的意思,除了一些固定的转义字符如
, 之外,\后面是什么内容就输出什么。


2、if(a)
d=d-10;
else
if(!b)
if(!c)
d=15;
else
d=25;
这个在VC编译器中显示应该是这样吧,if()内为逻辑判断,即真或假,一个数的话为零即是假,不为零就是真,这里a=0,为假,所以应执行第一个else后的代码,b=20,即!b=0,也为假,所以下面什么都没执行,b=20。

3、赋值语句是这样,后一个赋值当然要覆盖前一个赋值。

4、这是变量的作用域的原因,因为x是在函数内定义的(无论主函数还是被调函数)都是局部变量(全局变量在函数外定义),局部变量只在定义它的函数内起作用,这里的两个x是在不同函数中定义的,所以即是两个不同的变量, 换句话说两个x的值存储在不同的内存单元,函数调用只是把主函数中x的值赋给被调函数中的x,被调函数中修改的它自己的x值,当然不会影响到主函数中的x值了,然后两个依次输出各自的x值。如果被调函数传递的参数为指针就不一样了,即被调函数是这样:
#include
func(int * x) //指针接收
{
*x=10; //这里x是指针,指针只能接收地址,所以赋10时要在x前加
//* 号,*x表示取出x指针中的值,上面我们已经把主函数中的
//x地址赋给了被调函数的指针x,所以这里的10其实是赋到
//了主函数中的x中去了,
printf("%d,",*x); //这里输出用 *x 跟上面一样是把主函数的x值
//拿来输出
}
main( )
{
int x=20;
func(&x); //传递地址
printf("%d", x);
}
这时运行结果就是:10,10 了,在这里虽然两个x仍然是局部变量,只作用在其定义函数中,但主函数却把它的x的地址传递给了被调函数的x,也就是说func函数中的指针x存储了main函数中x的内存单元,所以两个函数中任何一个x被修改了也就修改了存储它的内存单元的值,所以两个都是10了。


5.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。用输入0来结束输入,用i,j来放统计数,请填空完成程序。
main()
{ int n,i=0,j=0;
printf(“input a integer,0 for end
”);
scanf(“%d”,&n);
while(n) //这里跟第2题中if(a)一样,n为零才为假
{ if(n>0) i=i+1;
if(n<0) j=j+1;
scanf(“%d”,&n); //循环输入,输一个判断一个,直到输入n为零
}
printf(“i=%4d,j=%4d
”,i,j);
}


6、下面程序的功能是在a数组中查找与x值相同的元素所在位置。数据从a[1]元素开始存放,请填空。
#include
main()
{
int a[11],i,x;
printf(“input 10 integers:”);
for(i=1;i<=10;i++)
scanf(“%d”,&a[i]);
printf(“input the number you want to find x:”);
scanf(“%d”, &x);
a[0]=x; i=10;
while(x!=a[i])
i--; //这里是从后往前比较
if(i>0)
printf(“the pos of x is:%d
”,i);
else
printf(“can not find x!
”);
}

7、下面程序的功能是在a数组中查找与x值相同的元素所在位置。
#include
main()
{
int a[10],i,x;
printf(“input 10 integers:”);
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
printf(“input the number you want to find x:”);
scanf(“%d”,&x);
for (i=0;i<10;i++)
if(a[i]==x)
break; //这里是从前往比较
if(i<10)
printf(“the pos of x is:%d
”,i+1);
else
printf(“can not find x!
”);
}

差不多就这样了,填空题不知道你有什么地方不清楚,所以说得也不详细
希望我的回答对你有所帮助

这个很简单啊。。。。循环每次模10取出一位数,然后再除以10再模10又取出一位数,知道那个数变成了0为止,按这个思路应该能写吧,自己好好写吧,我写出来就没意思了

1.int i;int f[20]={1,1};
程序定义了一个变量i和一个长度为20的整型一维数组并把数组的前两个值均初始化为1后面初始化为0
2.for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1];
在i从2到20每次自增1的循环过程中,其实就是在给数组第3个数(数组下标从0开始,所以循环从2开始)到第20个数赋值的过程。数组从第3个数开始,每一个数等于其前两个数的和。
3.for(i=0;i<20;i++)
在i从0到20每次自增1的循环过程中,打印数组。%12表示的是每次占12个字符的位置,if(i%5==0)printf("\n");表示当i自增到5的整数倍时换行,以便可以打出每5个数一行的效果。
4.最后再打印一个换行。

int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
这个步骤是计算菲波拉契数列。
斐波拉契(Fibonacci)数列来源于兔子问题,它有一个递推关系,
f(1)=1
f(2)=1
f(n)=f(n-1)+f(n-2),其中n>=2
{f(n)}即为斐波拉契数列。

for(i=0;i<20;i++)
{
//当i能被5整除时,打印换行符。即输入每5个值就换一行
if(i%5==0)printf("\n");
//%12d指按12位整形数输出,不足12位则右对齐。
printf("%12d",f[i]);
}

//以上则是输出了一个5*4的矩阵。最后打印一个换行结束
printf("\n");
}

此函数是斐波那契数:
#include<stdio.h>
void main()
{
int i;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0)printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}
斐波那契数f(n):当n=0和n=1是,f(n)=1;
n>=2时:f(n)=f(n-2)+f(n-1)
此语句:int f[20]={1,1};是初始化,把n=0和n=1的f(n)初始化1;
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
这个循环就是递归调用,实现“n>=2时:f(n)=f(n-2)+f(n-1)”
此语句: if(i%5==0)printf("\n");
是输出控制,输出5个后就换行。

此语句:printf("%12d",f[i]);对输出的数进行控制。

此语句:printf("\n");对于for循环输出完后换行,在此处用处不大。

解释在程序的注释中:
#include<stdio.h>
void main()
{
int i;
int f[20]={1,1};//定义数组中前两个值
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; //斐波那契数列
for(i=0;i<20;i++)
{
if(i%5==0)printf("\n");//每行输出5个数,然后换行
printf("%12d",f[i]);
}
printf("\n");
}

#include<stdio.h>
void main()
{
int i;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];//很经典的一个数学问题,后一个数等于前两个数的和
//f[20]最开始是{1,1,0,0,0,……},后面的都是0
//从f[2]开始运算,即第三个数开始,依次后一个数等于前两个数之和
for(i=0;i<20;i++)
{
if(i%5==0)printf("\n");//每行输出5个数据
printf("%12d",f[i]);
}
printf("\n");
}


求救一道C语言的题目,求详细解答过程!非常感谢!!视频

相关评论:
  • 19335931488C语言求助攻,题目是第一题,后面是答案和运行结果,求详细解释
    蔺背龙printf("a%c b%c\\tc%c\\tabc\\n",c1,c2,c3);"a"先输出的是字符[a]"a%c",c1得到输出[aa]"a%c b",再输出空格和字符b[aa b]"a%c b%c",c2得到输出[aa bb]"a%c b%c\\t",因当前输出已经占用5个字符所以下个制表位是第9个字符位置,应输出3个空格[aa bb ]"a%c b%c\\...

  • 19335931488C语言 求详细
    蔺背龙(b<c)?b:c的意思是如果b<c,则值为b,否则值为c b=4,c=6,b<c,因此值为4 算式变为:(a<b&&a<c)?a:4;如果a<b&&a<c为真,则值为a,否则值为4,并将值赋给x a=5,b=4,a>b a=5,c=6,a<c a<b&&a<c为假,值为4,并赋给x,x=4 选B ...

  • 19335931488如图,这个c语言程序,求详细讲解
    蔺背龙char a[] = "program", *p;\/\/定义了一个字符数组a,一个字符指针pp = a; \/\/将指针p指向数组a的首地址while(*p != 'g') \/\/当*p的内容不等于g则执行循环{printf("%c\\n",*p-32); \/\/将取得的内容-32,也就是进行ASCII转码,\/\/ 比如a的ASC码是97,97-32 = 65, 65是A的ASCII码...

  • 19335931488c语言的题目,求助啊,在线等!
    蔺背龙void fun(char *s){ while(*s){ if (*s%2==0) printf("%c",*s);s++;} } fun函数的功能是用一个指针指向参数所指的位置,然后循环判断,知道所指位置为空,也就是结束,判断当前所指位置值是奇还是偶,是偶就输出,是奇就忽略,不输出,指针指向下一个位置;good中goo的ASCII码分别是...

  • 19335931488求救一道C语言的题目,求详细解答过程!非常感谢!!
    蔺背龙1.int i;int f[20]={1,1};程序定义了一个变量i和一个长度为20的整型一维数组并把数组的前两个值均初始化为1后面初始化为0 2.for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1];在i从2到20每次自增1的循环过程中,其实就是在给数组第3个数(数组下标从0开始,所以循环从2开始)到第...

  • 19335931488C语言基础题,求解!要求详细解题步骤,
    蔺背龙答案是c 用单引号的是字符,用双引号的是字符串 A中单引号内有两个字符,但字符型变量只能存放一个字符。B,D是字符串 C正确是按照ASCII存储的

  • 19335931488C语言题,答案是5,想知道为什么,求详细过程
    蔺背龙第1次循环 b=1 b%3 ==1是成立的,那么执行b=b+3=4,continue是继续回到for循环执行a++,那么此时a=2 第2次循环 b%3 ==1成立,那么执行b=b+3=7,continue是继续回到for循环执行a++,那么此时a=3 第3次循环 b%3 ==1成立,那么执行b=b+3=10,continue是继续回到for循环执行a++,那么此时a...

  • 19335931488c语言,题目如图。
    蔺背龙填:___,3___原因分析:已知:c1=’d’,c2=‘g’1、先看看c2-’a’是多少:两个字符相减,实质上是两个字符的asc码相减,而我们又知道从a到g,字母到asc码是按照字母表顺序逐个递增的,即:a的asc码+1—>b 的asc码,b的asc码+1—>c的asc码,……所以:c2-’a’=‘g’-‘a’=字...

  • 19335931488C语言问题求大神详细解析
    蔺背龙声明和定义必须相同。还有函数的返回值类型为void时表示函数没有返回值,不能使用函数的返回值。a错 因为调用在定义之前但是没有声明 b错 函数定义的时候返回值类型为void,却欲图使用函数的返回值。c错 函数的声明返回值为int,定义返回值为void 不相符 d正确 ...

  • 19335931488下面有一些关于C语言问题,希望大伙儿侃侃,最好解释详细,谢谢呢?
    蔺背龙第六题:这是C语言的内存动态分配,不是很掌握,没有把握,希望其它好心人帮忙一下补齐.第七题:efgh 这道我简单说下,语言点太多,要是不明白,发消息给我,我就这题说详细.return s+strlen(s)\/2,返回的是一个指针,s指向首元素a,strlen(s)\/2=4,固返回的指针指向第五个元素e.主函数中的 printf...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网