#include<stdio.h>
int main(void)
{
int a,b,c,t;
scanf("%d %d %d",&a,&b,&c);
if(a<b){t=b;b=a;a=t;};
if(a<c){t=c;c=a;a=t;};
if(b<c){t=c;c=b;b=t;};
printf("%d->%d->%d",c,b,a);
return 0;
}
第一步,先插入头文件,第二部引入变量a,b,c,引入中间变量t,采用t作为中间变量交换a与b的值,第三步,利用if语句交换a,b,c的值,最后利用指针传递输出a,b,c,交换后的值的大小顺序,
插入头文件->引入变量->交换大小->输出交换后值的大小比较
其实,我想说的是我认为这个东西编译的是没有错误的,显示也确实如此,我想说一下这个交换值的先后顺序问题,最初我一直受困于一个问题,就是我觉得如果将答案中的t=b;b=a;a=t;换成t=b;a=t;b=a;顺序应该不会影响到运行出来的结果,我觉得应该和正确答案运行出来的一样,可是现实却是4->4->5,这点我最初是想不通的,最后我才明白,如果是正确答案的话,他是先将b的值赋给t,这样b此时就是一个空值,随后将a的值赋给b,这样a就变为了一个空值,最后将t的值赋给了a,这样运行出来的才符合正确答案3->4->5,而如果要是像我那样的顺序的话 ,最后的运行出来的结果就是错误的。
二,
#include <stdio.h> #include<math.h> int isPrime(int n); int main(void) { int m, n, count = 0, sum = 0, i; scanf("%d %d", &m, &n); for (i = m; i <= n; i++) { if (isPrime(i)) { count++; sum += i; } } printf("%d %d\n", count, sum); return 0;} int isPrime(int n) { int i, max; if (n < 2) { return 0; } max = sqrt(n); for (i = 2; i <= max; i++) { if (n%i == 0) { return 0; } } return isPrime; }
(上面这个代码是错误的,一会我在下面说)
第一步,插入头文件
第二步,插入函数,公式,引入变量
第三步,判断n是否小于2,若小于,则返回,若不小于,对n开方和i取余看是否为零, 继续判断是否为素数。
第四步,判断是否为素数,对素数的个数进行计数,并求和。
插入头文件->引入变量->判断是否为素数->对素数个数进行统计
对于这道题,我最初是想像最近的一次作业一样,去在后面插入代码int isPrime(int n),可是我发现他在后面最后编译出来却显示“从指针返回的整数没有强制转换”,其实我是存在很多疑问的,并且到现在也没有解决,因为这样运行出来的结果和不在后面插入代码的结果是一样的,但是编译确实是有问题的,说句实话我还是没有搞懂那句话是什么意思,如果在后面插入代码之后,怎样强制转化啊?
三,
#include<stdio.h> #include<math.h> int main() { int n; int num; int minNum; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&num); if(0==i) minNum=num; else minNum=(minNum>num? num : minNum); }printf("min = %d",minNum); return 0; }
第一步,插入头文件,
第二步,引入变量,
第三步,对每个数进行比较,找出最小值。
插入头文件->引入变量->找最小值
最初我认为int i是不能够在for()里面引入变量的,之前一直都以为for里面只能是(i=1;i<n;i++)类似于这种形式,但是这次知道最初没有引入变量i,所以无论怎样,一定要在后面说明你已经引入i这个变量了,所以在for()里面是可以引入int i的,得分情况而定,如果不在()里引入i,那么到后来用到i的时候,也要在开头加上int i。