代码一
//运行下列程序的输出结果是?
#include <stdio.h>
int main()
{
int x=1,y,z;
x*=3+2; printf("%d\t",x); // x=1*3+2=5
x*=y=z=5; printf("%d\t",x); // x=5*5=25, y=z=5
x=y==z; printf("%d\n",x); // 由于 y==z正确,即取1,故 x=1
return 0;
}
输出如下:
---------------看注释喔!
代码二
//下列表达式输出的值为?
#include <stdio.h>
int main()
{
int a;
int w=1,x=2,y=3,z=4;
a=w<x?w:y<z?y:z;
//可以 加上括号 理解上述语句 (w<x)?(w):(y<z?y:z)
printf("a=%d\n",a); // a=1
return 0;
}
输出为:
这个结果与我之前上传过的某道题目类似。主要是理解好(?:) 表达式
可以修改一下上述程序:
//测试
//下列表达式输出的值为?
#include <stdio.h>
int main()
{
int a;
int w=5,x=2,y=3,z=4; //将w改为5,进而使得w<x不满足。
a=w<x?w:y<z?y:z;
//可以 加上括号 理解上述语句 (w<x)?(w):(y<z?y:z)
printf("a=%d\n",a); // a=3
return 0;
}
所以说,这个时候执行的语句就是冒号“:”后面的语句,进而再进行判断y<z满足,故执行y,即a=y=3。
代码三:程序填空
//计算1+3+5+7+9+...+99+101的值,程序填空
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=1;i<=101; i+=2){
//程序填空 i+=2
sum+=i; //程序填空 sum+=i
}
printf("sum=%d\n",sum);
}
代码四:程序填空(有点易错,读题哦!)
//程序填空
// 计算 a + aa + aaa +...+aa..a(n个a)的值
// 其中n和a的值由键盘输入
#include <stdio.h>
int main()
{
long term = 0; //程序填空 term = 0
int sum = 0;
int a,i,n;
printf("Input a,n:");
scanf("%d,%d",&a,&n); //例如:a=2,n=3,则求 2 + 22 + 222 的值
for(i=1;i<=n;i++)
{
term = term*10 + a; //程序填空 term*10 + a
sum = sum + term;
}
printf("sum=%ld\n",sum);
}
测试:
吃饭去了喂~~