编写函数,求出m个能被3、5或7整除、但不能被其中两个同时整除的所有整数从小到大放在数组中。在main函数中验证。要求: m在main函数中由键盘输入,数组在main函数中输出。
#include <stdio.h>
int specialNum(int num1, int num2, int num3, int upperBound, int arr[]) {
int i, j = 0;
for (i = 1; i <= upperBound; i++) {
if ((i % num1 == 0 || i % num2 == 0 || i % num3 == 0)
&& !(i % num1 == 0 && i % num2 == 0)
&& !(i % num1 == 0 && i % num3 == 0)
&& !(i % num2 == 0 && i % num3 == 0)) {
arr[j++] = i;
}
}
return j;
}
int main()
{
int m, i, length;
int num1 = 3, num2 = 5, num3 = 7;
int arr[100];
scanf("%d", &m);
length = specialNum(num1, num2, num3, m, arr);
for (i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
return 0;
}
#include <stdio.h>
void findNum(int m, int arr[]) {
int count = 0;
for (int i = 1; count < m; i++) {
if ((i % 3 == 0 || i % 5 == 0 || i % 7 == 0) && !(i % 3 == 0 && i % 5 == 0) && !(i % 3 == 0 && i % 7 == 0) && !(i % 5 == 0 && i % 7 == 0)) {
arr[count] = i;
count++;
}
}
}
int main() {
int m;
printf("请输入m的值:");
scanf("%d", &m);
int arr[m];
findNum(m, arr);
printf("符合条件的数为:");
for (int i = 0; i < m; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:单独写一个函数,用来求字符串的长度。在main函数中输入字符串,调用这个函数并输出他的长度。
#include <stdio.h>
int length(char *str);
int main()
{
int len;
char str[1000]; //定义一个字符串
scanf("%s",str);
len = length(str); //调用计算字符串长度的函数
printf("%d\n",len);
return 0;
}
int length(char *str) //计算字符串长度
{
int count = 0;
while(*str != '\0')
{
count++; //计数
str++; //移动指针
}
return count;
}