目录
一、打印三的倍数
写一个代码打印1-100之间所有3的倍数的数字
int main()
{
int i = 0;
for (i=1; i <=100; i++)
{
if (i % 3 == 0)
{
printf("%d\t", i);
}
}
}
二、从大到小输出
写代码将三个整数数按从大到小输出。
例如:
输入:2 3 1
输出:3 2 1
int main()
{
int a, b, c;
int temp = 0;
scanf("%d %d %d", &a, &b, &c);
if (a<b)
{
temp = a;
a = b;
b = temp;
}
if (a<c)
{
temp = a;
a = c;
c = temp;
}
if (b<c)
{
temp = b;
b = c;
c = temp;
}
printf("%d %d %d", a, b, c);
}
三、三角形判断
int main()
{
int a=1, b=1, c=1;
while (scanf("%d %d %d", &a, &b, &c) != EOF)
{
if (a + b > c && a + c > b && b + c > a)
{
if (a == b && b == c)
{
printf("Equilateral triangle!\n");
}
else if (a == b || b == c || a == c)
{
printf("Isosceles triangle!\n");
}
else
{
printf("Ordinary triangle!\n");
}
}
else
{
printf("Not a triangle!\n");
}
}
return 0;
}
四、数9的个数
编写程序数一下 1到 100 的所有整数中出现多少个数字9
int main()
{
int i = 0;
int count = 0;
for(i=1; i<=100; i++)
{
if(i%10==9)
count++;
if(i/10==9)
count++;
}
printf("%d\n", count);
return 0;
}
五、猜数字游戏
//猜数字游戏
//1、使用do while 循环 打印菜单
//2、switch语句判断是否玩游戏
//3、用函数来封装游戏逻辑
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void game()
{
//1、生成随机数
int r=rand()%100+1;//生成1-100的随机数
int guess = 0;
//2、猜数字
while (1) {
printf("请猜数字");
scanf("%d", &guess);
if (guess>r)
{
printf("猜大了\n");
}
else if (guess<r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了!!!\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
printf("***************\n");
printf("****1.play*****\n");
printf("****0.exit*****\n");
printf("***************\n");
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
return 0;
}
六、乘法口诀表
在屏幕上输出9*9乘法口诀表
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d\t", j, i, i*j);
}
printf("\n");
}
return 0;
}
七、求最大值
求10 个整数中最大值
//*设置一个值max假定他为最大值,把其他值与max比较,比max大就把这个大的值给max
int main()
{
int i = 0;
int arr[10] = { 12,45,32,56,18,2,89,33,20,65 };
int max = 0;
for (i = 0; i < 10; i++)
{
if (max < arr[i])
{
max = arr[i];
}
}
printf("%d", max);
return 0;
}
八、分数求和
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
//1、分母是1-100所以用for循环输出,分子不变
//2、因为是小数,所以分子要变成1.0,设置的sum为double类型
//3、设置一个flag变量为1;在每次加的时候去乘flag
int main()
{
double sum = 0;
int flag = 1;
for (int i = 1; i <=100 ; i++)
{
sum = sum + 1.0 / i *flag;
flag = -flag;
}
printf("%lf", sum);
}
九、打印素数
写一个代码:打印100~200之间的素数
//怎么判断素数?
//产生2~i-1之间的数字,试除i
//1、输出100-200之间的数
//2、判断是否是素数
//3、*设置一个变量flag标记
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <=200; i++)//素数不可能是偶数,所以这里可以写成i=101,i<=200;i+=2
{
int flag = 1;//假设i是素数
int j = 0;
for (j=2;j <= i-1; j++)//j<=sqrt(i) 开平方 要包含库函数includ <math.h>
{
if (i%j==0) {
flag = 0;//不是素数
break;
}//不能在后面写if或者之间else,因为只测试了一个数字还有后面很多数字
}
if (flag == 1)
{
printf("%d\n", i);
count++;
}
}
printf("count=%d\n", count);
}
十、打印闰年
打印1000年到2000年之间的闰年
//打印1000-2000年之间的闰年
//能被4整除但不能被100整除,或者能被400整除的年份
int main() {
int year = 0;
for (year = 1000; year <= 2000; year++)
{
if ((year % 4 == 0 && year % 100 != 0)||year % 400 == 0) {
printf("%-5d",year);//%-5d的作用是空格
}
}
}
十一、最大公约数
给定两个数,求这两个数的最大公约数
例如:
输入:20 40
输出:20
//这里用到辗转相除法,设置两个数,a,b,用a%b,余数为c,
//在用b的值去%c,就是说把b的值给a ,把c的值给b,c为0的时候,最大公约数就是b
int main()
{
int a = 80;
int b = 50;
int c = a%b;
while (c != 0)
{
a = b;
b = c;
c = a % b;
}
printf("%d", b);
}
十二、打印空心正方形图案
输入:4
输出:
* * * * * * * * * * * *
画图分析:我们可以把这个图案当成一个二维数组,在i = 0 或i= n-1,j= 0 或j= n-1的时候,打印*
int main()
{
int n = 0;
while(scanf("%d", &n) != EOF)
{
int i = 0;
int j = 0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i==0 || i==n-1)
printf("* ");
else if(j==0 || j==n-1)
printf("* ");
else
printf(" ");
}
printf("\n");
}
}
return 0;
}
十三、矩阵转置
例如:输入:2 3
1 2 3
4 5 6
输出:
1 4 2 5 3 6
画图分析:我们还是把他看成二维数组,画图之后,清晰发现,矩阵转置就是他们横纵坐标调换
//就是i,j下标互换
int main() {
int m, n;//m行n列
while (scanf("%d %d", &m, &n) != EOF) { // 注意 while 处理多个 case
int arr[10][10] = {0};
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", arr[j][i]);
}
printf("\n");
}
}
return 0;
}
十四、逆序输出
输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。
int main() {
int arr[10] = { 0 };
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
for (int i = 9; i >= 0; i--) {
printf("%d ", arr[i]);
}
return 0;
}
十五、输入10个整数,求平均值
编写一个程序,从用户输入中读取10个整数并存储在一个数组中。然后,计算并输出这些整数的平均值。
int main() {
int arr[10] = { 0 };
int sum = 0;
float avg = 0;
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
sum = sum + arr[i];
}
avg = sum / 10.0;//注意数据类型
printf("%f", avg);
return 0;
}
十六、交换数组
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
这个就和交换一个数一样,不过这是数组
int main()
{
int tmp = 0;
int arr1[6] = {12,26,54,31,9,8};
int arr2[6] = { 33,29,45,18,65,30 };
for (int i = 0; i < 6; i++)
{
tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
for (int i = 0; i < 6; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
return 0;
}