程序哪里没有写明白,能运行,但无结果?

一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n < 100)的与7无关的正整数的平方和.

输入

输入为一行,正整数n(n < 100)

输出

输出一行,包含一个整数,即小于等于n的所有与7无关的正整数的平方和。

样例输入

21

样例输出

2336
#include<iostream>
using namespace std;
int qi(int m){
     int count=0,j;
   while(m!=0){
     count=0;
     j=m%10;
    if(j!=7) {m=m/10;
    }
    else{ count++;}

    if(count==0) return 1;
    else return 0;

}
}
int main(){
int n,sum=0;
cin>>n;
int a[n];

for(int i=0;i<n;i++){
   cin>>a[i];
  if(a[i]%7!=0&&qi(a[i])==1){
    sum+=a[i]*a[i];
  }


}
  cout<<sum;
return 0;

}

 

a[n] 语法错误,不知道你是怎么运行的  需要实现功能,下面给出争取的代码

#include<iostream>
using namespace std;
int qi(int m){
	int count = 0, j;
	while (m != 0){
		count = 0;
		j = m % 10;
		if (j != 7) {
			m = m / 10;
		}
		else{ count++; }

		if (count == 0) return 1;
		else return 0;

	}
}
int main(){
	int n = 0, sum = 0;
	cin >> n;

	for (int i = 0; i<n; i++){
		int num = n - i; //循环遍历的是输入的数字,每循环一次 ,减去循环的次数
		if (num % 7 != 0 && qi(num) == 1){
			sum += num * num;
		}


	}
	cout << sum;
	system("pause");
	return 0;

}

执行结果如下:

 

你这里有两个BUG。

第一:使用变量作为定义数组指定长度。

第二:函数中仅判断个位数就return了。

 

下面是我帮你改好BUG的代码:

#include<iostream>
using namespace std;
int qi(int m) {
	int count = 0, j;
	while (m != 0) {
		count = 0;
		j = m % 10;
		if (j != 7) {
			m = m / 10;
		} else { count++; }

		if (m != 0) continue;		// BUG,仅循环判断一次就return了,加上此条件就解决了。

		if (count == 0) return 1;
		else return 0;

	}

	
}
int main() {
	const int n = 10;
	int sum = 0;
	//cin >> n;
	int a[n];	// 变量不可以作为数组定义是指定长度。需要使用常量。

	for (int i = 0; i < n; i++) {
		cin >> a[i];
		if (a[i] % 7 != 0 && qi(a[i]) == 1) {
			sum += a[i] * a[i];
		}


	}
	cout << sum;
	return 0;

}