c语言基础,常用的几个练习小题目
//打印菱形
void ling(){
int a[7][7];
for (int i=0; i<=3;i++) {
for (int j=0; j<=3; j++) {
if (i+j<3) {
a[i][j]=' ';
}
else if(i+j>=3){
a[i][j]='*';
}
}
for (int n=4; n<7; n++) {
if (n-i<=3) {
a[i][n]='*';
}
else{
a[i][n]=' ';
}
}
}
for (int c=4; c<7; c++) {
for (int b=0; b<=3; b++) {
if (c-b<=3) {
a[c][b]='*';
}
else{
a[c][b]=' ';
}
}
for (int d=4; d<7; d++) {
if (c+d<=9) {
a[c][d]='*';
}
else{
a[c][d]=' ';
}
}
}
for (int k=0;k<7 ; k++) {
for (int l=0; l<7; l++) {
printf("%c",a[k][l]);
}
printf("\n");
}
}
//判断是不是完全平方数
void sq(){ //不要返回值时就定义void类型的函数
int n;
for ( n=1; n<100000;n++) {
if ((sqrt(n+100) *sqrt(n+100) ==n+100) && (n+268==sqrt(n+268)* sqrt (n+268)) ) {
printf("%d\n",n);
}
}
//弹球 路程及高度两种不同的思想方法,主要就是找规律,实在想不完整的时候就边写边想;
void tan(){
double sn=100.0,hn=sn/2;
for (int n=2; n<=10; n++) {
sn = sn+2*hn;
hn=hn/2;
}
printf("the total of raod is %f\n",sn);
printf("the tenth is%f meter\n",hn);
}
void height(int n){
float h2=100*pow(0.5, 10);
float sum=100;
float h=1;
for (int i=1; i<10; i++) {
h=h*0.5;
sum=sum +100*2*h;
}
printf("the total of raod is %f\n",h2);
printf("the tenth is%f meter\n",sum);
}
//猴子吃桃问题; 利用逆向思维的方法,从最后一天往前推。
int peach(){
int n=1;
int sum=1;
for (int i=10; i>0; i--) {
sum=(sum+1)*2;
}
printf("%d\n",sum);
return sum;
}
//数组中的最大值
int a[5]; // 数组中的最大值最小值问题。将a【0】的值赋给
int max; //一个变量,然后让变量和数组中的各个值进行比较(最小值同理)
for (int i=0; i<5; i++) {
printf("please enter a number %d\n",i+1);
scanf("%d",&a[i]);
}
max=a[0];
for (int k=1; k<5; k++) {
if (max<a[k]) {
max=a[k];
}
}
printf("%10d i\n",max);
}
//break 打印乘法口诀 可以通过break实现特殊格式的输出 当符合条件是就结束当前层的循
int i; //环 continue只是不执行continue后边语句,循环还会
for (i=1; i<10; i++) { //继续执行
for (int k=1; k<10; k++) {
printf("%d*%d\t",i,k);
if(i==k){
break;
}
}
printf("\n");
}
//分数累加问题2/1+3/2+5/3+8/5+…..前20项的和
ouble fenshu(){
double sum =0;
double m=1.0,n=2.0;
double a,b;
for (int i=1; i<=20; i++) { //找规律,然后尝试着去写
sum=sum+n/m; //考点在于值的转换,注意赋值的方法。当不能直接进行值的转
a=n; //换时,要寻找其他变量作为中转站进行数值的转换
b=m+n;
m=a;
n=b;
}
// 水仙花数
int hua(int x){
int n=x; //把传递过来的参数,赋值给一个变量,便于计算完结果后跟
int sum=0; //原来的值进行比较
int m;
while (n) {
m=n%10; //利用取余或者取整获得自己想要的数位上的数字
sum=sum + m*m*m;(sum=sum*10 +m 回文数)(printf(“%d\n”,m);倒序输出)
n/=10;
}
if (sum == x) {
return 1;
}
else{
return 0;
}
}
//奖金分层
void mony(){
double m;
double sum;
scanf("%lf",&m);
if (m>=0 &&m<=10) {
sum=0.1*m;
}
else if(m<=20){
sum=10*0.1 +(m-10)*0.075;
}
else if(m<=40){
sum=10*0.1 +10*0.075+(m-20)*0.05;
}
else if (m<=60){
sum=10*0.1 +10*0.075+20*0.05 +(m-40)*0.03;
}
else if (m<=100){
sum=10*0.1+10*0.075+20*0.05+20*0.03+(m-60)*0.015;
}else{
sum=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(m-100)*0.01;
}
printf("%lf\n",sum);
}
//n*n口诀
void multiplication(){
int n;
scanf("%d",&n);
for (int i=1; i<=n; i++) {
for (int k=1; k<=n; k++) {
printf("%d*%d=%d\t",i,k,i*k);
if (i==k) {
break;
}
}
printf("\n");
}
}
//1-n的阶乘
void fac(){
int n;
int sum=1;
scanf("%d",&n);
for (int k=1; k<=n; k++) {
sum=1;
for (int i=1; i<=k; i++) {
sum=sum*i;
}
printf("%d 的阶乘是%d\n",k,sum);
}
}
//兔子问题
void rabbit(){
int f1=1,f2=1;
int i;
for (i=1; i<=20; i++) {
printf("%12d %12d",f1,f2);
if (i%2==0) {
printf("\n");
}
f1=f1+f2;
f2=f2+f1;
}
}
//素数问题 不是最简洁的方法
void sushu(){
int n;
int m;
int i;
scanf("%d",&n);
for ( i=2; i<n-1; i++) {
if (n%i==0) {
break;
}
}
if (i<n) {
printf("%d bu shi su shu \n",n);
}
else{
printf("%d shi su shu ",n);
}
}