1.求1000以内所有的质数。质数:只能够1和它本身整除
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i, num;
// while循环
printf("1000以内的质数有:\n");
num = 2;
while (num <= 1000)
{
i = 2;
while (i < num)
{
if (num % i == 0)
break;
i++;
}
if (i==num)
printf("%d ", num);
num++;
}
printf("\n");
printf("---------------------------------------------------\n");
// for循环
for (num = 2; num <= 1000; num++)
{
for (i = 2; i < num; i++)
{
if (num % i == 0)
break;
}
if (i==num)
{
printf("%d ", num);
}
}
printf("\n");
return 0;
}
2.有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include <stdio.h>
#define MAX_NUM 4
int main() {
int a[MAX_NUM] = {1, 2, 3, 4};
int count = 0;
for (int i = 0; i < MAX_NUM; i++)
{
for (int j = 0; j < MAX_NUM; j++)
{
if (j == i) continue; // 确保百位和十位数字不重复
for (int k = 0; k < MAX_NUM; k++)
{
if (k == i || k == j) continue; // 确保十位和个位数字也不重复
printf("%d%d%d\t", a[i], a[j], a[k]);
count++; // 增加计数器,记录有效三位数的数量
}
}
}
printf("\n一共有: %d个数\n", count); // 输出总数量,应为4个不同的三位数组合
return 0;
}
3.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 结果:peach=1534
1day x 吃完剩余 x = x/2-1
2day x x=x/2-1
.........................
9day (1+1)*2
10day 1
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 0;
int peach = 0;
int day=1;
while(i<9)
{
peach = (day+1)*2;
day = peach;
i++;
}
printf("%d",peach);
return 0;
}
4.99乘法表
1 x 1 = 1
2 x 1 = 2 2 x 2 = 4
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9
4 x 1 = 4 4 x 2 = 6 4 x 3 = 9 4*4=16
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i=1,j=1;
for(i = 1;i<10;i++)
{
for(j = 1;j<=i;j++)
{
printf("%dx%d=%d ",i,j,i*j);
}
printf("\n");
}
return 0;
}
5.完全平方数
在1万以内(不包含1万)查找整数,该整数它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
完全平方数:完全平方指用一个整数乘以自己例如1*1,2*2,3*3等。所以1,4,9都是完全平方数。
10不是完全平方数,因为10号开根后不是整数
开根号 sqrt(); sqrt(2)--->对2开根号
使用使用sqrt函数,需要包含:#include 编译的时候需要加上 -lm ,例如:gcc 1.c -lm
结果:21 261 1581
#include <stdio.h>
#include <math.h>
int main(int argc, const char *argv[])
{
int i,a,b;
i = 1;
while(i>0 && i<10000)
{
i++;
a = sqrt(i+100);
b = sqrt(i+268);
if(a*a==i+100 && b*b==i+268)
printf("%d\n" ,i);
}
return 0;
}
6.题目:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13... 求出这个数列的前 20 项之和。
答案:结果:32.6603
ps:当前项的分子是下一项的分母, 下一项的分子是当前项的分子+分母
#include<stdio.h>
int main()
{
int a,b,i=20,tmp;
float sum=0;
a=1;b=2;
while(i)
{
sum+=(float)b/a;
tmp=a;
a=b;
b=tmp+b;
i--;
}
printf("%.2f\n",sum);
return 0;
}
7.从终端输入一个整数,要求将该整数进行翻转。
例如输入123,要求输出321(三百二十一)
输入-123,要求输出-321.
不考虑翻转后溢出的情况
#include<stdio.h>
int main(int argc, const char *argv[])
{
int i;
int j;
char n[100];
char m[100];
printf("请输入一个三位整数:\n");
i = 0;
n[i] = getchar();
while(n[i] != '\n')
{
++i;
n[i] = getchar();
}
--i;
j = 0;
while(n[j] != '\n')
{
m[i] = n[j];
--i;
++j;
}
printf("倒序是:\n");
printf("%s\n", m);
}
8.
计算空格个数
定义一个字符类型数组容量足够大即可,从终端获取若干个字符,直到遇到换行结束获取。要求计算出获取到的字符中有几个空格?
#include <stdio.h>
int main(int argc, const char *argv[])
{
int count = 0;
char arr1[100];
int j;
printf("请输入-------\n");
for(j = 0;j < 100;j++)
{
scanf("%c",&arr1[j]);
if(arr1[j] == '\n')
{
break;
}
}
for(int i = 0;i <= j;i++)
{
if(arr1[i] == ' ')
{
count++;
}
}
printf("空格有%d个\n",count);
return 0;
}
9.判断数据是否存在
定义一个整型数组,要求从终端输入5个数字。再输入一个数字n。判断n是否存在于那5个数字中。 12345 6---》6不在数组中
123454---》4在数组中
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[5];
/输入设定的数
printf("请输入你的五个数\n");
for(int i = 0;i<5;i++)
{
scanf("%d",&arr[i]);
}
输入比较的数//
int n;
printf("再次输入你要对比的数\n");
scanf("%d",&n);
做比较
int i = 0;
for(i=0;i<5 && n!=arr[i];i++);
if(5 == i)
printf("%d不在数组中\n",n);
else
printf("%d在数组中\n",n);
return 0;
}