又一个程序运行不出效果!!!

来源:百度知道 编辑:UC知道 时间:2024/07/05 16:23:20
如下,目的是从一个TXT文档输入数字,然后将每个数字分别求每位的平方的和,再对这个和进行排序,可是我又运行不出效果,望高手解答
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
int bitsum(int a)
{
int sum=0;
for(int x=a;x;x/10)
{sum=sum+(x%10)*(x%10);}
return sum;
}
bool lessthanbitsum(int a,int b){return bitsum(a)<bitsum(b);}
void main()
{
vector<int> num(9);
ifstream in("abc.txt");
string str;
getline(in,str);
int n,i=0;
for(istringstream sin(str);sin>>n;i++)
{num[i]=n;}
sort(num.begin(),num.end(),lessthanbitsum);
for(i=0;i<=8;i++)
cout<<num[i]<<"<";
}
文本文档内容
12 567 91 33 657 812 2221 3 77
x能趋于结束条件,因为我定义X为整形,当X最后为小数的时候直接就为0,就跳出循环了```

首先
int bitsum(int a)
{
int sum=0;
for(int x=a;x;x=x/10) //x要能趋向于结束条件。
{sum=sum+(x%10)*(x%10);}
return sum;
}
看不懂一些函数,n的初始值会不会影响程序

读你的程序费事,给你写一个容易。
程序内容:(1)打开文件(2)按字符串读入数字
(3)用sscanf 转换单个字符为数字,计算每个字符串中单个数字平方和(4)排队(5)输出平方和。

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
FILE *fin;
void main()
{
char str[10];
int i,j,k=0,len;
int v[100];
int digi;

if ( (fin = fopen("abc.txt","r") ) == NULL ) {
printf("\007Cann't open input file: abc.txt ");exit(1);
};

while (!feof(fin)) {
fscanf(fin,"%s ",&str[0] );
len = strlen(str);
v[k] = 0;
for (i=0;i<len;i++) {
sscanf(&str[i],"%1d",&digi);
v[k] = v[k] + digi * digi;
};
k = k + 1;
}
fclose(fin);

for (i=0;i<k-1;i++)
for (j=i+1;j<k;j+