c语言程序设计,c语言程序设计

1,c语言程序设计pioh.jpint a=4;这是是全局变量static int a=5;是局部变量,两个都叫a,但是作用域不一样 。调用了2次函数f,第一次调用的时候给static a赋了初始值,后来的初始赋值不起作用 。第一次执行循环,f(0) 执行后a=8,t=6 s=0+13=13;第二次执行循环 , f(1) 执行后a=9,t=7 s=13+15=28;最后输出结果是28
2,C语言程序设计我给你解释一下这个程序吧!main(){ int n=0,m=1,x=2;if (!n) x-=1;//假如x的值不为n(即不为0),则x=x-1;if (m) x-=2;//假如x的值为1,则x=x-2;if (x) x-=3;//假如x的值为2,则x=x-3;printf (“%d\n”,x); }由于它的执行顺序是从上往下执行 , 依次看是否满足条件,显然从题可知,第一句x的值不为0 , 那么减去1,此时x的值为1.再往下执行第二句,x=1,即满足x=m,则减去2,此时x的值为-1;同样执行第三句,最终结果为-4;if (!n) x-=1;假如x的值不为n(即不为0),则x=x-1;如果改成if (n) x-=1;则这条语句不执行 。跳到下一句~那么这个程序就没结果了~很巧的数值才能出-4结果-4,i+=1就是i=i+1 i++就是先运算 i+1第一个if语句,得x=1第二个if语句,得x=-1第三个if语句由于x=-1 执行if后面的语句得 x=-4最后打印出 -4#include void main() { int n=0,m=1,x=2; if (!n) x-=1;//因为n=0,所以n为假 , 则!n为真 。所以此语句被执行 。x-=1的结果是x=2-1=1 。// if (m) x-=2;//因为m=1也为真,所以此语句也被执行 。由上句已得x=1,所以x-=2的结果是x=1-2=-1 。// if (x) x-=3;//由上句得x=-1,因为x的值不为0,所以此处x也为真 。此语句被执行 。x-=3的结果是x=-1-3=-4// printf ("%d\n",x); }答案应该是-4啊.
3,C语言程序设计k=21,有一个I++ , k=7+7+7++,k=21,I=8;k=6+7+7=20 #include<stdio.h>int main(){ int I,K;I=5;K=(++I)+(++I)+(I++);printf("k=%d",K);return 0;}k等于21,不信你可以试试这种题答案是浮云是个想象中的不一样的,最好的办法就是看看汇编指令,你会一下子发现问题!这样的问题,没有意思,这个与具体的编译平台有关,为什么这么说,因为,这段代码实际是UB 即无定义行为 , 也就是说,这样的代码,编译器有做出自己的选择的权利 , 所以,行为是无定义的 , 具体请参照C99 标准,官方会给你想要的答案,还是具体举例吧!这样的代码在VC平台 , 结果是21因为,VC平台的编译器的优化作用,当k =( ++I )+ (++I )+( I++ ) VC平台实际将I的值自增2即k = 7 +7 +7I = 8 这个是优化的作用 。补充 , 正如,你看到的 , 楼上的调试发现的k的值是20所以,这样的代码没有实际意义,因为 , 这样的代码实际编程中,会降低代码的可移植性 , 将会带来不必要的麻烦,所以,不必纠结这样问题 。21吧,你可以上机试一下,一般都不会遇到这种运算的 I=5 k=++I +(++I)+(++I) 结果是 k=24 I=8I=5是初始值,程序里每次进行++I初始值都会加1,很明显有3个++I,就相当于I=5+1+1+1; k就相当于k=8+8+8;先算优先级()里面的值,然后从左往右算(在这算法里,因为++自增优先级仅次于括号),所以就是先算i的值(把I的值固定在8上),在算k的值!【c语言程序设计,c语言程序设计】
4,c语言程序设计里的N是无类型的 不能用%d#include<stdio.h>const int N=10;void main()//添加main的返回值int i;int j;int u;int a[N];printf("Enter %d integers:\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++)temp=a[i];//u为临时变量,把待排序的元素赋给uj=i-1;while((j>=0)&&(u<a[j]))a[j+1]=a[j];//顺序比较和移动j--;}a[j+1]=u;}for(i=0;i<N;i++)if(i%5==0)printf("\n");printf("%5d",a[i]);}printf("\n");}#include<stdio.h>#define N 10main()int a[N];printf("Enter %d integers:\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);}for(i=0;i<N;i++)u=a[i];/*前面0到i-1个元素已排好顺序,a[i]将分别与他们进行比较*/j=i-1;while(j>=0&&u<a[j])j--;}a[j+1]=u;}for(i=0;i<N;i++)if(i%5==0)printf("\n");printf("%5d",a[i]);}getch();}5,c语言程序设计根据你上面的丝路太麻烦了因为有输出:abcbcacabbaccbaacb六种情况你就要用六个else if你说麻烦不可以这样写的源程序如下:#includevoid main() { int a,b,c,t; scanf("%d%d%d",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%d,%d,%d\n,max=%d\n",a,b,c,c); }你的回答太麻烦拉#include #define max1(a,b) a>b?a:b #define max2(a,b,c) max(max(a,b),c) main() { int a,b,c; scanf("%d%d%d",a,b,c); max2(a,b,c); printf("a=%d,b=%d,c=%d\n",a,b,c); }#include "stdio.h"main(){int a,b,c;printf( "please input three numbers:\n" ); scanf("%d%d%d",&a,&b,&c);if((a>b)&&(a>c)){printf("\n zuida:%d",a); if(b>c)printf("\n xiao dao da paixu:%d,%d,%d",c,b,a);else printf("\n xiao dao da paixu:%d,%d,%d",b,c,a);}else if((b>a)&&(b>c)){printf("\n zuida:%d",b); if(a>c)printf("\n xiao dao da paixu:%d,%d,%d",c,a,b);else printf("\n xiao dao da paixu:%d,%d,%d",a,c,b);}else {printf("\n zuida:%d",c); if(a>b)printf("\n xiao dao da paixu:%d,%d,%d",b,a,c);else printf("\n xiao dao da paixu:%d,%d,%d",a,b,c);}}刚刚调试过的!

    推荐阅读