1.求字符串中字符的个数,输入一个字符串,计算该字符串含有多少个字符
#include<stdio.h>
#include<string.h>
int length(char*p)
{
int n = 0;
while (*p !='\0')
{
n++; //长度加1
p++; //指针后移一位
}
return n;
}
int main(void)
{
int len;
char a[100];
memset(a, 0x00, 100);
puts("请输入一个字符串:");
gets(a);
len = length(a);
printf("字符串长度为:%d\n", len);
return 0;
}
#include<stdio.h>
int main()
{
int i, j;
printf("------------------九九乘法表--------------");
printf("\n");
for (i = 1; i < 10; i++)
{
for (j = 1; j <=i; j++)
{
printf("%d*%d=%-4d", j, i, i*j);
}
printf("\n");
}
return 0;
}
3.求两个数的最大公约数
辗转相除法
#include<stdio.h>
int main()
{
int a, b,c;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
int t;
if (a < b)
{
t = a;
a = b;
b = t;
}
c = a%b;
while (c != 0)
{
a = b;
b = c;
c = a%b;
}
printf("最最大公约数为:%d\n", b);
return 0;
}
4.求两个数的最小公倍数。
最小公倍数和最大公约数之间的关系为两数的乘积除以两数的最大公约数的值即为两个数的最小公倍数
#include<stdio.h>
int main()
{
int a, b, c,d;
int t;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
d = a*b;
if (a > b&&a%b == 0)
{
printf("最小公倍数为:%d\n", a);
}
else if (a < b);
{
t = a;
a = b;
b = t;
}
c = a%b;
while (c != 0)
{
a = b;
b = c;
c = a%b;
}
printf("最小公倍数为:%d\n",d/b );
return 0;
}
5.将大写字符转化为 小写字符
#include<stdio.h>
int main(void)
{
char C;
char c;
puts("请输入一个大写字母:");
C = getchar();
puts("转化为小写字母为:");
c = C + 32;
printf("%c\n", c);
return 0;
}
5.输出3*3的矩阵
编程实现显示一个3*3的矩阵,从键盘任意输入9个数,将这9个数组成的3*3的矩阵输出在屏幕上
#include<stdio.h>
int main()
{
int a[3][3];
int i, j;
printf("请输入矩阵中的数:");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d", &a[i][j]);
}
}
printf("\n");
printf("3*3的矩阵显示为:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%-4d", a[i][j]);
}
printf("\n");
}
return 0;
}
6.使用switch 语句输出分数段,要求按考试成绩的等级输出分数段的范围
#include<stdio.h>
int main()
{
char Grade;
printf("Please input your grade:\n");
scanf("%c", &Grade);
switch (Grade)
{
case 'A':
printf("90-100\n");break;
case 'B':
printf("80-89\n");break;
case'C':
printf("70-79\n");break;
case 'D':
printf("60-69\n");break;
case 'F':
printf("<60\n");break;
default:
printf("Your enter the char is wrong\n");
break;
}
return 0;
}
7.根据学生的分数判断等级,如果分数大于等于90分,则该学生的等级为A ,如果低于60分
则等级为C 其余的都为B
#include<stdio.h>
int main(void)
{
int Score,i;
printf("请输入考试分数:\n");
scanf("%d", &Score);
i = (int)Score / 10;
switch (i)
{
case 10:
case 9:
printf("考试等级为A\n");break;
case 8:
case 7:
case 6:
printf("考试等级为B\n");break;
default:
printf("考试等级为C\n");break;
}
}
8.判断闰年
从键盘输入一个年份判断其是否为闰年
#include<stdio.h>
int main()
{
int year;
printf("请输入一个年份:\n");
scanf("%d", &year);
if (year % 400 == 0 || (year % 4 == 0 && year % 100!= 0))
{
printf("%d是闰年\n",year);
}
else
{
printf("%d不是闰年\n",year);
}
return 0;
}
#include<stdio.h>
int main()
{
int s1, s2, s3, s4;
int min, max;
printf("请输入学生成绩:\n");
scanf("%d%d%d%d", &s1, &s2, &s3, &s4);
min = max = s1;
if (s2<min)
{
min = s2;
}
else if (s2>max)
{
max = s2;
}
if (s3 < min)
{
min = s3;
}
else if (s3>max)
{
max = s3;
}
if (s4 < min)
{
min = s4;
}
else if (s4>max)
{
max = s4;
}
printf("max=%-5d min=%-5d", max, min);
return 0;
}
10.计算某日是该年的第几天
要求从键盘输入年、月、日在屏幕上输出次日期是该年的第几天
#include<stdio.h>
int Leap(int a)
{
if (a % 400 == 0 || (a % 4 == 0 && a % 4 != 0))
{
return 1;
}
else
{
return 0;
}
}
int number(int year,int month,int day)
{
int sum = 0;
int a[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //闰年个月的天数
int b[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //闰年个月的天数
if (Leap(year) == 1)
{
for (int i = 0; i < month - 1; i++)
{
sum += a[i];
}
}
else
{
for (int i = 0; i < month - 1; i++)
{
sum += b[i];
}
}
return sum += day;
}
int main()
{
int year, month, day;
int sum = 0;
printf("请输入一个日期:\n");
scanf("%d%d%d", &year, &month, &day);
printf("\n");
sum = number(year, month, day);
printf("该日期为本年第%-5d天\n",sum);
return 0;
}
11.使用Switch 语句实现上述功能,计算某日是该年的第几天
#include<stdio.h>
int Leap(int year)
{
if (year % 400 == 0 || (year % 4 == 0 && year % 100!= 0))
{
return 1;
}
else
{
return 0;
}
}
int number(int year,int month,int day)
{
int sum = 0;
int a[12] = { 31, 29, 31, 30.31, 30, 31, 31, 30, 31, 30, 31}; //闰年每月的天数
int b[12] = { 31, 28, 31, 30.31, 30, 31, 31, 30, 31, 30, 31}; //平年每月对应的天数
switch (Leap(year))
{
case 1:
for (int i = 0; i < month - 1; i++)
{
sum += a[i];
}
break;
case 0:
for (int i = 0; i < month - 1; i++)
{
sum += b[i];
}
break;
}
sum += day;
return sum;
}
int main()
{
int year, month, day;
int sum = 0;
printf("请输入一个日期:\n");
scanf("%d%d%d", &year, &month, &day);
sum = number(year, month, day);
printf("\n");
printf("该日期为%-4d年第%-3d天\n", year, sum);
return 0;
}
12.求3个数中的最大值
#include<stdio.h>
int main()
{
int a, b, c, max;
printf("请输入三个数:\n");
scanf("%d%d%d", &a, &b, &c);
max = (a > b ? a : b);
max = (max > c ? max : c);
printf("最大数为:%d\n", max);
return 0;
}
14.从键盘输入一个数,求该数的阶乘
#include<stdio.h>
int main()
{
int fac=1;
int i=1,n;
printf("请输入一个数:\n");
scanf("%d", &n);
if (n==0 || n == 1)
{
fac = 1;
printf("%d 的阶乘为:%d\n", fac);
}
while (i<=n)
{
fac = fac*i;
i++;
}
printf("%d 的阶乘为:%d\n", n, fac);
return 0;
}
15.打印杨辉三角
打印前10行
#include<stdio.h>
int main()
{
int a[11][11];
int i, j;
for (i = 1; i < 11; i++)
{
a[i][i] = 1; //对角线元素全为1
a[i][1] = 1; //第一列元素全为1
}
for (i = 3; i < 11; i++)
{
for (j =2; j <=i-1 ; j++)
{
a[i][j] = a[i - 1][j - 1] + a[i -1][j]; //从第三行第二列开始,每个数字等于上一行的左右两个数字之和
}
}
for (i = 1; i<11; i++)
{
for (j = 1; j<=i; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
return 0;
}
16.一元钱的兑换方案
如果将整钱兑换为零钱,那么一元钱可兑换成一角,二角和五角,编程输出兑换方案
#include<stdio.h>
int main()
{
int i, j, k;
for (i = 0; i <= 10; i++) //i为一角钱兑换个数,范围为0-10
{
for (j = 0; j <= 5; j++) //j为2角钱兑换个数,范围为0-5
{
for (k = 0; k <= 2; k++) //k为5角钱兑换个数,范围为0-2
{
if (i + 2 * j + 5 * k == 10) //兑换和为10角
{
printf("1元钱可兑换为%d个一角,%d个2角,%d个5角\n", i, j, k); //输出兑换方案
printf("\n");
}
}
}
}
return 0;
}
17.爱因斯坦阶梯问题
著名的爱因斯坦阶梯问题是这样的:有一条长长的阶梯,如果每步跨2阶,那么最后剩1阶;如果每步跨3阶,最后剩2阶;如果每步跨5阶最后剩4阶;
如果每步跨6阶,那么最后剩5阶;只有当你每步跨7阶时,最后才正好走完,一阶也不剩。请问阶梯至少有多少条;
#include<stdio.h>
int main()
{
int i=0;
int count = 0;
for (i = 100; i < 1000; i++)
{
if (i % 2 == 1 && i % 3 == 2 && i % 4 == 3&& i % 5 == 4 && i % 6 == 5 && i % 7 == 0) //题目条件
{
count++;
while (count == 1)
{
printf("最少阶梯数为:%d\n", i); //输出结果
break; //如果有一个数满足条件则跳出循环
}
}
}
return 0;
}
18.斐波那契数列
Fibonacci 数列的特点是第1、2个数为1、1;从第三个数开始,该数是前两个数之和,求这个数列的前30个元素
#include<stdio.h>
int main(void)
{
int i;
int long F[31];
F[1] = 1; //第一个和第二个数为1
F[2] = 1;
for (i = 3; i < 31; i++)
{
F[i] = F[i - 1] + F[i - 2]; //从第三项开始,每项为前三项之和
}
for (i = 1; i < 31; i++)
{
printf("%-15d", F[i]);
if (i % 5 == 0) //控制每行输出5个值
{
printf("\n");
}
}
return 0;
}
19.计算学生的最高分
假设一个班有20个学生,输入某科考试的成绩,然后统计出最高分。
#include<stdio.h>
int main()
{
int score;
int max;
printf("请输入学生分数:\n");
scanf("%d", &max); //先输入一个成绩,将其作为最高分数
for (int i = 2; i <= 20; i++)
{
scanf("%d", &score);
if (score > max)
{
max = score;
}
}
printf("最高分数为:%d\n", max);
return 0;
}
20.统计不及格的学生人数假设一个班有20个学生,输入某科考试的成绩,然后统计出该班不及格的学生人数
#include<stdio.h>
#define N 20
int main()
{
int score;
int i;
int count = 0;
printf("请输入考试成绩:\n");
for (i = 0; i < N; i++)
{
scanf("%d", &score);
if (score < 60)
{
count++;
}
}
printf("不及格人数为:%d\n", count);
return 0;
}
21.计算1-100之间所有偶数的和#include<stdio.h>
int main()
{
int sum = 0;
for (int i = 2; i < 101; i=i + 2)
{
sum += i;
}
printf("sum=%d\n", sum);
}
22.从键盘输入两个数,交换其值
#include<stdio.h>
void swap(int* x,int* y);
int main(void)
{
int num1, num2;
printf("请输入num1:\n");
scanf_s("%d", &num1);
printf("请输入num2:\n");
scanf_s("%d",&num2);
swap(&num1, &num2);
printf("num1=%d,num2=%d\n",num1, num2);
return 0;
}
void swap(int* x,int* y)
{
int t;
t=*x ;
*x = *y;
*y = t;
}
23.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,
有多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天只剩下一个桃子。求第一天桃子数。
#include<stdio.h>
int main()
{
int day=10;
int x1; //最后一天的桃子数量
int x2; //前一天桃子数量
x1 = 1;
while (day > 1)
{
x2 = 2 * (x1 + 1);
x1 = x2;
day--;
}
printf("桃子总数为:%d\n", x2);
return 0;
}
24.阳阳买苹果,每个苹果0.8圆。第一天买两个苹果,第二天开始每天买前面一天的2倍直到购买的苹果个数达到不超过100的最大值,
编程求阳阳每天平均花多少钱
#include<stdio.h>
int main()
{
float ave;
int x1=2;
int day = 0;
float money = 0;
while (x1<100)
{
money += 0.8*x1;
day++;
x1 = x1 * 2;
}
ave = money / day;
printf("阳阳平均每天花:%f\n",ave);
return 0;
}
25.求10的阶乘
#include<stdio.h>
int main(void)
{
int num = 10;
int i = 2;
int fac = 1;
if (num == 0 || num == 1)
{
fac = 1;
}
while (i <= 10)
{
fac = fac*i;
i++;
}
printf("fac=%d\n", fac);
return 0;
}
26.求100-200之间的全部素数
#include<stdio.h>
#include<math.h>
int main()
{
int i,j;
int n = 0;
for (i = 100; i < 201; i++)
{
for (j = 2; j <= sqrt(i / 1.0); j++)
{
if (i%j == 0)
{
break;
}
else
{
if (j>sqrt(i / 1.0) - 1)
{
printf("%d\t", i);
n++;
if (n % 5 == 0)
{
printf("\n");
}
}
}
}
}
return 0;
}
27.十进制数转换为二进制
#include<stdio.h>
int main()
{
int i, j, n, m;
int a[16] = { 0 };
printf("请输入一个十进制数(0-32767):\n");
scanf("%d", &n);
for (m = 0; m < 15; m++)
{
i = n % 2; //取2的余数
j = n / 2; //取被2整除的结果
n = j; //将得到的伤附给变量
a[m] = i; //将余数存入数组a中
}
for (m = 15; m >= 0; m--)
{
printf("%d",a[m]); //将数组中的16个元素从后往前输出
if (m % 4 == 0) //每输出4个元素输出一个空格
{
printf(" ");
}
}
return 0;
}
28.从键盘输入3个数,输出其最大值
#include <stdio.h>
int main(void)
{
int a, b, c,max;
printf("please input 3 nuber:\n");
scanf_s("%d%d%d", &a, &b, &c);
if (a > b)
{
if (a > c)
{
max = a;
}
else max = c;
}
else if (b > c)
{
max = b;
}
printf("max=%d\n", max);
return 0;
}
29.输出所有的“水仙花数”所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身
#include<stdio.h>
#include<math.h>
int main()
{
int i, j, k;
for (int num = 100; num < 1000; num++)
{
i = num / 100;
j = num / 10 % 10;
k = num % 10;
if (num == pow(i, 3) + pow(j, 3) + pow(k, 3))
{
printf("%-5d", num);
}
}
return 0;
}
30.一个球从100米高度自由落下,每次落地后反跳回原来高度的一半,在落下,再反弹。求它在第1哦次落地时,共经过多少米,第10次反弹多高
#include <stdio.h>
int main()
{
double m = 100, n = m / 2; //m 初始高度 n 反跳高度
int n1;
for (n1 = 2; n1 <= 10; n1++)
{
m = m + 2 * n; //第n次落地时共经过的米数
n = n / 2; //第n次反跳高度
}
printf("第10次落地时共经过%f米\n", m);
printf("第10次反弹%f米\n", n);
return 0;
}