120 -- 前5行每行最多字符数,我给了 120
你可以修改。
NN 是读入数据的行数,程序自己统计出来。
#include<stdio.h>
#include<stdlib.h>
FILE *fin
#define N_size 300
void main()
{
int x[N_size],y[N_size],z[N_size]
char namein[80]="abc.dat"
char *buff
int i,NN
buff = (char *) malloc(sizeof(char) * 120)
if ( ( fin = fopen(namein,"r") ) == NULL) {
printf("open error\n")exit(0)
}
for (i=0i<5i++) if ( fgets(buff,120,fin)==NULL) printf("skip 5 lines error\n")
printf("pass\n")
NN = 0
while(1){
if (fscanf(fin,"%d %d %d",&x[NN],&y[NN],&z[NN]) ==EOF) break
NN = NN + 1
}
fclose(fin)
printf("NN=%d\n",NN)
exit(0)
}
#include<stdio.h>#include<stdlib.h>
#include<string.h>
int main(int argv, char* args[])
{
char a[6][128]
int i
for(i=0i<10i++)
{
gets(a[i])
}
int j
char t[128]
for(i=10i>0i--)
{
for(j=0j<ij++)
{
if(strcmp(a[j],a[j+1])<0)
{
strcpy(t,a[j])
strcpy(a[j],a[j+1])
strcpy(a[j+1],t)
}
}
}
for(i=0i<10i++)
{
puts(a[i])
}
system("pause")
return 0
}
1. 常规 *** 作两个数的平均数等于两数之和除以二
int main()
{
int a = 10
int b = 5
int c = a + b
printf("%d\n", c)
system("pause")
return 0
}
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
这种方法有一定的缺陷,当a或b的值够大时,以至于超过了intmax(整形所能达到的最大值,这个方法就显得不够严谨。
2. 最常用的方法
如:将较大的数减去较小的数,得到两数的相差多少,再将差值的一
半给较小的数,这样两数就相等了。
int main()
{
int a = 10
int b = 5
int c = a + (b - a) / 2
system("pause")
return 0
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
这个方法优于第一种,c的值永远不会超过intmax
3. 使用按位与和按位异或 *** 作符
int main()
{
int a = 10
int b = 5
int c = (a&b) + (a^b)/2
system("pause")
return 0
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
这种方法较难理解,一般不建议使用。
4. 在第三种方法基础上使用右移 *** 作符
int main()
{
int a = 10
int b = 5
int c = (a&b) + (a^b>>1)
system("pause")
return 0
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
将一个数右移一位相当于给这个数除以二。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)