经典的例子
c语言的经典案例
- 提问者网友:像風在裏
- 2021-04-29 07:37
- 五星知识达人网友:逃夭
- 2021-04-29 07:47
- 1楼网友:老鼠爱大米
- 2021-04-29 08:57
switch(score)
{ case 5: printf(“Very good!”);
case 4: printf(“Good!”);
case 3: printf(“Pass!”);
case 2: printf(“Fail!”);
default : printf(“data error!”);
} score为5时全部运行
运行结果:score为5时,输出:
Very good! Good! Pass! Fail! data error!
解析 没有break终止,score为4时输出Good! Pass! Fail! data error!
2例 void main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++; break;
case 1: b++; break;
} 无break终止
• case 2: a++;b++; break;终止
case 3: a++;b++;
}
printf(“\na=%d,b=%d”,a,b);
} 运行结果:a=2,b=1
3#include "stdio.h"
main()
{ int x,y,z;
x=y=z=0;
if(z=3)z=(x++)+(y++);
else z=(++x)+(++y); 此条语句不运行
printf(" %d,%d,%d\n",x,y,z);
}
结果:1,1,0
4
#include "stdio.h"
main()
{ int x,y,z;
x=y=z=0;
if(x++&&y++)z=y+x;
else z=y-x;
printf("%d,%d,%d\n",x,y,z);
}
程序的运行结果是:1,0,-1
5 #include "stdio.h"
main()
{ int x,y,z;
x=y=z=0;
if(x++||y++)z=y+x;不运行
else z=y-x;
printf("%d,%d,%d\n",x,y,z);
}
运行结果1,1,0
6 #include "stdio.h"
main()
{ int x,y,z;
x=y=z=5;
if(x++||y++)z=y+x;
else z=y-x;
printf("%d,%d,%d\n",x,y,z);
}
运行结果 6,5,11
7 a&&b&&c //只在a为真时,才判别b的值;
只在a、b都为真时,才判别 c的值
例 a||b||c //只在a为假时,才判别b的值;
只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1;
(m=a>b)&&(n=c>d)
结果m=0,n=1
8请根据变量作用域规则和参数传递的原则分析程序的执行结果。
int a=1,b=2;
int f1( int a)
{
int b=10;
printf(“%d %d\n”,a,b); 贰输出3,10
return (a*b); 参返回30
}
main( ) 先看main函数
{
printf(“%d %d\n”,a,b); 壹输出1,2
printf(“%d\n”,f1(a+b)); a=a+b,并跳到调用函数
}
程序运行结果1 2
3 10 30
9、#include <stdio.h>
void main()
{ int a,b;
a=3;
b=4;
printf("main:a=%d,b=%d\n",a,b);
sub();
printf("main:a=%d,b=%d\n",a,b);调用只在调用内有效
}
void sub()
{ int a,b;
a=6;
b=7;
printf("sub:a=%d,b=%d\n",a,b);
}
运行结果:
main:a=3,b=4
sub: a=6,b=7
main:a=3,b=4
10很有问题 #include "stdio.h"
void main()
{ int i=0, j=0;
i++, j++;
{int i=2; i+=j; j+=i;}
printf("%5d%5d\n", i, j);
}
输出 1 4
11char s[]={’A’,’B’,’C’};则s的大小为3
char s[]=“abc”;则s的大小为4
12void fun(int *s)
{ static int j=0;
do s[j]+ =s[j+1]; while(++j<2); }
void main()
{ int a[10]={1,2,3,4,5 }, k;
for(k=1;k<3;k++)fun(a);
for(k=0;k<5;k++)printf("%d",a[k]);
}
输出 35745
13 void main()
{ int a []={5,8,7,6,2,7,3};
int y,*p=&a[1];
y=(*--p)++;
printf(“%d ”,y);
printf(“%d”,a[0]);
}
输出 5,6
15 已知a=13,b=6, a|b的十进制数值为15
16#include<stdio.h>
main()
{
int a=1,b=2;
for(;a<8;a++)
{b+=a;a+=2;}
printf("%d,%d\n",a,b);
}
结果:10,14
以下程序运行时若从键盘输入:10 20 30<回车>。输出结果是
#include<stdio.h>
Main()
{
Int i=0,j=0,k=0;
Scanf(“%d%*d%d”,&I,&j,&k);
Printf(“%d%d%d\n”,I,j,k);
}
解析 *的作用是:输入项在输入时不赋给相应的变量