一个正整数,如果它能被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;
}