for循环:
1整数的个数
给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。
#include <stdio.h>
int main(){
int k,n;
int sum=0;
int num=0;
int count=0;
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
scanf("%d",&n);
if(n==1)
sum++;
if(n==5)
num++;
if(n==10)
count++;
}
printf("%d\n%d\n%d",sum,num,count);
return 0;
}
2与指定数字相同的数的个数
输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为N和m,表示整数序列的长度(N<=100)和指定的数字;第2行为N个整数,整数之间以一个空格分开。输出为N个数中与m相同的数的个数。
#include <stdio.h>
int main() {
int N, m;
scanf("%d %d", &N, &m);
int count = 0;
for (int i = 0; i < N; i++) {
int num;
scanf("%d", &num);
if (num == m) {
count++;
}
}
printf("%d\n", count);
return 0;
}
3乘方计算
给出一个整数a和一个正整数n(−1000000≤a≤1000000,1≤n≤10000),求乘方image.png,即乘方结果。最终结果的绝对值不超过1000000。
#include <stdio.h>
int main(){
int a,n;
int num=1;
scanf("%d %d",&a,&n);
for(int i=0;i<n;i++)
{
num*=a;
}
printf("%d\n",num);
return 0;
}
4菲波那契数
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。
#include <stdio.h>
int main(){
int k,a[50];
scanf("%d",&k);
a[1]=1,a[2]=1;
if(k==1||k==2)
{
printf("%d",a[k]);
}
else
{
for(int i=3;i<=k;i++)
{
a[i]=a[i-2]+a[i-1];
}
printf("%d",a[k]);
}
return 0;
}
5鸡尾酒疗法,指“高效抗逆转录病毒治疗”。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。
#include <stdio.h>
int main() {
int n;
int a[20], b[20];
double k;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &a[i], &b[i]);
}
k = (double)b[0] / a[0] * 100;
for (int j = 1; j < n; j++) {
double m = (double)b[j] / a[j] * 100;
if ((m - k)>5) {
printf("better\n");
} else if ((k - m)>5) {
printf("worse\n");
} else {
printf("same\n");
}
}
return 0;
}
6津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
#include <stdio.h>
int main() {
int budget[12];
int money = 0;
int saved = 0;
// 读取12个月的预算
for (int i = 0; i < 12; i++) {
scanf("%d", &budget[i]);
}
for (int i = 0; i < 12; i++) {
money += 300;
if (money - budget[i] >= 100) {
int save = (money - budget[i]) / 100 * 100;
money -= save;
saved += save;
}
money -= budget[i];
if (money < 0) {
printf("-%d", i + 1);
return 0;
}
}
int total = money + saved + saved / 5;
printf("%d", total);
return 0;
}
7
对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。
共3行,第一行是每天开始时的药品总量m。
第二行是这一天取药的人数n(0<n<=100)。
第三行共有n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序)。
#include <stdio.h>
int main() {
int m;//药品总量
scanf("%d",&m);
int n;//取药人数
scanf("%d",&n);
int k[100];//每个病人取走药的数量
int cnt=0;//有多少人没取到药
for(int i=0;i<n;i++)
{
scanf("%d",&k[i]);
}
for(int j=0;j<n;j++){
if(m>=k[j]){
m-=k[j];
}
else{
cnt++;
}
}
printf("%d",cnt);
return 0;
}
8监护室每小时测量一次病人的血压,若收缩压在90-140之间并且舒张压在60-90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数。
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int max_continuous_normal = 0;
int current_continuous_normal = 0;
for (int i = 0; i < n; i++) {
int systolic, diastolic;
scanf("%d %d", &systolic, &diastolic);
if (systolic >= 90 && systolic <= 140 && diastolic >= 60 && diastolic <= 90) {
current_continuous_normal++;
if (current_continuous_normal > max_continuous_normal) {
max_continuous_normal = current_continuous_normal;
}
} else {
current_continuous_normal = 0;
}
}
printf("%d\n", max_continuous_normal);
return 0;
}
9给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。
#include <stdio.h>
int main(){
int n;
int cnt=0;
scanf("%d",&n);
int m;
for(int i=0;i<n;i++)
{
scanf("%d",&m);
int a=m/1000;
int b=(m-a*1000)/100;
int c=(m-a*1000-b*100)/10;
int d=(m-a*1000-b*100-c*10);
if((d-a-b-c)>0){
cnt++;
}
}
printf("%d",cnt);
return 0;
}
10求这个分数序列的前n项之和。
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
double sum = 0.0;
int p = 1, q = 2;
for (int i = 0; i < n; i++) {
sum += (double)q / p;
int next_q = q + p;
p = q;
q = next_q;
}
printf("%.4f\n", sum);
return 0;
}
11已知三个正整数a,b,c。现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同。
请问满足上述条件的x的最小值是多少?数据保证x有解。
#include <stdio.h>
int main() {
int a,b,c;
int x;
scanf("%d %d %d",&a,&b,&c);
for(x=2;;x++)
{
if(a%x==b%x&&b%x==c%x){
break;
}
}
printf("%d",x);
return 0;
}