求几道C语言问题的详细解答过程

求几道C语言问题的详细解答过程,请详细说明一下运算过程,谢谢了各位!!!!!!

1.#include <stdio.h>
main()
{int x=6,a=4,y=2,b=6;
x+=x;
printf("x=%d\n",x);
a=y;
printf("a=%d\n",a);
printf("Li is a \'cat\n。");
}
运行结果为:x=12
a=12
Li is a 'cat

这个程序我不明白最后一个输出的printf("Li is a \'cat\n。");中\'cat是什么意思?怎么能输出来'cat ?

2.#include <stdio.h>
main()
{ int a=0,b=1,c=0,d=20;
if(a)
d=d-10;
else
if(!b)
if(!c)
d=15;
else d=25;
printf("d=%d\n",d);
}
运行结果为:d=20

我不是很明白
if(a)
else
if(!b)
if(!c)这几个是什么意思?以前的程序中if ( ),括号中不是有判断语句么?上述那些怎么判断真假呀?不是很明白!!!

3。#include <stdio.h>
main( )
{ int a=1,b=0;
scanf(“%d”,&a);
switch(a)
{ case 1: b=1;break;
case 2: b=2;break;
default : b=10;}
printf("%d ", b);
}
若键盘输入5,运行结果为:10

这个题的问题是:a赋初值为1,那么输入a=5后,原来的那个初值就没有用了?被改变了么?

4.#include<stdio.h>
func(int x)
{
x=10;
printf(“%d, ”,x);
}
main( )
{ int x=20;
func(x);
printf(“%d”, x);
}
运行结果为:10,20

这个我不是很明白的是,为什么主函数和函数定义的X值不一样,而且还要输出两个数呢?

下面几个是程序填空题,没有写的都是空……
5.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。用输入0来结束输入,用i,j来放统计数,请填空完成程序。
main()
{ 空 n,i=0,j=0;
printf(“input a integer,0 for end\n”);
scanf(“%d”,&n);
while 空
{ if(n>0) i= 空 ;
if(n<0) j= 空 ;
空 ; }
printf(“i=%4d,j=%4d\n”,i,j);
}

2。下面程序的功能是在a数组中查找与x值相同的元素所在位置。数据从a[1]元素开始存放,请填空。
#include <stdio.h>
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”, 空 );
a[0]=x; i=10;
while(x!= 空 ) 空 ;
if( 空 ) printf(“the pos of x is:%d\n”,i);
else printf(“can not find x!\n”);
}
3。下面程序的功能是在a数组中查找与x值相同的元素所在位置。
#include <stdio.h>
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)
空 ;

if( 空 )
printf(“the pos of x is:%d\n”,i+1);
else printf(“can not find x!\n”);
}谢谢各位
希望各位给予详细正确的解答,谢谢了!!!!!!我刚学C语言,不是很懂,呵呵。

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

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

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<stdio.h>
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\n”);
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\n”,i,j);
}

6、下面程序的功能是在a数组中查找与x值相同的元素所在位置。数据从a[1]元素开始存放,请填空。
#include <stdio.h>
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\n”,i);
else
printf(“can not find x!\n”);
}

7、下面程序的功能是在a数组中查找与x值相同的元素所在位置。
#include <stdio.h>
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\n”,i+1);
else
printf(“can not find x!\n”);
}

差不多就这样了,填空题不知道你有什么地方不清楚,所以说得也不详细
希望我的回答对你有所帮助
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-06
第一个\'cat的问题,由于'符号是C语言中的标识符,参与程序,为了区别,如果'作为单独的字符显示输出要在前面加\。
第二个,所谓的真假判断,就是判断里面的值是1还是0,1为真,0为假,由于a=0,if(a)就是if(0),为假,不执行,其他类似,!是非运算符
第三个,对,由于a是变量,最后的有效赋值才是有效地,所以a=5,执行default语句,b=10
第四个,主函数中有一个输出语句,子函数还有一个输出语句,在主函数中调用子函数时,就执行了子函数中的输出语句,输出了10,之后主函数中有执行了自己的输出语句,输出了20,所以最后输出两个数。
程序题第一个:这个只有写goto语句才能实现你所描述的功能
main()
{label:int n,i=0,j=0;//i是大于0的个数,j是小于0的个数
printf(“input a integer,0 for end\n”);
scanf(“%d”,&n); //输入一个整数
while (n!=0) //判断是否为0
{ if(n>0) i=i+1;//大于0 i+1
if(n<0) j=j+1;//小于0 j+1
goto label; }// 回到程序开头处,再次进行输入操作
printf(“i=%4d,j=%4d\n”,i,j);// 输入结束,输出i和j的值
}
第二个:
#include <stdio.h>
main()
{ int a[11],i,x;
printf(“input 10 integers:”);
for(i=1;i<=10;i++) scanf(“%d”,&a[i]);//给数组a赋值 printf(“input the number you want to find x:”);// 给x赋值
scanf(“%d”, &x );
a[0]=x; i=10;//把x的值放到a[0]
while(x!=a[i]) i--; //查找是否有和x相等的值
if(i!=-1) printf(“the pos of x is:%d\n”,i);//有,输出位置
else printf(“can not find x!\n”);//没有,输出未找到
}
第三个:
#include <stdio.h>
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++) //这个是用for循环判断,如果找到相等的,跳出循环
if(a[i]==x)
break;

if(i!=10)
printf(“the pos of x is:%d\n”,i+1);//找到了,输出位置
else printf(“can not find x!\n”);//没有,提示未找到 }
第2个回答  2010-06-06
1." \' "就是输出一个" ' "
2.if(a) 因为a=0 所以下面的语句 d=d-10 不执行
else if(!b) 因为b=1 所以!b=0 所以if(!c) 也不执行所以下面的d=15;else d=25;不执行
所以最后输出是d=20
3.输入的5给了a,所以原来的1被5给覆盖了,执行缺省值default b=10 所以最后输出b=10
4.局部变量的作用域,局部变量是函数内或者复合语句内定义的变量或者形参,作用范围为当前的函数,所以func()函数里x只在func()里面生效,外部的x=20是main()变量,在main的整个函数内生效
5.
main()
{ <int> n,i=0,j=0;
printf(“input a integer,0 for end\n”);
scanf(“%d”,&n);
while (1)
{ if(n>0) i= i+1 ;
if(n<0) j= j+1 ;
break ; }
printf(“i=%4d,j=%4d\n”,i,j);
}

2.
#include <stdio.h>
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( x==a[i] ) printf(“the pos of x is:%d\n”,i);
else printf(“can not find x!\n”);
}

3.
#include <stdio.h>
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\n”,i+1);
else printf(“can not find x!\n”);
}
第3个回答  2010-06-07
具体运行过程如下:

所谓的真假判断,就是判断里面的值是1还是0,1为真,0为假,由于a=0,if(a)就是if(0),为假,不执行,其他类似,!是非运算符
第4个回答  2010-06-06
不错,有问题才有进步!不喜欢帮懒人或不上进的人
1.\是转义字符的意思,因为有些组合有特别的含义,比如\n是换行!要输出'的话就要用\' 输出\就要用\\
2.if(a) c语言中,a代表非零为真,零为假
3.是,a的值改变了
4.因为传过去的是值,不是指针,所以值不一样,两次输出当然是打印2个了

暂时就答有问题的,该做的东西自己做

强烈建议看下书,把基础学好