. , . , . . 31 char, unsigned char, float.
: 1) ; 2) .
. , .
#include <stdio.h>
int sumi(int i,...)//
{int *num=&i; // 1-
int sum=0;
for(;i;i--) sum+=*(++num);// 2-
return sum;}
double sumd(int i,double d...)//
{double *ptr=&d; // 2- double
double sum=0.0;
for(;i;i--) // 1-
sum+=*(ptr++);
return sum;}
Void main()
{int a1=10,a2=20,a3=30,s1,s2;
s1=sumi(3,a1,a2,a3); // 3- a1,a2,a3
s2=sumi(6,1,a1,3,a2,a3,4); // 6-
double d1=5.7, d2=1.3,s3;
s3=sumd(4,d1,1.25,d2,2.5); // 4-
printf("s1=%d s2=%d s3=%.2lf\n",s1,s2,s3);}
:
s1=60 s2=68 s3=10.75
. , , .
#include <stdio.h>
#define term 0.0
double mult(double arg...) //
{double a=1.0, *ptr=&arg;
if(*ptr==0.0) return 0.0;
for(;*ptr!=term;ptr++)
a*=*ptr;
return a;}
Void main()
{double a=2.5,b=2.0,md1,md2;
md1=mult(a,b,0.3,term);
md2=mult(0.5,a,4.0,b,1.1,term);
printf("md1=%.2lf md2=%.2lf\n",md1,md2);}
:
md1=1.50 md2=11.00
, , , stdarg.h:
void va_start (va_list param, ) param .
type va_arg (va_list param,type) param type.
va_end (va_list param) ( return).
1.6 main()
main(), , . main() :
[] main(int argc, char **argv){...}
|
|
[] main(int argc, char **argv, char **envp){...}
[] main void int.
int argc .
char **argv ‑ , . , . argc. , argv[0], ( .exe).
char **envp ‑ . , .
main. , FAR, NC, VC, DN .
.
#include <stdio.h>
#include <conio.h>
int main(int argc,char**argv,char**envp)
{clrscr();
for(int i=0;i<argc;i++)
printf("argv[%d]=%s\n",i,argv[i]);
Getch();
puts(" ");
while(*envp) puts(*envp++);
Getch();
return 0;}
prog1.exe C:\. , c:\>prog1.exe my age 19, :
argv[0]=C:\PROG1.EXE
argv[1]=my
argv[2]=age
argv[3]=19
PROMPT=$p$g
COMSPEC=C:\WINDOWS\COMMAND.COM
PATH=C:\BC31\BIN
Proccessor_ArcHitecture=x86
Proccessor_identifier=x86 Family 15 Model 47
Proccessor_Level=15
...
.
.
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(int argc,char **argv)
{clrscr();
char str[]="Secret";
if(strcmp(argv[1],str)!=0)// 2-
{printf("Error\n"); getch(); return 1;}
printf("Programma ");
printf("%s %c.%c.\n",argv[2],argv[3][0],argv[4][0]);
int x, a=5, b=7,res1;
sscanf(argv[5],"%d",&x); //
res1=(a+b)*x; //(5+7)*100
printf("res1=%d\n",res1);
Getch();
return 0;}
prog2.exe C:\. Secret. :
c:\>prog1.exe Secret Petrov Ivan Ivanovich 100:
:
Programma Petrov I.I.
res1=1200
, Error, .
1.7
, , .. .
, .
.
long fact(int k) //
{if(k<0) return 0;
if (k==0} return 1;
return k* fact(k-1);}
Void main()
{int n=5; long F_n=fact(n);
|
|
printf (%d!=%ld,n,F_n);}
: 5!=120
k == 0, (1*fact (1-1)), k*(k-1)*(k-2)*(k-3)*(k-4)*1.
(inline- ) , . inline.
Inline- , .. . , .
.
inline float mod(float x,float y)//
{return sgrt(x*x+y*y);}
Void main()
{float f1=4.5, f2=-2.5, f3=-1.5,res1,res2;
res1=mod(f1,f2); // 5.1478
//res1=sgrt(f1*f1+f2*f2);
res2=mod(f1,f3); } // 4.743
//res2=sgrt(f1*f1+f3*f3); }
31 inline - : 1) ; 2) for, while, do, switch, goto. , .
. , q. , inline -.
inline void str() //
{char b; if(cin>>b&&b!='q') str();}
1.8 ,
, .
. , . 1.
#include <stdio.h>
int *func(int,int []); //
Void main()
{const N=5;
int *b,arr[N]={3,0,7,0,9}, n=0;
if((b=func(N,arr))!=NULL) //
{n++; *b=1;
printf("*b=%d b=%p\n",*b,b);}
printf(" %d \n",n);}
int *func(int n,int a[]) //
{for (int i=0;i<n;i++)
if(a[i]==0) return &a[i];
return NULL;}
:
*b=1 b=8ff2:0FF2
*b=1 b=8ff2:0FF8
=2
1.9
. . , , , , . , , .
.
#include <string.h>
#include <stdio.h>
struct STUD{char name[20];int age;};
Void f1(STUD a)
{strcpy(a.name,""); // a.name ""
a.age+=1;
printf("%s %d\n",a.name,a.age); } // 20
STUD f2(STUD b,STUD )
{if(b.age>.age) return b;
// , age
return ;}
void f3(STUD *p)
{strcpy(p->name,"");
p->age=21;
printf("%s %d\n", p->name, p->age);} // 21
STUD *f4(STUD *r1,STUD *r2)
{if(r1->age>r2->age) return r1;
// , age
return r2;}
Void main()
{STUD st1={"",19},st2={"",22},st3;
F1(st1);
printf("%s %d\n",st1.name,st1.age);// 19
st3=f2(st1,st2);
printf("%s %d\n",st3.name,st3.age); // 22
STUD st4={"",18},st5={"",25},*pst;
f3(&st4);
printf("%s %d\n",st4.name,st4.age); // 21
pst=f4(&st4,&st5);
|
|
printf("%s %d\n",pst->name,pst->age);} // 25
1.10
, .
, , .
( ). , .
.
#include <stdio.h>
int FF(int x,int y) {return x*x+y*y;}
long FF(long x, long y) {return x*x+y*y;}
float FF(float x, float y) {return x*x+y*y;}
Void main()
{int a1=3,a2=4,a3; long b1=20,b2=400,b3;
float d1=5.5,d2=7.5,d3;
a3=FF(a1,a2);
b3=FF(b1,b2);
d3=FF(d1,d2);
printf("a3=%d b3=%ld d3=%.2f\n", a3,b3,d3);}
:
a3=25 b3=160400 d3=86.50
. .
#include <stdio.h>
double mul(double x){return x*x*x;}
double mul(double x,double y){return x*y*y;}
double mul(double x,double y,double z){return x*y*z;}
Void main()
{double M1=mul(0.2);
double M2=mul(0.2,0.4);
double M3=mul(0.2,0.3,0.4);
printf("M1=%.4lf M2=%.4lf M3=%.4lf\n", M1,M2,M3);}
:
M1=0.0080 M2=0.0322 M3=0.0240
, , , .. . , , :