代码1.
阶乘相加,当输入为5时->5!+4!+3!+2!+1!的和
define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
int main() {
int n, i, sum = 0, k = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++) {
k = k * i;
sum += k;
}
printf("%d!=%d", n, sum);
}
代码2.
1-2+3-4+5......的和
int main() {
int i, sum = 0, sign = 1;
int n;
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum += i * sign;
sign = -sign;
}
printf("结果为:%d", sum);
return 0;
}`![在这里插入图片描述](https:
代码3.
学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main() {
int score;
scanf("%d", &score);
char k = score >= 90 ? 'A' : score >= 60 ? 'B' : 'C';
printf("成绩等级:%c",k);
return 0;
}
代码4
计算和输出下列级数的和。
#include
int main() {
float fz = 1;
float fm;
float s = 0;int n;
scanf("%d", &n);
int i=1;
while (i <= n) {
fm = i * (i + 1);
s += fz / fm;
i++;
}
printf("%f", s);
}
结果:当输入为10时,结果为0.909091
代码5.
某个公司采用公用电话传递数据,数据是四位的整数,
在传递过程中是加密的,加密规则如下:每位数字都加上5,
然后用和除以10的余数代替该数字,
再将第一位和第四位交换,第二位和第三位交换。
int main() {
int a, b, c,m=0;
scanf("%d", &a);
while (a) {
b = (a % 10)+5;
b= b % 10;
m = m * 10 + b;
a = a / 10;
}
printf("%d", m);
}
代码6.
输出100以内能被3整除且个位数为6的所有整数
int main() {
int i;
for (i = 6; i <= 100; i++) {
if (i % 10 == 6 && i%3==0) {
printf("%3d", i);
}
}
}
代码7.
判断一个素数能被几个9整除,注:当个1000以内所有素数看就行了
int fun(int n) {
int i;
for (i = 2; i <= n / 2; i++) {
if (n % i == 0)return 0;
}
return 1;
}
int main() {
int i,k=0,p=0;
for (i = 1; i < 1000; i++) {
if (fun(i) == 1) {
int m = i;
while ((k = m % 9)==0) {
p++;
m = m / 9;
}
printf("素数%d,可以被%d个9整除\n", i, p);
}
}
}
代码8.
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
注:自己算一下更容易理解
int main() {
int n,i;
scanf("%d", &n);
printf("90=");
for (i = 2; i < n; i++) {
while (n % i == 0) {
n = n / i;
printf("%d*", i);
}
}
printf("%d", n);
}
代码9.打印下方图形
*
***
******
********
int main() {
int i;
for (i = 0; i < 4; i++) {
for (int j = 0; j < i * 2 + 1; j++) {
printf("*");
}
printf("\n\n");
}
return 0;
}
代码10.
请编写一个函数void fun(int m, int k, int xx[])
该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。
void fun(int m, int k, int xx[]) {
int i = 0,j=0;
while (k) {
m++;
for (i = 2; i < m / 2; i++) {
if (m % i == 0)
break;
}
if (i == m / 2) {
xx[j++] = m;
k--;
}
}
}
int main() {
int xx[80];
int k,m;
scanf("%d %d", &k,&m);
fun(m, k, xx);
for (int i = 0; i < k; i++) {
printf("%3d", xx[i]);
}
}
代码11.
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
int main() {
int f1 = 1, f2 = 1;
int i;
for (i = 1; i <= 20; i++) {
printf("%10d%10d", f1, f2);
f1 = f1 + f2;
f2 = f1 + f2;
if (i % 2 == 0)printf("\n");
}
return 0;
}
代码12.
实现矩阵(3行3列)的转置(即行列互换)![在这里插入图片描述](https:
int main() {
int arr[3][3],i,j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < i; j++) {
int k = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = k;
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%4d", arr[i][j]);
}
printf("\n");
}
![在这里插入图片描述](https:
代码13.
编写函数,函数的功能是:从字符串中删除指定的字符。同一字母的大小写按不同字符处理。
void fun(char arr[80], int k) {
int i,j;
for (i = 0; i < strlen(arr); i++) {
if (arr[i] == k) {
for ( j = i ; j < strlen(arr); j++) {
arr[j ] = arr[j+1];
}
i--;
}
}
printf("%s", arr);
}
int main() {
char arr[80],k;
scanf("%c", &k);
scanf("%s", arr);
fun(arr, k);
return 0;
}
代码14.
一球从100米高度自由落下,
每次落地后反跳回原高度的一半;
再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
int main() {
float h = 100,f = 50;
for (int i = 2; i <= 10; i++) {
h += f * 2;
f = f / 2;
}
printf("高度:%f,第10次反弹高度:%f", h, f / 2);
}
代码15.
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
int main() {
int a,b;
scanf("%d %d", &a, &b);
int sum=0;
int m=0;
for (int i = 1; i <= b; i++) {
m = m * 10 + a;
sum += m;
}
printf("%d", sum);
return 0;
}
当键盘输入2、5时结果为24690
代码15.
回文数问题,个位与万位相同,十位与千位相同。如:12321
int main() {
int m = 0,a;
scanf("%d", &a);
int k = a;
while (k) {
m = m * 10 + k % 10;
k = k / 10;
}
if (m == a) {
printf("YES");
}
else printf("No");
}
当输入1234时,不是回文数。12321时是回文数
代码16.
猴子吃桃问题:猴子第一天摘下若干个桃子,
当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
int main() {
int m = 1, k = 9;
while (k > 0) {
m = (m + 1) * 2;
k--;
}
printf("%d", m);
return 0;
}
注:列个方程,更容易理解
代码17.
编写一个unsigned xx(unsigned w),w是一个大于10的无符号整数,函数求出w的后n-1位的数作为函数值返回。
如输入1234则输出234,如输入45则输出5
unsigned xx(unsigned k) {
if (k >= 10000)return k % 10000;
else if (k >= 1000)return k % 1000;
else if (k >= 100)return k % 100;
return k % 10;
}
int main() {
unsigned k;
scanf("%u", &k);
if (k >= 10)printf("%u", xx(k));
else printf("输入错误");
return 0;
}
代码18.
判断字符串是否回文,若是则输出YES,不是则输出No
int main() {
char arr[80];
scanf("%s", arr);
int k=strlen(arr)-1;
int z = k,i;
for ( i = 0; i < k / 2; i++) {
if (arr[i] == arr[z]) { z--; continue; }
else break;
}
if (i == k / 2)printf("Yes");
else printf("No");
return 0;
}
代码19.
给定秒数 seconds ,把秒转化成小时、分钟和秒
#include
int main(){
int a=0,b=0,seconds;
scanf("%d",&seconds);
int i=seconds/60;
seconds=seconds%60;
while(i>0){
if(b>=60){a++;b=0;};
b++;
i--;
}
printf("小时:%d 分钟:%d 秒:%d",a,b,seconds);
}
代码20.
同构数:所谓“同构数”是指这样的数,它出现在它的平方数的右边
int main() {
int i;
for (i = 5; i <= 100;i++) {
if (i < 10) {
if ((i * i) % 10 == i)printf("%d\n", i);
}
else if (i >= 10) {
if ((i * i) % 100 == i)printf("%d\n", i);
}
}
}
结果为:5,6,25,76
代码21.
在字符串中所有数字字符前加一个$字符
int main() {
char arr[80] = {0}, i = 0, j;
scanf("%s", arr);
int k = strlen(arr);
while (arr[i]!='\0') {
if (arr[i] >= '0' && arr[i] <= '9') {
for (j = k; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = '$';
i++;
}
k = strlen(arr);
i++;
}
printf("%s", arr);
return 0;
}
结果:输入:hello2022
hello$2$0$2$2
代码22.
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
int fun(int arr[100],int m) {
int i,j,k=0,n=0;
for (i = 2; i < m; i++) {
for ( j = 2; j < i / 2; j++) {
if (i % 2 == 0) {
arr[n++] = i;
k++;
break;
}
}
}
return k;
}
int main() {
int arr[100],m;
scanf("%d", &m);
int k=fun(arr, m);
printf("非素数个数:%d", k);
return 0;
}
输入100时
非素数个数:47
代码22.
求x的y次方
int main() {
int x, y;
scanf("%d %d", &x, &y);
if (y == 0 && x != 0) {
printf("%d", 1);
}
else {
int k = x;
while (y >1) {
x = x * k ;
y--;
}
printf("%d",x);
}
}
代码23.
杨辉三角:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
int main() {
int arr[5][5],j,i;
for (i = 0; i < 5; i++) {
arr[i][0] = 1;
arr[i][i] = 1;
}
for (i = 2; i < 5; i++) {
for (j = 1; j < i; j++) {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
for (i = 0; i < 5; i++) {
for (j = 0; j <= i; j++)
printf("%5d",arr[i][j]);
printf("\n");
}
return 0;
}
代码24.
将一个3*3的矩阵的上三角元素化为0
1 0 0
4 5 0
7 8 9
int main() {
int arr[3][3], j, i;
for (i = 0; i < 3; i++) {
for(j=0;j<3;j++){
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 3 - 1; j > i; j--) {
arr[i][j] = 0;
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%4d", arr[i][j]);
}
printf("\n");
}
}
代码25.
将一个3*3的矩阵的下三角元素化为0
1 2 3
0 5 6
0 0 9
int main() {
int arr[3][3], j, i;
for (i = 0; i < 3; i++) {
for(j=0;j<3;j++){
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j< i; j++) {
arr[i][j] = 0;
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%4d", arr[i][j]);
}
printf("\n");
}
}
代码26.
求一个3*3矩阵对角线元素之和
int main() {
int arr[3][3], j, i,sum=0;
for (i = 0; i < 3; i++) {
for(j=0;j<3;j++){
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j <= i; j++) {
if (i == j)
sum += arr[i][j];
}
}
printf("对角线元素和为:%d", sum);
1 2 3
4 5 6
7 8 9
对角线元素和为:15
代码27.
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
int main() {
int k,m=0,sum=0,i;
for (i = 100; i < 1000; i++) {
k = i;
while (k) {
m = k % 10;
m = m * m * m;
sum += m;
k = k / 10;
}
if (sum == i)printf("水仙花数有:%4d\n", i);
sum = 0;
}
return 0;
}
代码28.
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
int main() {
int i,j,sum=0;
for (i = 6; i < 1000; i++) {
for (j = 1; j <= i / 2; j++) {
if (i % j == 0)
sum += j;
}
if (sum == i)printf("完数有:%d\n", i);
sum = 0;
}
}
代码29.
输入两个正整数,求其最大公约数和最小公倍数
int main() {
int a, b,temp;
scanf("%d %d", &a, &b);
int m = a, n = b;
if (a <b) {
temp = a;
a = b;
b = temp;
}
while (b != 0) {
temp = a % b;
a = b;
b = temp;
}
printf("最大公约数%d", a);
printf("最小公倍数%d", m * n / a);
return 0;
}
代码30.
有1、2、3个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
int main() {
int i, j, k,m=0;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
for (k = 1; k <= 3; k++) {
if (i != j && i != k && k != j){m++;printf("%d%d%d", i, j, k);}
}
printf("\n");
}
}
printf("个数:%d",m);
return 0;
}
代码31.
一元二次方程
int main() {
float a, b, c,s=0;
scanf("%f %f %f", &a, &b, &c);
s = b * b - 4 * a * c;
if (s > 0) {
float k1 = (-b + sqrt(s))/(2 * a);
float k2 = (-b - sqrt(s))/(2 * a);
printf("%f %f\n", k1, k2);
}else if (s == 0) {
float k1 = (-b + sqrt(s)) / (2 * a);
printf("%f\n", k1);
}
else {
printf("没有根");
}
return 0;
}
结果当输入 1 2 1时-1.000000
代码32.
递归实现9*9乘法表
int fun(int n) {
if (n==0)return 0;
else {
fun(n - 1);
for (int i = 1; i <= n; i++) {
printf("%d*%d=%d ", n, i, n * i);
}
printf("\n");
return 0;
}
}
int main() {
fun(9);
}
结果:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
代码33.
实现字符串的连接
void fun(char* pa, char* pb) {
while (*pa != '\0') pa++;
while (*pb != '\0') {
*pa = *pb;
pa++; pb++;
}
*pa = '\0';
}
int main() {
char arr1[200];
char arr2[80];
scanf("%s %s", arr1, arr2);
fun(arr1, arr2);
printf("%s", arr1);
}
结果:
hello world
helloworld
代码34.
实现字符串求长
int fun(char* p) {
int k = 0;
while(*p != '\0') {
p++;
k++;
}
return k;
}
int main() {
char arr1[80];
scanf("%s", arr1);
int k=fun(arr1);
printf("长度为%d", k);
}
结果: 输入 hello
输出 5
代码35.
字符串的复制
void fun(char* pa,char* pb) {
while (*pb!='\0') {
*pa = *pb;
pa++; pb++;
}
*pa = '\0';
}
int main() {
char arr1[80];
char arr2[80];
scanf("%s %s", arr1, arr2);
fun(arr1, arr2);
printf("%s", arr1);
return 0;
}
结果:输入hello world
输出world
代码36.
字符串的比较
int fun(char* pa,char* pb) {
while (*pb!='\0'&&*pa!='\0') {
if (*pa != *pb)return 0;
pa++;
pb++;
}
return 1;
}
int main() {
char arr1[80];
char arr2[80];
scanf("%s %s", arr1, arr2);
if (fun(arr1, arr2) == 1)printf("两个字符串相等");
else printf("两个字符串不相等");
return 0;
}
代码37.
国家名排序
int main() {
char arr[5][100];
int i,j;
for (i = 0; i < 5; i++) {
scanf("%s", &arr[i]);
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4 - i; j++) {
if (strcmp(arr[j], arr[j + 1])>0) {
char k[100];
strcpy(k, arr[j]);
strcpy(arr[j], arr[j + 1]);
strcpy(arr[j + 1], k);
}
}
}
for (i = 0; i < 5; i++) { printf("%s\n", arr[i]); }
return 0;
}
代码38.
用递归方法将一个整数n转换字符串,例如1234转换成"1234"
int fun(int n) {
if (n) {
fun(n / 10);
printf("%c", (n % 10) + 48);
}
else {
return 0;
}
}
int main() {
int n;
scanf("%d", &n);
fun(n);
}
代码39.
打印数字金字塔
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
int main() {
int i, j, k;
for (i = 1; i <= 9; i++) {
for (j = 9; j > i; j--)
printf(" ");
for (k = 1; k <= i ;k++) {
printf("%d", k);
}
int n = i;
for (k = i + 1; k <= i * 2 - 1; k++) {
n--;
printf("%d", n);
}
printf("\n");
}
}
代码40.
从键盘输入一个日期(年、月、日),判断这是今年的第几天
int main() {
int arr[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int year, month, day;
scanf("%d %d %d", &year, &month, &day);
int i,sum=day;
for (i = 0; i < month-1&&month!=1; i++) {
41.
int main() {
float fz=1, fm=3,t=1+(fz/fm), sum=0,i=2,j=5;
while (t >= 1e-6) {
sum += t;
fz = fz*i;
fm = fm * j;
i++;
j += 2;
t = fz / fm;
}
printf("%f", sum * 2);
}
42.
int main() {
char a; int i = 0, k = 0;
while ((a = getchar()) != '\n') {
if (a >= '0' && a <= '9') {
k = k * 16 + a - 48;
}
else if(a >= 'A' && a <= 'F') {
k = k * 16 + a - 'A' + 10;
}
}
printf("%d", k);
}
43.
int main() {
char a; int i = 0, k = 0;
while ((a = getchar()) != '\n') {
if (++i > 20)break;
if (a >= '0' && a <= '9') {
k = k * 10 + a - 48;
}
}
printf("%d", k);
}
44.
问题:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%;
高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润I,求应发放奖金总数?
int main() {
float b1 = 100000 * 0.1;
float b2 = b1 + 100000 * 0.075;
float b4 = b2 + 200000 * 0.05;
float b6 = b4 + 200000 * 0.03;
float b10 = b6 + 400000 * 0.015;
float k;
scanf("%f", &k);
if (k < 100000)printf("%f\n", k * 0.1);
else if (k < 200000)printf("%f\n", b1 + (k-100000) * 0.075);
else if (k < 400000)printf("%f\n", b2 + (k-200000) * 0.05);
else if (k < 600000)printf("%f\n", b4 + (k-400000) * 0.03);
else if (k < 600000)printf("%f\n", b6 + (k - 400000) * 0.015);
else {
printf("%f", b10 + (k - 1000000) * 0.01);
}
45.
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
int main() {
int i,x,y;
for (i = 1; i <= 1000; i++) {
x = sqrt(i + 100);
y = sqrt(i+268);
if (x * x == i+100 && y * y == i+268)printf("%d\n", i);
}
}
46.
int main() {
int i,x,y;
for (i = 1000; i < 10000; i++) {
x = i % 100;
y = i / 100;
x = x + y;
if (x * x == i) {
printf("%d\n", i);
}
}
return 0;
}
47.
int fun(int m,int n) {
for (int i = 2; i < m; i++) {
if (m % i == 0)return 0;
}
for (int i = 2; i < n; i++) {
if (m % i == 0)return 0;
}
return 1;
}
int main() {
int i = 6,k,j;
for (; i <= 50; i++) {
for (j = 1; j < i; j++) {
k = i - j;
if(fun(k, j)==1)printf("%d,%d和%d\n",i,k,j);
}
}
return 0;
}
48.
int main() {
char A,B,C;
for (A = 'x'; A <= 'z'; A++) {
for (B = 'x'; B <= 'z'; B++) {
for (C= 'x'; C<= 'z'; C++) {
if (A != B && A != C && B != C) {
if (A != 'x' && C != 'x' && C != 'z') {
printf("A->%c", A);
printf("B->%c", B);
printf("C->%c", C);
}
}
}
}
}
return 0;
}
49.
int main() {
int arr[80] = { 2,4,6,8,10,12,14,16,18,20 };
int k,i,j;
scanf("%d", &k);
for (i = 0; i < 10; i++) {
if (k < arr[i]) {
for (j = 10; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = k;
break;
}
}
for (i = 0; i < 11; i++) {
printf("%d ", arr[i]);
}
return 0;
}
50.
int main() {
char arr[100];
gets(arr);
int i = 0,sum=1,flag=1;
while (arr[i] != '\0') {
if (flag == 1 && arr[i] >= 'a' && arr[i] <= 'z') {
arr[i] -= 32;
flag = 0;
}
if (arr[i] ==32) {
sum++;
flag = 1;
}
i++;
}
printf("单词个数为:%d", sum);
}