题目描述:
将1,2,⋯,9共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。
输入格式:
没有输入
输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。
C++源代码:
#include
int main()
{
short a,i,n[9],*b,*d;//数组n[9]用于存放3个三位数a、2a、3a包含的9个数
bool repeat;//变量repeat用于检测是否出现重复数字或0
for(a=100;a<=333;a++)
{
b=n;//将指针初始化,指向数组a的首元素
repeat=true;//将变量初始化为true,表示无重复数字和0
for(i=1;i<=3;i++)//此循环用于构造3个三位数a、2a、3a
{
*(b++)=a*i%10;//将此数的个位数送入b所指向的数组元素
*(b++)=a*i/10%10;//将此数的十位数送入b所指向的数组元素
*(b++)=a*i/100;//将此数的百位数送入b所指向的数组元素
}//循环结束时,n[9]的所有元素已赋值完毕
for(b=n;b<=n+7&&repeat;b++)//开始检测n[9]中是否有重复数字或0
for(d=b+1;d<=n+8&&repeat;d++)//分别用指针b和d指向n[9]中不同的元素
if(*b==*d||!*d)//一旦发现有重复数字或0
repeat=false;//将repeat赋值为false,此后便会跳出这两层循环
if(repeat)//倘若没有重复数字和0
printf("%-4d%-4d%d\n",a,a*2,a*3);//输出a、2a、3a的值,也即由1-9组成的3个3位数
}//循环完毕时,已输出所有满足条件的3个三位数
return 0;
}
题目描述:
已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1≤K≤15),要求计算出一个最小的n,使得Sn>K。
输入格式:
一个正整数K
输出格式:
一个正整数N
C语言源代码:
#include
int main()
{int k,n;
double sn=0.0;
scanf("%d",&k);
for(n=1;;n++)
{sn+=1.0/n;
if(sn>k)
break;
}
printf("%d",n);
return 0;
}
题目描述:
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。
输入格式:
输入一个数字(不一定是整数,小于100m),表示要游的目标距离。
输出格式:
输出一个整数,表示小玉一共需要游多少步。
C语言源代码:
#include
int main()
{
float x,b=2,k=2;
int i=1;
scanf("%f",&x);
for(i=1;i<=99999999;i++)
{if(k>x)break; //游的距离大于x米,break
else
{b*=0.98;
k+=b;
}
}
printf("%d",i);//i表示游多少步
return 0;
}
题目描述:
有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x<=7)开始算起,请问这样过了n天以后,小鱼一共累计游泳了多少公里呢?
输入格式:
输入两个整数x,n(表示从周x算起,经过n天,n在long int范围内)。
输出格式:
输出一个整数,表示小鱼累计游泳了多少公里。
C语言源代码:
#include
#define week 7
int main()
{
int x,n,day_distance=250,total_distance=0;
scanf("%d%d",&x,&n);//输入周x,经过n天
while(n--)
{
if(x<=5) total_distance+=day_distance;//如果该天不是双休日 ,小鱼就按照计划正常游泳
x=x%week+1;//将下一天的星期数赋值给x
}
printf("%d\n",total_distance);//输出小鱼在这n天的总航程
return 0;
}
题目描述:
试计算在区间 1到 n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1到11中,即在 1,2,3,4,5,6,7,8,9,10,111,2,3,4,5,6,7,8,9,10,11 中,数字 11 出现了 44 次。
输入格式:
2个整数n,x,之间用逗号隔开
输出格式:
1个整数,表示x出现的次数
C语言源代码:
#include
#include
int main()
{
char s[10]; //用来存储下一个数
int n=0;
int x=0;
int count = 0; //用来计数
scanf("%d %d", &n, &x);
for (int i = 1; i <= n; i++) { //i就是小于等于n的每一个整数
int temp = i; // 由于不能改变i的值,这里用临时变量代替
int k = 0; //作为字符数组的下标
//接下来将数字的每位转换为字符后放入字符串数组中
while (temp) {
s[k++] = temp % 10 + '0';
temp /= 10;
s[k] = '\0';
}
//接下来将字符数组中的每一位与待比对数字比较
for (int j = 0; j < strlen(s); j++) {
if (s[j] - '0' == x) count++; //需要转换为数字
}
}
printf("%d\n", count); //打印出来结果并换行
return 0;
}