1.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。
#include <stdio.h>
int main()
{
int money = 20; //共有20元
//int coca = 1; //一瓶汽水1元
//float bottle = 0.5; //2个空瓶可以换1瓶汽水
int count = 0; //有几个空瓶
int buy = 0; //共买了几瓶汽水
while (money != 0 || count == 2)
{
money--; //买一瓶,钱少一元
count++; //买一瓶,就多一个空瓶
buy++; //只要while循环一次,说明就买了1瓶。 用来统计买了几瓶
if (count == 2) //当有两个空瓶时,就可以再买一瓶汽水
{
buy++; //多买一瓶汽水
count = 0; //空瓶置为0
count++; //又多出一个空瓶
}
}
printf("共买了汽水 %d 瓶。",buy);
return 0;
}
其中if循环也可以这样写
if(count==2)
{
moner++;
count = 0;
}
2.实现一个函数is_prime,判断一个数是不是素数。利用上面实现的is_prime函数,打印100到200之间的素数。
#include <stdio.h>
int s_prime(int i) //该函数用来判断一个数是不是素数,打印并统计共有几个素数。
{
int count = 0; //用来统计100-200之间共有几个素数。
for (int i = 100; i < 201; i++)
{
int j = 0;
for ( j = 2; j < i; j++)
{
if (i % j == 0) //当 i--100到200之间的一个数字,被j整数时,说明该数不是素数
break;
}
if (i == j) //当j一直到i时,i依然没有被整数,说明i是一个素数。
{
printf("%d ",i); //打印该数字
count++; //计数器加一
}
}
return count; //可以没有返回值,只是为了统计有几个素数,加入了一个返回值。
}
int main()
{
int i = 0;
int j = 0;
int ret = s_prime(i); //用ret来接收函数的返回值,共有几个素数
printf("\n");
printf("该范围内共有素数 :%d 个", ret); //输出共有几个素数
return 0;
}
该代码只能实现100-200之间的素数打印,并对其计数。那么该如何实现一个数,是不是素数。同理,判断一个范围内的有几个素数,并依次打印素数,又是如何实现的呢?
接下来,该代码用来实现一个数是不是素数。当输入0的时候,结束该判断程序。
#include <stdio.h>
int prime_number(int i)
{
int j = 0; //依次递增到i,判断能不能被整除
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
return 0; //当return 0 时,打印‘该数不是素数’
}
}
return 1; //当return 1 时,打印‘该数是素数’
}
int main()
{
int i = 0;
printf("请输入需要判断的数字:");
while (scanf("%d", &i) != 0 && i != 0)
{
int ret = prime_number(i);
if (ret)
printf("该数是素数\n");
//if为真时,表明函数返回值是1
else
printf("该数不是素数\n");
//如果执行该语句,说明if条件为假,说明函数返回值是0
printf("请输入需要判断的数字:");
}
return 0;
}
接下来,我们对一个范围内的数字,有没有素数。代码实现的要求:打印是不是素数。
#include <stdio.h>
int main()
{
int i = 0, j = 0;
printf("请输入想要判断的范围:");
scanf("%d%*c%d", &i, &j); //判断的范围:[i,j]
for (int m = i; i <= m && m <= j; m++) //m是在该范围内 从i一直到j的 一个数字
{
int n = 2;
for (n; n < m; n++) //n是判断素数的条件
{
if (m % n == 0)
{
printf("%d不是素数\n", m);
break;
}
}
if (m == n)
printf("%d是素数\n", m);
/*if (m == j)
break;*/
}
return 0;
}
3.交换两个整型数据类型的值,要求:不使用第三个变量。
#include <stdio.h>
int main()
{
int a = 10, b = 20;
a = a + b;
b=a-b;
a = a - b;
printf("a=%d,b=%d", a, b);
return 0;
}
#include <stdio.h>
int main()
{
int a = 10, b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d,b=%d", a, b);
return 0;
}
4.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
我们先来实现输入一个数,输出乘法表输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。
#include <stdio.h>
int main()
{
int i, j ,k; // i控制是‘几*几’的乘法表 j和k用来控制“m*m=x乘法表”中‘m’是几。
scanf("%d", &i);//输入几*几的乘法表
//但是这样写,只能打印行数和列数一样的乘法表,那么如何实现想几行几列呢?下一个代码我们来实现。
for (j = 1; j <= i; j++)
{
for (k = 1; k <= i; k++)
{
printf("%d*%d=%3d\t", j, k,j*k);
}
printf("\n");
}
return 0;
}
实现输入几行几列,就输出几行几列的乘法表,代码如下。
#include <stdio.h>
int main()
{
int i, j, m,n; //实现‘m*n=x’乘法表,i控制m;j控制n;m、n控制循环
scanf("%d%*c%d", &i, &j); //输入需要打印的乘法表。
//'%*c'的作用,不管中间隔了哪个字符,都可以把他在输出的时候忽略掉,但是只能忽略一个
for (m = 1; m <= i; m++) //m控制行循环
{
for (n = 1; n <= j; n++) //控制列循环
{
printf("%d*%d =%2d ", m, n, m * n);
}
}
return 0;
}
但是这样,会有很多组数据重复出现,暂时还没有想出来怎么解决。
5.输入10个数,并将其放入一个数组当中,求10个数的平均值。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = { 0 }; //创建一个数组,用来存放输入的10个数字
for (i = 0; i < 10; i++)
{
printf("请输入10个整数:");
scanf("%d", &arr[i]);
}
int sum = 0; //用来存放-->数组求和后的值
for (int j = 0; j < 10; j++)
{
sum = sum + arr[j];
}
sum = sum / 10;
printf("这10个整数的平均值是:%d\n", sum);
return 0;
}
6.