编写函数computNum(intnum),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6),C语言
时间: 2024-04-29 12:26:59 浏览: 181
可以按照以下方式编写该函数:
```c
int computeNum(int num){
int sum = 0;
while(num > 0){
sum += num % 10;
num /= 10;
}
return sum;
}
```
函数接受一个正整数num作为参数,使用while循环将num的各位数字依次取出并相加到sum中,最后返回sum的值即可。
相关问题
用C++语言编写函数int fun(int num),计算算整数num 的各位上的数字之积,并将计算结果作为函数值返回。如输入263,则返回 36(36=2x6x3)。要求在主函数中可以反复调用函数fun,连续输入多个正整数并计算结果,直到输入0为止。
```C++
#include <iostream>
using namespace std;
int fun(int num) {
int result = 1;
while (num != 0) {
result *= num % 10;
num /= 10;
}
return result;
}
int main() {
int num;
do {
cout << "请输入一个正整数(输入0结束):";
cin >> num;
if (num != 0) {
cout << "各位上的数字之积为:" << fun(num) << endl;
}
} while (num != 0);
return 0;
}
```
编写函数 boolIsPrime(int Num),其功能是判断整数 Num 是否是素数(假定1是素数),是则返回 true 否则返回 false。编写主函数实现如下功能:从键盘输入一个正整数如果输入的是负数则提示“输入的是负数,请输入一个正整数:”),通过调用 IsPrime函数判断该数是否是全素数,即该数的各位数字全是素数,如果该数是全素数则输出“该(应显示输入的具体数据) 是全素数!”,否则输出“该数(应显示输入的具体数据)不是全素数!”
好的,以下是代码实现:
```c++
#include<iostream>
using namespace std;
bool IsPrime(int Num){
if(Num<=1) return false;//1不是素数
for(int i=2;i*i<=Num;i++)//从2开始枚举到sqrt(Num)
if(Num%i==0) return false;
return true;
}
bool IsFullPrime(int Num){
while(Num){//判断每一位是否为素数
if(!IsPrime(Num%10)) return false;//取余数得到最后一位数,判断是不是素数
Num/=10;//去掉最后一位数
}
return true;
}
int main(){
int Num;
do{
cout<<"请输入一个正整数: "<<endl;
cin>>Num;
if(Num<0) cout<<"输入的是负数,请输入一个正整数!"<<endl;
}while(Num<0);
if(IsFullPrime(Num)) cout<<"该数 "<<Num<<" 是全素数!"<<endl;
else cout<<"该数 "<<Num<<" 不是全素数!"<<endl;
return 0;
}
```
解释如下:
1. 首先定义函数 `IsPrime` 判断一个数是否是素数,返回值为 true 或 false 。
2. 然后定义函数 `IsFullPrime` 判断一个数的每一位是否为素数,返回值为 true 或 false。
在 `IsFullPrime` 函数中,我们用一个 while 循环遍历该数的每一位,用 `Num%10` 得到最后一位数,再调用 `IsPrime` 函数判断该位是否为素数。在每次循环结束时,我们用 `Num/=10` 去掉最后一位数。
3. 在主函数中,我们用 do-while 循环,不断输入正整数,如果输入的是负数则提示重新输入。然后调用 `IsFullPrime` 函数判断该数是否为全素数,输出相应的结果。
注意:在题目中给出“假定1是素数”,因此在 `IsPrime` 函数中需要加上 `Num<=1` 的判断。
运行结果:
```
请输入一个正整数:
-3
输入的是负数,请输入一个正整数!
请输入一个正整数:
1447
该数 1447 是全素数!
```
阅读全文