例题1:有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数,都是多少?
#include <stdio.h> int main(void) { int i, j, k; int n = 0; printf("Here are
the answers:\n"); /*以下位三重循环,分别代表百位、十位和个位数*/ for(i=1 ; i<5 ; i++) { for(j=1 ;
j<5 ; j++) { for(k=1 ; k<5 ; k++) { if(i != j && i != k && j != k)
//满足三位数各不相等即可输出 { printf("%d%d%d\n", i, j, k); n++; } } } } printf("There are
%d numbers\n", n); return 0; }
例题2:企业发放的奖金根据利润提成,提成方式如下:其中i为利润,b为奖金

i <= 10, b = 10%*i;

i > 10 && i <= 20, b = (i-10)*7.5%+10*10%

i > 20 && i <= 40, b = (i-20)*5%+10*10%+10*7.5%

i > 40 && i <= 60, b = (i-40)*3%+10*10%+10*7.5%+20*5%

i > 60 && i <= 100, b = (i-60)*1.5%+10*10%+10*7.5%+20*5%+20*3%

i > 100, b = (i-100)*1%+10*10%+10*7.5%+20*5%+20*3%+40*1.5%
#include <stdio.h> int main(void) { float i, b; int s; printf("请输入利润(万元)值:");
scanf("%f", &i); while(i < 0) //判断输入是否有误,有误则重新输入 { printf("输入有误,请重新输入!\n");
printf("请输入利润(万元)值:"); scanf("%f", &i); } s = i/10; switch (s)
//switch条件值或表达式结果必须为int型 { case 0: case 1: b = i*0.1; break; case 2: b =
((i-10)*0.075) + (10 * 0.1); break; case 3: case 4: b = ((i-20)*0.05) + (10 *
0.1) + (10 * 0.075); break; case 5: case 6: b = ((i-40)*0.03) + (10 * 0.1) +
(10 * 0.075) + (20 * 0.05); break; case 7: case 8: case 9: case 10: b =
((i-60)*0.015) + (10 * 0.1) + (10 * 0.075) + (20 * 0.05) + (20 * 0.03); break;
default: b = ((i-100)*0.01) + (10 * 0.1) + (10 * 0.075) + (20 * 0.05) + (20 *
0.03) + (40 * 0.015); break; } printf("您的奖金为%0.2f元\n", b*10000); return 0; }
例题3:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include <stdio.h> #include <math.h>
//sqrt()函数(开方函数)属于math函数库,开头需要包含math函数库的头文件 int main(void) { int i, x, y, n=0;
for(i = 0 ; i < 100000 ; i++) { x = sqrt(i+100); y = sqrt(i+268); if( x*x ==
(i+100) && y*y == (i+268)) //判断是否满足题目条件 { printf("%d\n", i); n++; //记录满足条件的数的个数
} } printf("在0~100000中,总共有%d个这样的数\n", n); return 0; }
例题4:输入某年某月某日,判断这一天是这一年的第几天
#include <stdio.h> #if(0) /*方法1:用switch语句*/ int main(void) { int y, m, d, day;
printf("请输入年-月-日:"); scanf("%d-%d-%d", &y, &m, &d); while(m > 12 || d > 31) {
printf("输入有误,请重新输入!\n"); printf("请输入年-月-日:"); scanf("%d-%d-%d", &y, &m, &d); }
switch (m) { case 1: day = d; break; case 2: day = d + 31; break; case 3: day =
d + 31 + 28; break; case 4: day = d + 31 + 28 + 31; break; case 5: day = d + 31
+ 28 + 31 + 30; break; case 6: day = d + 31 + 28 + 31 + 30 + 31; break; case 7:
day = d + 31 + 28 + 31 + 30 + 31 + 30; break; case 8: day = d + 31 + 28 + 31 +
30 + 31 + 30 + 31; break; case 9: day = d + 31 + 28 + 31 + 30 + 31 + 30 + 31 +
31; break; case 10: day = d + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break; case 11: day = d + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break; case 12: day = d + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break; } if( y%400 == 0 || (y%100 != 0 && y%4 == 0)) { day++; }
printf("这一天是该年的第%d天\n", day); return 0; } #endif /*方法2:用数组*/ int main(void) {
int i, y, m, d, day; int a[12] = {0,31,28,31,30,31,30,31,31,30,31,30};
printf("请输入年-月-日:"); scanf("%d-%d-%d", &y, &m, &d); while(m > 12 || d > 31) {
printf("输入有误,请重新输入!\n"); printf("请输入年-月-日:"); scanf("%d-%d-%d", &y, &m, &d); }
day = d; for(i=0 ; i<m ; i++) { day = day + a[i]; } if( y%400 == 0 || (y%100 !=
0 && y%4 == 0)) { day++; } printf("这一天是该年的第%d天\n", day); return 0; }
例题5:输入三个整数x,y,z,请把这三个数由小到大输出
#include <stdio.h> int compare(int a[]); //声明比较函数 void print(int a[]);
//声明打印函数 int n; int main(void) { int i; int a[10];
printf("请输入要比较的整数个数(2~10):"); scanf("%d", &n); while(n<2 || n>10) {
printf("输入有误,请重新输入!\n"); printf("请输入要比较的整数个数(2~10):"); scanf("%d", &n); }
for(i=0 ; i<n ; i++) { printf("请输入第%d个数:", i+1); scanf("%d", &a[i]); }
printf("当前数字的排列顺序为:"); print(a); compare(a); printf("比较后数字的排列顺序为:"); print(a);
return 0; } int compare(int a[]) { int temp, i, j; for(i=0 ; i<n ; i++) {
for(j=i+1 ; j<n ; j++) { if(a[i] > a[j]) { temp = a[i]; a[i] = a[j]; a[j] =
temp; } } } return a; } void print(int a[]) { int i; for(i=0 ; i<n ; i++) {
printf(" %d ", a[i]); } printf("\n"); }
例子6、7:用"*"显示出子母C,输出特殊图案
#include <stdio.h> void print1(); void print2(); int main(void) { print1();
printf("\n"); print2(); return 0; } void print1() { printf(" ***** \n");
printf(" * \n"); printf("* \n"); printf(" * \n"); printf(" ***** \n"); } void
print2() { printf(" ******* * ****** * * ****** * * ****** * * *\n"); printf("
* * * * * * * * * * * * * *\n"); printf(" * * * * * * * * * * * * * *\n");
printf(" * * * * * * ****** * * * * * *\n"); printf(" * * * * * * * * * * * *
*\n"); printf(" * * * * * * * * * * * * \n"); printf(" ******* ****** ****** *
****** * ****** ****** *\n"); }
例题8、9:输出9*9乘法表、输出国际象棋棋盘
#include <stdio.h> void print_excel(); //声明九九乘法表打印函数 void print_chess();
//声明国际象棋棋盘打印函数 int main(void) { print_excel(); print_chess(); return 0; } void
print_excel() { int i, j; for (i=1 ; i<10 ; i++) { for (j=1 ; j<i+1 ; j++) {
printf(" %d*%d=%2d ", i, j, i*j); } printf("\n"); } printf("\n"); } void
print_chess() { int i, j; for (i=0 ; i<8 ; i++) { for (j=0 ; j<8 ; j++) {
if((i+j)%2 == 0) { printf("%c%c", 168, 128); } else { printf(" "); } }
printf("\n"); } }
例题10:打印楼梯,同时在楼梯上方打印两个笑脸
#include <stdio.h> void print_stairs(int x); int main(void) { int n;
printf("请输入楼梯阶层数:"); scanf("%d", &n); printf("\1 \1\n"); print_stairs(n); }
void print_stairs(int x) { int i, j; for(i=0 ; i<x ; i++) { for(j=0 ; j<i+1 ;
j++) { printf("%c%c", 168, 128); } printf("\n"); } }

例子11:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问每个月的兔子总数为多少(输出前40个月的数据)
#include <stdio.h> int rabbit(int x); int main(void) { int n, add = 0;
printf("请输入最终月份:"); scanf("%d", &n); add = add + rabbit(n);
printf("%d个月后兔子的总数为%d\n", n, add); return 0; } int rabbit(int x) { int y; if(x
< 3) // { y = 2; } else { y = rabbit(x-1) + rabbit(x-2);
/*递归函数,第x个月兔子数量等于第x-1月与第x-2月数量之和*/ } return y; }
例题12:判断101-200之间有多少个素数,并输出所有素数
#include <stdio.h> #include <math.h> int main(void) { int i, j, k, l, mark;
int n = 0; int a[50]; for(i=101 ; i<201 ; i+=2) { for(j=2 ; j<=(int)(sqrt(i)) ;
j++) //sqrt函数包含在math.h头文件中 { if(i%j == 0) { mark = 0; } } if(mark != 0) { a[n]
= i; n++; } } for(l=0 ; l<n ; l++) { printf("a[%d] = %d\n", l, a[l]); } return
0; }
例题13:打印出所有的“水仙花”数,所谓“水仙花”数是指一个三位数,其各位数字立方和等于该数
#include <stdio.h> int main(void) { int i, j, k, x, y, z, m, n = 0; for(i=1 ;
i<10 ; i++) { for(j=0 ; j<10 ; j++) { for(k=0 ; k<10 ; k++) { x = i*i*i; y =
j*j*j; z = k*k*k; m = i*100 + j*10 + k; if(m == (x+y+z)) { printf("%d\n", m);
n++; } } } } printf("共有%d个水仙花数\n", n); return 0; }
例题14:将一个正整数分解质因数。例如:输入90,打印出90 = 2x3x3x5
/*在for循环中使用递归函数时,需要break语句和状态判断语句*/ #include <stdio.h> void bkdown(int x); int
main(void) { int b; printf("请输入正整数:"); scanf("%d", &b); printf("%d=", b);
bkdown(b); return 0; } void bkdown(int x) { int j; int i = 0; for(j=2 ; j<x ;
j++) { if(x%j == 0) { x = x/j; printf("%dx", j);; bkdown(x); i = 1; break; } }
if(i == 0) { printf("%d\n", x); } }
例题15:利用条件运算符的嵌套完成学习成绩的转换:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
60分以下的用C表示
#include <stdio.h> int main(void) { int a, b; printf("请输入学生成绩:"); scanf("%d",
&a); ((a>=90) ? printf("A\n") : ((a>60 && a<90) ? printf("B\n") : printf("C\n")
)); return 0; }
例题16:输入两个正整数m和n,求其最大公约数和最小公倍数
#include <stdio.h> int main(void) { int m, n, i, j; int t = 1;
printf("请输入正整数m,n:"); scanf("%d %d", &m, &n); if(m>n) { j = m; } else { j = n;
} for(i=1 ; i<j ; i++) { if(m%i == 0 && n%i == 0) { m = m / i; n = n / i; t = t
* i; i = 1; //重新循环,除数可以相同 } } printf("这两个数的最大公约数为%d,最小公倍数为%d\n", t, t*m*n);
return 0; }
例题17:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
#include <stdio.h> #include <conio.h> int main(void) { char c; int l=0, s=0,
n=0, o=0; printf("请输入字符串:\n"); while((c=getchar()) != '\n') { if(c >= 'A' && c
<= 'z') { l++; } else if(c == ' ') { s++; } else if(c >= '0' && c <= '9') {
n++; } else { o++; } } printf("输入字符串中有%d个字母,%d个空格,%d个数字,%d个其他字符\n", l, s, n,
o); return 0; }
例题18:求s=a+aa+aaa+aaaa+aa...a的值
#include <stdio.h> #include <math.h> int main(void) { int a, b, i, j; int s =
0; printf("请输入数字以及项数:"); scanf("%d %d", &a, &b); for(j=b ; j>0 ; j--) //外循环为每一项
{ for(i=j ; i>0 ; i--) //从最后一项开始算起,内循环为每一项的和 { s = s + a * pow(10, i-1); } }
for(j=1 ; j<b+1 ; j++) { for(i=j ; i<b+1 ; i++) { printf("%d", a); } if(j != b)
{ printf("+"); } else { printf("=%d\n", s); } } return 0; }
例题19:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数
#include <stdio.h> int bkdown(int x); int main(void) { int i, r; int m = 0;
int a[100]; for(i=1 ; i<1001 ; i++) { r = bkdown(i); if(r != 0) { a[m] = r;
m++; } } printf("1000以内有%d个完全数,分别为:\n", m); for(i=0 ; i<m ; i++) { if(i != m-1)
{ printf("%4d ", a[i]); } else { printf("%4d\n", a[i]); } } return 0; } int
bkdown(int x) { int j, l; int s = 0; l = x; for(j=1 ; j<l ; j++) { if(l%j == 0)
{ s = s + j; } } if(s == x) { return x; } else { return 0; } }
例题20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
#include <stdio.h> int main(void) { int i; float s = 0; float h = 100; for(i=0
; i<10 ; i++) { s = s + h; //球每次从最高点落地时的高度 h = h / 2.0; if(i != 9) { s = s + h;
//球每次从地面反弹到最高点的高度 } } printf("小球第10次落地时,共经过%f米,第10次反弹%f米\n", s, h); return 0; }
 

技术
©2019-2020 Toolsou All rights reserved,
Vue页面跳转传递参数及接收python读取、写入txt文本内容 mysql无备份恢复【Python-数据读取】读取txt文件每一行数据生成列表(精华)2020年7月15日 微信小程序 template的使用11-5 指定位置输出字符串ELementUI select多选下拉框获取选中项的全部属性分页工具类PageResult 程序员与架构师华山论道python中switch_to_alert的用法