萌新写题第九天
代码总能更优化,本文仅供参考!
1、输入数字n,统计0~n中1的个数,如12,带1个个数1。1,10,11,12带1的个数5个。(假定输入的数0~999)
代码:
#include<stdio.h>
int main(){
int n, i, j, k, m, sum = 0;
printf("请输入数字:");
scanf("%d", &n);
for(i = 0; i <= n; i++){
if(i < 10){
j = i%10;
if(j == 1){
sum += 1;
printf(" %d ",i);
}
}
else if(i < 100 && j >= 10){
j = i%10;
k = i/10;
if(j == 1 || k == 1){
sum += 1;
printf(" %d ",i);
}
else if(j == 1 && k ==1){
sum += 2;
printf(" %d ",i);
}
}
else{
j = i % 100;
k = i / 10 % 10;
m = i /100;
if(j == 1 || k == 1 || m == 1){
sum += 1;
printf(" %d ",i);
}
else if(j == 1 || k == 1 && m == 1){
sum += 2;
printf(" %d ",i);
}
else if(j == 1 || m == 1 && k == 1){
sum += 2;
printf(" %d ",i);
}
else if(k == 1 || m == 1 && j == 1){
sum += 2;
printf(" %d ",i);
}
else if(j == 1 && k == 1 && m == 1){
sum += 3;
printf(" %d ",i);
}
else{
continue;
}
}
}
printf("\n");
printf("带1的个数有%d个!\n",sum);
}
运行结果:
2、今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?
三人同行七十稀, 五树梅花廿一支
七子团圆正半月, 除百零五便得知。
代码:
#include<stdio.h>
int main(){
int n, i, j, k;
for(i = 0; ; i++){
if(i % 3 == 2){
if(i % 5 == 3){
if(i % 7 == 2)
break;
}
else{
continue;
}
}
else{
continue;
}
}
printf("该数 = %d\n", i);
}
运行结果:
3、打印99乘法表;
代码:
#include<stdio.h>
int main(){
int a, b, i, j, k;
for(i = 1; i <= 9; i++){
for(j = 1; j <= 9; j++){
k = i * j;
printf("%d * %d = %d\n", i, j, k);
}
printf("\n");
}
}
运行结果:
4、有这样一个等式,xyz+yzz=532,编程求x,y,z的值(xyz和yzz分别表示一个三位数)。
代码:
#include<stdio.h>
int main(){
int x, y, z, a = 0, b = 0;
for(x = 1; x < 5; x++)
for(y = 1; y < 5; y++)
for(z = 0; z < 9; z++)
if(532 == (x*100 + y*10 + z) + (y*100 + z*10 + z))
printf("x = %d, y = %d, z = %d\n", x, y, z);
}
运行结果:
5、有一八层灯塔,每层的灯数都是上一层的2倍,共有765盏灯,编程求最上层与最下层的灯数;
代码:
#include<stdio.h>
int main()
{
int n, m[8], i, j, sum = 0;
for(i = 0; sum != 765; i++)
{
if(765 != sum)
sum = 0;
for(j = 0, n = i; j < 8; j++)
{
if(j == 0)
{
n = i;
m[j] = n;
sum += n;
}
else
{
n = n*2;
m[j] = n;
sum += n;
}
}
}
for(i = 0; i < 8; i++)
printf("第%d层有%d盏灯。\n", i+1, m[i]);
printf("最上层有%d盏灯,最下层有%d盏灯.\n", m[7], m[0]);
}运行结果: