C语言例题系列-------第十天

//19.100个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元,
//每3个小学生花1元,问大,中,小学生的人数分配共有多少种不同的解
//(去掉某类学生为零的解)? 
//这是我写的程序,答案是3种
/*#include<stdio.h>
int main()
{
int i,j,k;
int count=0;
for(i=1;i<20;i++)
{
for(j=1;j<33;j++)
{
for(k=3;k<300;k+=3)
{
  if(5*i+3*j+k/3==100&&i+j+k==100)
  { printf("大学生%d人,中学生%d人,小学生%d人",i,j,k);
    count++;
    printf("\n");
  }
}
}
}
printf("一共有%d种\n",count);
return 0;
}
*/
//这是答案给的程序,答案是6种
#include<stdio.h>
int main()
{
int a,b,c;
for(a=1;a<=20;a++)
for(b=1;b<=33;b++)
{
c=100-a-b;
if((5*a+3*b+c/3)==100)
printf("%d,%d,%d\n",a,b,c);
}
return 0;
}

//请认真比较这两种写法,
//20.S1=1,S2=1+3,S3=1+3+5,S4=1+3+5+7,......,SN=1+3+5+7......+(2N-1),
//N为正整数。编程求S1+S2+S3+S4+.....+SN的值<20000时的N的最大值。 
//这是我写的,答案是38
/*#include<stdio.h>
int main()
{   
	int s[100]={0,1};//此处定义的数组是S[100],100是我假定的一个大小,我觉得,100以内肯定可以得出答案,自己体会
	int i,sum=0;
	for(i=2;i<100;i++)
    {s[i]=s[i-1]+2*i-1;
	}
	for(i=1;i<100;i++)
	{
	sum+=s[i];
	if(sum>=20000)
	{printf("N的最大值为%d\n",i-1);
	break;
	}
	}
return 0;
}
*/
//这是答案给的代码,用函数调用写的,答案也是38
#include<stdio.h>
int func(int n)
{
int i,sum=0;
for(i=1;i<=n;i++)
sum=sum+2*i-1;
return(sum);
}

int main()
{
int sum=0,i=1;
while(sum<20000)
{
sum=sum+func(i);
if(sum>=20000)
break;
i++;
}
printf("N的最大值为%d\n",i-1);
return 0;
}
时间: 2024-12-21 18:11:10

C语言例题系列-------第十天的相关文章

C语言例题系列--------第十四天

//27.有一个整型二维数组,大小为m x n,要求找出其中最大值所在的行和列以及该最大值. //请编写一个函数max,要求如下: //(1)以数组名和数组大小为该函数的形参 //(2)数组元素的值在main函数中输入,结果在函数max中输出  /*#include<stdio.h> int max(int x[3][4],int m,int n) { int max=x[0][0]; int i,j; for(i=0;i<m;i++) for(j=1;j<n;j++) if(ma

C语言例题系列--------第十五天

//29.输入3行字符(每行60个字符以内),要 //求统计出其中共有多少大写字.小写字母.空格及标点符号  #include<stdio.h> #include<string.h> int main() {  char str[3][60],(*p)[60];  int i,j,up,low,space,comma;  up=0;low=0;space=0;comma=0;  printf("input three strings\n");  for(i=0;

C++语言笔记系列之十二——C++的继承

C++的继承 1.继承方式 public(公有继承) 派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员. 派生类的对象只能访问基类的public成员. protected(保护继承),private(私有继承) 派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员. 派生类的对象不能访问基类的任何成员. 2.例子 example 1: #include <iostream.h> clas

C++语言笔记系列之十六——赋值兼容规则&amp;多继承的二义性

1.赋值兼容规则 (1)派生类对象可以给基类对象赋值,这种情况下派生类对象将从基类继承的成员的值赋值给一个基类对象:但是不允许将一个基类的对象赋值给一个派生类. (2)可以将派生类对象的地址赋给基类指针,使基类指针指向派生类对象,通过基类指针引用成员时只可以引用派生类从基类继承而来的成员,而不允许引用派生类的新成员. (3)引用与指针相同. 2.多继承 (1)一个派生类从两个以上的基类中去继承. (2)说明: class 派生类名:继承方式 基类1, 继承方式 基类2,...... {派生类成员

C++语言笔记系列之十八——虚函数(1)

1.C++中的多态 (1)多态性:同一个函数的调用可以进行不同的操作,函数重载是实现多态的一种手段. (2)联编:在编译阶段进行联接,即是在编译阶段将一个函数的调用点和函数的定义点联接起来. A.静态联编:在编译阶段就完成的函数联编--函数重载. B.动态联编:在程序的运行阶段由系统自动选择具体的函数--虚函数. 注:C++的多态主要指的就是动态联编. 2.虚函数 (1)虚函数是在函数的定义时将其声明为虚函数即可. (2)说明:virtual 数据类型 函数名(参数表) {函数体} A.目的:当

C++语言笔记系列之十四——继承后的访问权限

1.析构函数不继承:派生类对象在析构时,基类析构函数的调用顺序与构造函数相反. 注:派生类对象建立时要调用基类构造函数,派生类对象删除时要调用基类析构,顺序与构造函数严格相反. 2.例子 example 1 #include <iostream.h> #include <math.h> class Point { public: Point(double a, double b, doule c) { x = a; y = b; z = c; } double Getx() {re

C++语言笔记系列之十五——派生类、基类、子对象的构造和析构函数调用关系

例子 example 1 注:若一个基类同时派生出两个派生类,即两个派生类从同一个基类继承,那么系统将为每一个简历副本,每个派生类独立地使用自己的基类副本(比如基类中有属于自己类的静态变量等). #include <iostream.h> class Person { public: person() {cout<<"Construction of person."<<endl;} ~person() {cout<<"Destr

C++语言笔记系列之十——静态成员

1.静态成员 (1)由关键字static修饰 静态变量定义语句在编译阶段就执行,运行过程中不再执行. (2)分类:静态数据成员.静态成员函数. (3)静态成员时类的所有对象共享的成员,而不是某一个对象的成员. 2.静态成员的使用 (1)在定义说明前加上static关键字.例如: static int x: (2)静态数据成员必须进行初始化,并且初始化必须在类外完成. (3)静态数据成员的初始化 数据类型 类名::静态数据成员名 = 值://注意这里没有static出现 (4)绝对不能使用对象名来

C++语言笔记系列之十九——虚函数(2)

1.构造函数和析构函数中调用虚函数 (1)采用静态编译. (2)在编译阶段自动联接自己类中的函数或基类中的函数,不在派生类中重定义一个函数. 注:构造函数和析构函数中调用的虚函数,派生类都不一定存在的情况下,只能去调用基类或者自身的函数. example 1 #include <iostream.h> class A { public: A() {} virtual void func() {cout<<"A construction."<<endl