bin554385863 发表于 2019-4-30 23:05:18

小白学习C语言日记

本帖最后由 bin554385863 于 2019-5-5 16:23 编辑

2019.4.30 23:03
1-1
include <stdio.h>
//include是文件包含命令。作用是把系统目录下的stdio.h包含到本程序中。stdio.h是系统提供的头文件或者称为首部文件。

int main()
//main()是一个主函数名,表示这是一个主函数。一个可执行的C语言程序只允许有一个main函数
//main()函数中的内容必放在一对{}花括号中
{
    printf("Hello World\n");

    return 0;
}

1-2
#include<stdio.h>
#include<math.h>
main()//计算角度的余弦值
{
    double x,s; //声明两个双精度实数x和s

    printf("please input value of x:\n");
    //\n表示换行
    scanf("%lf", &x);
    //%lf是格式字符对应双精度浮点型double,%f对应单精度浮点型float。
    //float类型可以使用%lf格式,但不会有任何好处。
    //double类型如果使用了%f格式可能会导致输出错误。
    //float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。所以在输入输出时,一定要区分好double和float,而使用对应的格式符号。
    s=cos(x); //math中的余弦函数
    printf("cos(%lf)=%lf\n",x,s);

   
}


1-3-0

/*计算两个数的和*/
#include<stdio.h>
int add(int x, int y);//函数原型声明
main()
{
    int a, b, c;
    scanf("%d %d", &a , &b);
    printf("please input value of a and b:\n");//%d实证性对应的格式字符作用等同1-2的%lf
    c=add(a , b);//add()函数的使用
    printf("max=%d\n",c);

}
int add(int x, int y)//add()函数的定义
{
return(x+y);
}
//把函数声明和函数的定义放到一起也是可以的如1-3-1所示

1-3-1
/*计算两个数的和*/
#include<stdio.h>
int add(int x, int y)////函数原型声明+函数定义,注意后面没有分号
{
return(x+y);
};
main()
{
    int a, b, c;
    scanf("%d %d", &a , &b);
    printf("please input value of a and b:\n");//%d是整形对应的格式字符作用等同1-2的%lf
    c=add(a , b);//add()函数的使用
    printf("max=%d\n",c);

}

bin554385863 发表于 2019-5-1 16:37:59

本帖最后由 bin554385863 于 2019-5-5 16:26 编辑

2019.05.01 17:39
2-1

/*验证数据类型的字节长度*/
#include<stdio.h>
void main()
{
    char a1;
    short b1;
    int c1;
    long d1;
    float e1;
    double f1;
    printf("size of (char)=%d\n", sizeof(a1));
    printf("size of (short)=%d\n", sizeof(b1));
    printf("size of (int)=%d\n", sizeof(c1));
    printf("size of (long)=%d\n", sizeof(d1));
    printf("size of (float)=%d\n", sizeof(e1));
    printf("size of (double)=%d\n", sizeof(f1));//sizeof()实际上是获取了数据在内存中所占用的存储空间,以字节为单位来计数。
    //程序中整形类型的字节长度即与机器有关,也与编译器有关。
}

运行结果
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-24houlba.0b4' '--stdout=Microsoft-MIEngine-Out-i121ef3k.sch' '--stderr=Microsoft-MIEngine-Error-crlh1xux.uns' '--pid=Microsoft-MIEngine-Pid-1n5zzs54.b04' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
size of (char)=1
size of (short)=2
size of (int)=4
size of (long)=4
size of (float)=4
size of (double)=8
PS E:\Administrator\Documents\Visual Studio 2019>
***************************************************************************************************************************************************************************************************

2-2
C语言中区分字母大小写
标识符不能和C语言关键字,C语言库函数还有用户自定义的函数同名

变量名是变量值在内存空间中的地址
指针存储的是一个内存空间的地址
变量名就像门牌号,内存空间就像一栋楼房,指针就像你家的详细地址

/*变量的取值范围测试*/
#include<stdio.h>
void main()
{
    int a=32766, b=-32766;
    unsigned m=6553;
    float t=3.4e+37;
    printf("a=%d\n",a);
    printf("m=%u\n",m);//u%对应的是无符号实数
    printf("t=%e\n",t);//%e对应的是指数型实数

    a=a+4;
    b=b+6;
    m=m*10+10;
    t=t*10;
    printf("after change:\n");
    printf("a+4=%d\n",a);
    printf("b-6=%d\n,",b);
    printf("m*10+10=%d\n,",m);
    printf("t*10=%d\n,",t);
}
=======================================================================================================

运行结果
a=32766
m=6553
t=3.400000e+037
after change:
a+4=32770
b-6=-32760
,m*10+10=65540
,t*10=-1073741824
,
PS E:\Administrator\Documents\Visual Studio 2019>
**********************************************************************************************************

2-3
/*整形常量的不同表示方法*/
#include<stdio.h>
void main()
{
    printf("十六进制0x80的十进制值为:%d\n",0x80);
    printf("八进制的0200的十进制值为:%d\n",0200);
    printf("十进制的128的十进制值为:%d\n",128);
    printf("十进制128的十六进制值为:%x\n",128);//%x表示以十六进制输出
    printf("十进制128的八进制值为:%o\n",128);//%o表示已八进制输出
}

bin554385863 发表于 2019-5-1 17:40:58

本帖最后由 bin554385863 于 2019-5-6 01:44 编辑

运行结果:
鍗佸叚杩涘埗0x80鐨勫崄杩涘埗鍊间负:128
鍏繘鍒剁殑0200鐨勫崄杩涘埗鍊间负:128
鍗佽繘鍒剁殑128鐨勫崄杩涘埗鍊间负:128
MMP中文输出有问题,还有一横被论坛吞了
************************************************************************************************************************************

2019年5月2日15:08:00

2-4-0

/*字符常量与其顺序值得关系*/
#include<stdio.h>
void main()
{
   printf("%d---->%c\n",'A','A');
   printf("%d---->%c\n",'A'+5,'A'+5);
   printf("%d---->%c\n",'A'+32,'A'+32);
   printf("%d----.%c\n",'A'+70,'A'+70);//字符'A'+70的值溢出
   
}
=================================================================================================
结果
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-qjeqdptp.ypo' '--stdout=Microsoft-MIEngine-Out-5n5todzq.4dk' '--stderr=Microsoft-MIEngine-Error-vkib3jwx.vgn' '--pid=Microsoft-MIEngine-Pid-dyxrul3w.w13' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
65---->A
70---->F
97---->a
135----.?数值超出char的取值范围导致不可预知的结果
PS E:\Administrator\Documents\Visual Studio 2019>
**********************************************************************************************************************************************************
2-4-1

/*字符与字符串常量的区别*/
#include<stdio.h>
void main()
{char a='a';
    printf("size of 'a'=%d\n",sizeof(a));//由运行结果可以看出字符变量char在内存中占用一个字节
    printf("size of \"a\"=%d\n",sizeof("a"));//字符串常量"a"占用两个字节,之所以这样是因为系统会自动在字符串常量后面加上一个串结束标志\0,所以程序中n个字符的字符串常量在内存中占用n+1个字节存储空间
}

===========================================================================================================================
结果
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-zr1fmpkr.xsg' '--stdout=Microsoft-MIEngine-Out-htfocegt.mxq' '--stderr=Microsoft-MIEngine-Error-4tifxhy4.zyz' '--pid=Microsoft-MIEngine-Pid-cwcmaprx.lzr' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
size of 'a'=1
size of "a"=2
PS E:\Administrator\Documents\Visual Studio 2019>
*******************************************************************************************************************************

2-5-0

#include<stdio.h>
void main()//了解转义字符的作用
{
    printf("\a"//发出铃声
    "this is a test:\n"
    "Ready::"
    "\bBackspace\n"//向左退一格
    "\tHorizontal tab\n"//向右进到下一个制表点
    "\\\n"
    "\?\n"
    "\'\n"
    "\"\n"
    "\101\n"
    "\x41\n");
    //输出\ ? ' " A A "
}
==========================================================================================================================
结果
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-zddcj2mq.yc1' '--stdout=Microsoft-MIEngine-Out-nnimcc15.0g2' '--stderr=Microsoft-MIEngine-Error-n21mwavm.i2k' '--pid=Microsoft-MIEngine-Pid-fqrclk0e.vgj' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
this is a test:
Ready:Backspace
      Horizontal tab
\
?
'
"
A
A
PS E:\Administrator\Documents\Visual Studio 2019>
**************************************************************************************************************************************************************

2-6-0

/*符号常量的使用*/
#include<stdio.h>
#define WHO "i am a student"//#号别忘了
#define HOW "that is fine"
#define PI 3.141592653

void main()
{
    printf("%s\n",WHO);
    printf("%s\n",HOW);
    printf("%f\n",PI);
}
=======================================================================================================
结果
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-geyi5024.ohp' '--stdout=Microsoft-MIEngine-Out-q0hkse2h.3te' '--stderr=Microsoft-MIEngine-Error-m0axfn42.gh4' '--pid=Microsoft-MIEngine-Pid-sa2whvmm.e13' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
i am a student
that is fine
3.141593
PS E:\Administrator\Documents\Visual Studio 2019>
**********************************************************************************************************************************************************

2-7-0

/*了解算术运算符组成的表达式*/
#include<stdio.h>
void main()
{
    int a,b,c,d1,d2,d3,d4;
    double x,y,z1,z2,z3;
    a=8;
    b=3;
    c=10;
    d1=a+b*c/a+b%c*a;
    d2=a+(b*c)-(b/a)+(b%c*a);
    printf("d1=%d,d2=%d\n",d1,d2);
    d3=a/b;
    d4=c%b;
    printf("8/3=%d, 10/3=%d\n",d3,d4);
    x=3.2;
    y=2.4;
    z1=x+y/x-y;
    z2=x+(y/x)-y;
    printf("z1=%f, z2=%f\n",z1,z2);
    z3=y/b;
    printf("2.4/3=%f\n",z3);

}
===========================================================================================================
结果
                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-hxkcipfm.ocx' '--stdout=Microsoft-MIEngine-Out-zgwgudkb.5ol' '--stderr=Microsoft-MIEngine-Error-erpzitpv.hsy' '--pid=Microsoft-MIEngine-Pid-frmujo4n.rdl' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
d1=35,d2=62
8/3=2, 10/3=1
z1=1.550000, z2=1.550000
2.4/3=0.800000
PS E:\Administrator\Documents\Visual Studio 2019>
**************************************************************************************************************************

2019年5月2日22:11:20

2-8-0
/*了解前置++/--和后置++/--的作用*/
#include<stdio.h>
void main()
{
    int a,b;
    double x,y,x1,y1,x2,y2,z;
    a=16;
    x=12.6;
    x1=++a;
    y1=++x;
    printf("1---->x1=%d, y1=%2.2lf\n",a,x);
    x2=a++;
    y2=x++;
    printf("2---->x2=%d, y2=%2.2lf\n",a,x);
    b=a++;
    y=x++;   
    printf("3---->b=%d, y=%2.2lf\n4---->a=%d, x=%2.2lf\n",b,y,a,x);

}
==============================================================================================================================
结果
                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-2naobsea.l1o' '--stdout=Microsoft-MIEngine-Out-u5jtre31.mue' '--stderr=Microsoft-MIEngine-Error-zjskygnu.3gf' '--pid=Microsoft-MIEngine-Pid-r1g15eob.t1u' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
1---->x1=17, y1=13.60说明++a是先自增后赋值
2---->x2=18, y2=14.60
3---->b=18, y=14.60说明a++是先赋值在自增(我也不知道咋看出来的{:5_104:} )
4---->a=19, x=15.60
PS E:\Administrator\Documents\Visual Studio 2019>

bin554385863 发表于 2019-5-3 14:31:42

本帖最后由 bin554385863 于 2019-5-5 16:39 编辑

2019年5月3日14:31:42

2-15-0

/*三目运算符和逻辑运算符的使用。或‖--->一真全真;且&&(书里翻译叫做与,我更喜欢叫它且)一假全假。*/
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int a;
    int b,c;
    int d,e,f;
    scanf("%d\n%d",&a,&b);
    c=(a>=b)?a:b;
    d=a&&!((a-b)>0);
    f=!(a-b);
    printf("max of %d and %d is:%d\t\n",a,b,c);
    printf("%d&&(!(%d-%d)>0)=%d\t\n",a,a,b,d);
    printf("!(%d-%d)=%d\t\n",a,b,f);

}
==========================================================================================================
结果
                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-puz5tgoa.cvq' '--stdout=Microsoft-MIEngine-Out-eqz01tog.ewz' '--stderr=Microsoft-MIEngine-Error-xvrwkfc2.dx3' '--pid=Microsoft-MIEngine-Pid-skaxczb2.gd0' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
456
654
max of 456 and 654 is:654
1&&(!(456-654)>0)=0
!(456-654)=0
PS E:\Administrator\Documents\Visual Studio 2019>
************************************************************************************************************************

2-20-0

/*了解数据输出的常用格式*/
#include<stdio.h>
void main()
{
    int a=1234, b=23456;
    long c=345678;
    unsigned int d=4567890;
    char e='A';
    double f=314.15926535898;

    printf("\t1---->Output data in default format:\n\t");//按默认格式输出数据
    printf("a=%d,b=%d,c=%ld,d=%u\n\t",a,b,c,d);
    printf("e=%c,f=%f,f=%e\n\t------------------------------------\n\t",e,f,f);

    printf("2---->Output data by specified width:\n\t");//按指定宽度输出字符
    printf("e=%3c,e=%03c\n\t---------------------------------------\n\t",e,e);

    printf("3---->Output integers by specified width\n\t");//按指定宽度输出整形数
    printf("a=%3d,b=%4d,c=%4ld,d=%5u\n\t",a,b,c,d);
    printf("a=%7d,b=%7d,c=%8ld,d=%9u\n\t",a,b,c,d);
    printf("a=%07d,b=%07d,c=%08ld,d=%09u\n\t--------------------------------------------\n\t",a,b,c,d);

    printf("4---->Output floating-point type number by specified width");//按指定宽度输出浮点型数
    printf("f=%8.2f,f=%12.2e\n\t",f,f);
    printf("f=%4.2f,f=%4.2e\n\t",f,f);

}
============================================================================================================
结果
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-hyupllrw.4vk' '--stdout=Microsoft-MIEngine-Out-ntqnlv1a.vzv' '--stderr=Microsoft-MIEngine-Error-kkco1fkj.2j5' '--pid=Microsoft-MIEngine-Pid-dj4r2bkj.oht' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
      1---->Output data in default format:
      a=1234,b=23456,c=345678,d=4567890
      e=A,f=314.159265,f=3.141593e+002
      ------------------------------------
      2---->Output data by specified width:
      e=A,e=00A
      ---------------------------------------
      3---->Output integers by specified width
      a=1234,b=23456,c=345678,d=4567890
      a=   1234,b=23456,c=345678,d=4567890
      a=0001234,b=0023456,c=00345678,d=004567890
      --------------------------------------------
      4---->Output floating-point type number by specified widthf=314.16,f=   3.14e+002
      f=314.16,f=3.14e+002

PS E:\Administrator\Documents\Visual Studio 2019>
{:5_104:} {:5_104:} {:5_104:} 看得我头大,用了十几分钟来记住熟悉
********************************************************************************************************************************************************

2-25-0

//字符输入输出函数的用法
#include<stdio.h>
#include<conio.h>
void main()
{
    char ch1,ch2;
    ch1=getch();//读取键盘输入的字符存在缓冲区且不在屏幕显示
    ch2=getchar();//读取键盘输入的字符存在缓冲区且显示在屏幕上
    putch(ch1);//从缓冲区读取数据并显示在屏幕上
    printf(\n);
    putchar(ch2);//将ch2的值输出在屏幕上
    printf("\nch1=%c\nch2=%c\n",ch1,ch2);
}
========================================================================================================================
                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-jigkrari.f3t' '--stdout=Microsoft-MIEngine-Out-eaubwoxf.aau' '--stderr=Microsoft-MIEngine-Error-0bks4lkt.4mk' '--pid=Microsoft-MIEngine-Pid-jtcwfukk.wnr' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
2//输入的ch1没在屏幕显示
1
2
ch1=1//显示了ch1
ch2=2
PS E:\Administrator\Documents\Visual Studio 2019>
*********************************************************************************************************************

2-26-0
栗子1

计算两个复数的差
#include<stdio.h>
void main()
{
    float a,b,x,y;
    printf("Please input the a and b of first complex:\n");
    scanf("%f\n%f",&a,&b);
    printf("The first complex is:(%5.2f+%5.2fi)",a,b);
    printf("Please input the x and y of second complex:\n");
    scanf("%f\n%f",&x,&y);
    printf("The second complex is:(%5.2f+%5.2fi)",x,y);
    printf("Diffrence is :\n(%6.2f+%6.2fi)\n",a-x,b-y);

}
==========================================================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-dkkpixvl.wsb' '--stdout=Microsoft-MIEngine-Out-03ci2cnr.3kx' '--stderr=Microsoft-MIEngine-Error-zs01jor4.ckh' '--pid=Microsoft-MIEngine-Pid-yrtigsbj.53j' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
Please input the a and b of first complex:
4
5
The first complex is:( 4.00+ 5.00i)Please input the x and y of second complex:
3
1
The second complex is:( 3.00+ 1.00i)Diffrence is :
(1.00+4.00i)
PS E:\Administrator\Documents\Visual Studio 2019>
*************************************************************************************************
栗子2

//求三个数的平均值
#include<stdio.h>
void main()
{
    float a,b,c,average;
    printf("please input three numbers:\n");
    scanf("%f%f%f",&a,&b,&c);
    average=(a+b+c)/3;
    printf("The average value is:%7.2f\n",average);

}
=======================================================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-ybbmgz0j.t5b' '--stdout=Microsoft-MIEngine-Out-ecxglkya.055' '--stderr=Microsoft-MIEngine-Error-io1qbrlc.o3o' '--pid=Microsoft-MIEngine-Pid-yrpxo33v.zso' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
please input three numbers:
9.321
2.258
5555
The average value is:1855.53
PS E:\Administrator\Documents\Visual Studio 2019>
*********************************************************************************************************************

习题
1,输入两个数求它们的和差商积余。

#include<stdio.h>
void main()
{
    int x,y;
    printf("please input two numbers\n");
    scanf("%d%d",&x,&y);//MMP总是忘记地址操作符
    printf("%d-%d=%d\n",x,y,x-y);
    printf("%d+%d=%d\n",x,y,x+y);
    printf("%d/%d=%d---%d\n",x,y,x/y,x%y);
    printf("%d*%d=%d",x,y,x*y);
}
============================================================================================================
                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-gd50f43m.uel' '--stdout=Microsoft-MIEngine-Out-qzpfba0d.tby' '--stderr=Microsoft-MIEngine-Error-2gbu255m.oom' '--pid=Microsoft-MIEngine-Pid-g4a4d13k.4jf' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
please input two numbers
98
25
98-25=73
98+25=123
98/25=3---23
98*25=2450
PS E:\Administrator\Documents\Visual Studio 2019>
*********************************************************************************************************

练习

输入三角形的三条边求它的面积
//输入三条三角形边长,计算它的面积

#include<stdio.h>
#include<math.h>
void main()
{
    float a,b,c,x,y,Area;
    scanf("%f%f%f",&a,&b,&c);
    if (a<=0||b<=0||c<=0)
    {
      printf("你家的三角形边长是负数的吗?");
    }
    else if ((a+b)>c&&(a+c)>b&&(b+c)>a)
    {
      x=(a*a+b*b-c*c)/(2*a*b);
      y=sqrt(1-x*x);
      Area=(a*b*y)/2;
      printf("The area of a triangle is:%.3f",Area);
    }
      else
      {
            printf("你确定这能画出三角形?");
      }
      
}

bin554385863 发表于 2019-5-4 14:21:25

本帖最后由 bin554385863 于 2019-5-5 16:20 编辑

2019年5月4日13:14:07

小结:
        一个C语言程序中只能存在一个main()函数,语句结束后要用分号;结束,一对花括号括起来的的代码表示一个语句块,且所有符号都必须是英文的。
       
        %(m)d        将数据以宽度为m的整形输出,宽度不足空格补齐。

        %0md        将数据以宽度为m的整形输出,宽度不足以0补齐。

        %m.nf        将数据以宽度为m,保留n位小数的单浮点数输出,宽度包含小数点。

        %m.nlf        将数据以宽度为m,保留n位小数的双浮点数输出,宽度包含小数点。

        %o                将数据以八进制输出。
       
        %x                将数据以十六进制输出。

        %u                将数据以无符号整型输出

        %e        %E        科学计数法输出数据.
       
        %g        %G        使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数.

        %c                 输出单个字符.

        %s                 输出字符串.

**************对于数字都可以以%[宽度包括小数点] . [有效数字位数][格式字符]的形式输出,宽度不够默认以空格补充,宽度前面加0后表示以0补充.
#include<stdio.h>
void main()
{
    float a = 3.141592653;
    printf("%f\n%0.2f\n%09.4f\n%5.4f\n",a,a,a,a);
}

                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-nfekeleo.d1r' '--stdout=Microsoft-MIEngine-Out-24n1j5g0.eew' '--stderr=Microsoft-MIEngine-Error-3qomv2yt.loh' '--pid=Microsoft-MIEngine-Pid-vdlejhm5.hvj' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
3.141593        默认float输出.
3.14                保留两位有效小数输出.
0003.1416        宽度为9,保留4为有效数字输出,数字不够以0补齐.
3.1416        当有效数字加上小数点>=指定宽度时,默认宽度输出.
PS E:\Administrator\Documents\Visual Studio 2019>

#include<stdio.h>
void main()
{
    int a = 965775;
    printf("%o\n%x\n%X\n",a,a,a,a);
}

                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-3hdd3pmt.dsh' '--stdout=Microsoft-MIEngine-Out-4urtulyi.hnw' '--stderr=Microsoft-MIEngine-Error-fztkeeck.c2s' '--pid=Microsoft-MIEngine-Pid-aiyjlau0.xiy' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
3536217        %o八进制输出
ebc8f   %x小写字母十六进制输出
EBC8F   %X大写字母十六进制输出
PS E:\Administrator\Documents\Visual Studio 2019>
***************************************************************************************************************************************************************************************************************************
        scanf("%格式字符 %格式字符 ..... %格式字符" ,&变量 ,& 变量 , ......& 变量),变量的形式必须与格式字符一一对应,多个变量用逗号隔开且地址操作符&不能少)
scan()双引号内最后不要加入普通字符,否则输入的时候也应该输入相应的字符


%*[格式字符]                表示跳过读取的数据

bin554385863 发表于 2019-5-4 15:29:27

本帖最后由 bin554385863 于 2019-5-5 16:47 编辑

2019年5月4日15:25:10

第三章

3.1.0
        输入三个数并求取其中最小值
.先输入三个数分别赋值给变量a,b,c
.比较a和b的值把较小的那个数赋值给变量min中
.比较min与c的值,把较小的值赋值给min
.输出min的值

/*输入三个数并找出其中最小的*/
#include<stdio.h>
void main()
{
    int a , b , c , min , max ;
    scanf("%d%d%d",&a,&b,&c);
    if ((a == b)||(b == c)||(a == c))
    {
      printf("Dot input same number");
    }
    else if ((b < a)&&(b < c))
    {
      min = b ;
      printf("min = %d",min);
    }
    else if ((a < b)&&(a < c))
    {
      min = a ;
      printf("min = %d",min);
    }
    else if ((c<a)&&(c < b))
    {
      min = c ;
      printf("min = %d",min);
    }
}

bin554385863 发表于 2019-5-4 19:00:28

本帖最后由 bin554385863 于 2019-5-5 16:44 编辑

2019年5月4日19:00:51

3.7.0

/*输入百分制成绩,按五分制输出*/
#include<stdio.h>
void main()
{
    int s ;
    scanf("%d",&s);

    if ((s < 0) || (s > 100))
    {
      printf("The full score is 100! Please enter valid results!");
    }
    else if (s>=90)
      {
            printf("%c",'A');
      }
      else if ((s < 90) && (s >= 80))
            {
                printf("%c",'B');
            }
            else if ((s < 80) && (s >= 70))
                {
                  printf("%c",'C');
                }
                else if ((s < 70) && (s >= 60))
                  {
                        printf("%c",'D');
                  }
                  else if (s <= 60)
                        {
                            printf("%c",'E');
                        }
}
====================================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-a44xkxdy.tzr' '--stdout=Microsoft-MIEngine-Out-d3m2atdv.rhy' '--stderr=Microsoft-MIEngine-Error-t0h0fmkf.kky' '--pid=Microsoft-MIEngine-Pid-dihnxps2.po1' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
200
The full score is 100! Please enter valid results!
PS E:\Administrator\Documents\Visual Studio 2019>
****************************************************************************************************************

3.8.0

判断一个数是不是素数
/*从键盘输入一个整数,判断他是不是素数*/
#include<stdio.h>
#include<math.h>
void main()
{
    int num , a ;
    scanf("%d",&num) ;
    for(int i = 2; i < num; i++)
    {
      if (num%i==0)
      {
            a++;//当num不是素数时,a的值增加
      }
    }   
      if (a == 0)
      {
            printf("%d is a prime number",num) ;//a=0表示num就是素数
      }
      else
      {
            printf("%d is not a prime number",num) ;
      }
   
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-fjcbh5pn.h5j' '--stdout=Microsoft-MIEngine-Out-awserv5o.a0k' '--stderr=Microsoft-MIEngine-Error-bxssw0il.rc1' '--pid=Microsoft-MIEngine-Pid-gaejplxu.xyo' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
9999
9999 is not a prime number
PS E:\Administrator\Documents\Visual Studio 2019>
*******************************************************************************************************************************************************************

/*输入一个年份,判断其是不是闰年*/
#include<stdio.h>
void main()
{
    int year ;
    scanf("%d",&year) ;
    if (year <= 0)
    {
      printf("Please enter the correct year ");
    }
    else if ((year%100==0) || ((year%4==0) && (year%100!=0)))
    {
      printf("%d is leap year",year);
    }
      else
      {
            printf("%d isnot leap year",year);
      }
}
--------------------------------------------------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-l2qx0ncs.nbc' '--stdout=Microsoft-MIEngine-Out-iwa2jejm.4vi' '--stderr=Microsoft-MIEngine-Error-0drctcss.cgj' '--pid=Microsoft-MIEngine-Pid-hztxowha.ah1' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
1579
1579 isnot leap year
PS E:\Administrator\Documents\Visual Studio 2019>

**********************************************************************************************************************
输入四个整型数字并对其排序

/*输入a,b,c,d四个数并对其排序,最笨的办法*/
#include<stdio.h>
int bigger(int x, int y)
{
    return((x>=y)?x:y);
}

int smaller(int x, int y)
{
    return((x<y)?x:y);
}

void main()
{
    int a, b, c, d, x, y, z, w ;
    int x1, y1, z1, w1, x2, y2, z2, w2 ;

    scanf("%d%d%d%d",&a,&b,&c,&d);
    x = bigger(a,b);
    y = smaller(a,b);
    z = bigger(c,d);
    w = smaller(c,d);

    x1 = bigger(a,c);
    y1 = smaller(a,c);
    z1 = bigger(b,d);
    w1 = smaller(b,d);

    x2 = bigger(a,d);
    y2 = smaller(a,d);
    z2 = bigger(b,c);
    w2 = smaller(b,c);

    if (y>=z)
    {
      printf("%d>=%d>=%d>=%d",x,y,z,w);
    }
    else if (w>=x)
    {
      printf("%d>=%d>=%d>=%d",z,w,x,y);
    }
    else if (y1 >= z1)
    {
      printf("%d>=%d>=%d>=%d",x1,y1,z1,w1);
    }
    else if (w1 >= x1)
    {
      printf("%d>=%d>=%d>=%d",z1,w1,x1,y1);
    }
    else if (y2 >= z2)
    {
         printf("%d>=%d>=%d>=%d",x2,y2,z2,w2);
    }
    else if (w2 >= x2)
    {
         printf("%d>=%d>=%d>=%d",z2,w2,x2,y2);
    }
   
   
}
========================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-s4e5wi21.t32' '--stdout=Microsoft-MIEngine-Out-svb34scz.a3l' '--stderr=Microsoft-MIEngine-Error-b4xmqb4b.xdq' '--pid=Microsoft-MIEngine-Pid-4ugzz45q.bro' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
2322
8885
475
1
8885>=2322>=475>=1
PS E:\Administrator\Documents\Visual Studio 2019>
=============================================================================
/*四数排序简洁版*/
#include<stdio.h>
void main()
{
    int a, b, c, d, e ;//e是数据交换的中间数
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if (a<b)
    {
      e=a;//数字交换从e开始
      a=b;
      b=e;//也必须以e结尾,否则会出现错误的结果
    }
    if (a<c)
    {
      e=a;
      a=c;
      c=e;
    }
    if (a<d)
    {
      e=a;
      a=d;
      d=e;
    }
    if (b<c)
    {
      e=b;
      b=c;
      c=e;
    }
    if (b<d)
    {
      e=b;
      b=d;
      d=e;
    }
    if (c<d)
    {
      e=c;
      c=d;
      d=e;
    }
    printf("大小顺序是:%d %d %d %d",a,b,c,d);
}

bin554385863 发表于 2019-5-5 17:09:05

本帖最后由 bin554385863 于 2019-5-6 01:36 编辑

2019年5月5日17:09:20

第四章

4.1
/*从小到大保存a和b的值*/
#include<stdio.h>
void main()
{
    float a, b, t ;
    printf("请输入a和b的值\n");
    scanf("%f%f",&a,&b);
    if (a>b)
    {
      t = a;
      a = b;
      b = t;
      
    }
    printf("a = %f\nb = %f",a,b);
}
=====================================================================================
6
3
a = 3.000000
b = 6.000000
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-erwpygem.lnf' '--stdout=Microsoft-MIEngine-Out-stdgthml.gxj' '--stderr=Microsoft-MIEngine-Error-gdfjweyc.vde' '--pid=Microsoft-MIEngine-Pid-ce0yywk5.lpx' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入a和b的值
3.2
3.2
a = 3.200000
b = 3.200000
PS E:\Administrator\Documents\Visual Studio 2019>
***********************************************************************************************************************************************

4.2

/*程序中对浮点型数字使用了if(a>b)的形式,实际上关系运算符并不适合浮点数,当两个个浮点数相差不大时,有可能出现与程序运行结果实际情况不符合.*/
#include<stdio.h>
void main()
{
    double a = 0.2 ;
    double b = a+0.1;
    b = b-0.1;
    printf("a = %f b = %f\n",a,b);
    if (a==b)
    {
      printf("a==b---正确\n");
    }
    else if (a > b)
    {
      printf("a > b---错误\n");
    }
    else
    {
      printf("a < b---错误\n");
    }
   
   
   
}
===================================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-iyaijbkp.r2l' '--stdout=Microsoft-MIEngine-Out-mgsjfznt.cnt' '--stderr=Microsoft-MIEngine-Error-rf1oqwnv.ikt' '--pid=Microsoft-MIEngine-Pid-rslv125r.ezn' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
a = 0.200000 b = 0.200000
a < b---错误
PS E:\Administrator\Documents\Visual Studio 2019>

显然运行结果和实际情况并不符合
如何比较浮点数大小,请参考书籍资料
******************************************************************************************************************************

4.3

/*输入一个整数,求它的绝对值*/
#include<stdio.h>
void main()
{
    int a ;
    scanf("%d",&a);
    if (a < 0)
   
      a = -a;
   
    printf("|a| = %d",a);
}
==================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-udygli0l.wna' '--stdout=Microsoft-MIEngine-Out-5wh5ela2.zpq' '--stderr=Microsoft-MIEngine-Error-v342qse5.m04' '--pid=Microsoft-MIEngine-Pid-gff1zrx1.20w' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
-90
|a| = 90
PS E:\Administrator\Documents\Visual Studio 2019>

虽然当if后面只有一个语句是 可以不加花括号,但是我并不建议这样做.
************************************************************************************************************

4.3
猜数字游戏

/*通过rand()获得计算机的伪随机数字*/
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int num, rNum ;
    scanf("%d",&num);
    rNum = rand();
    if (num == rNum)
    {
      printf("恭喜你猜对了\n答案是: %d",rNum);
    }
    else
    {
      printf("很抱歉你猜错了\n答案是: %d",rNum);
    }
   
}
=================================================================================================================
41
恭喜你猜对了
答案是: 41
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-orzyo0dn.4yd' '--stdout=Microsoft-MIEngine-Out-ftlujrvu.o1v' '--stderr=Microsoft-MIEngine-Error-jvzlqqzm.4kv' '--pid=Microsoft-MIEngine-Pid-0ipytmfc.vus' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
41
恭喜你猜对了
答案是: 41
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-ysxv3bpy.t5d' '--stdout=Microsoft-MIEngine-Out-vaazjjp3.c3c' '--stderr=Microsoft-MIEngine-Error-kbafrlec.t3h' '--pid=Microsoft-MIEngine-Pid-lfdokeb3.gum' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
41
恭喜你猜对了
答案是: 41
PS E:\Administrator\Documents\Visual Studio 2019>

每次产生的随机数都是一样的!!!!!

如要产生范围内的随机数num,可用:int num=rand()%(n-m+1)+m
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*通过srang()和time()获得真正的随机数*/
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int num, rnum ;
    scanf("%d",&num);
    srand(time(NULL));
    rnum = rand();
    if (num == rnum)
    {
      printf("恭喜你猜对了");
    }
    else
    {
      printf("很遗憾,你猜错了\n答案是:%d",rnum);
    }
   
   
}
=========================================================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-fct4xo0h.x3o' '--stdout=Microsoft-MIEngine-Out-4rer5hxn.zha' '--stderr=Microsoft-MIEngine-Error-pz0mdweb.1mr' '--pid=Microsoft-MIEngine-Pid-rr4u5exf.h1l' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
8533
很遗憾,你猜错了
答案是:5632
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-ds35odrz.whi' '--stdout=Microsoft-MIEngine-Out-r3ryczek.31s' '--stderr=Microsoft-MIEngine-Error-ctiba13h.z5d' '--pid=Microsoft-MIEngine-Pid-n2kaazcl.5e5' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
41
很遗憾,你猜错了
答案是:5864
PS E:\Administrator\Documents\Visual Studio 2019>
提到的函数:
rand()
srand()
time()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*猜数字游戏-----自定义的随机数范围*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
    int num, rnum, a, b, x ;
    printf("请输入随机数的上限和下限\n");
    scanf("%d%d",&a,&b);
    if ((abs(a - b) < 10) || (a <= 0) || (b <= 0))
    {
      printf("数值差距过小或不是正整数");
    }
    else if (a < b)
      {
            x = b;
            b = a;
            a = x;
            srand(time(NULL));
            rnum = rand()%(a-b+1)+b;
            printf("请输入猜测的数字");
            scanf("%d",&num);
            if (num == rnum)
            {
                printf("恭喜你猜对了");
            }
            else
            {
                printf("很遗憾,你猜错了\n答案是:%d",rnum);
            }
      }
   
}
===================================================================================================================================
-9
-100
数值差距过小或不是正整数
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-3gko5qg5.jid' '--stdout=Microsoft-MIEngine-Out-jxml1hmu.zum' '--stderr=Microsoft-MIEngine-Error-5p3zwwse.hgi' '--pid=Microsoft-MIEngine-Pid-uunh3t0s.ttm' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入随机数的上限和下限
10
-10
数值差距过小或不是正整数
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-bygb4oom.kff' '--stdout=Microsoft-MIEngine-Out-uw5huyeq.45g' '--stderr=Microsoft-MIEngine-Error-fjb4ufqt.jo2' '--pid=Microsoft-MIEngine-Pid-15gjbxqy.sni' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入随机数的上限和下限
20
30
请输入猜测的数字2
很遗憾,你猜错了
答案是:22
PS E:\Administrator\Documents\Visual Studio 2019>

abs(int):求整形数的绝对值
fabs(float):求浮点数的绝对值
********************************************************************************************************************
4.11

求一元二次方程ax^2+bx+c=0的根

/*求一元二次方程的根*/
#include<stdio.h>
#include<math.h>
void main()
{
    double a, b, c, x1, x2, derta, y, z ;
    printf("请输入方程系数\n");
    scanf("%lf%lf%lf",&a,&b,&c);
    if ((a != 0) && (fabs(a) > (1e-6)))//避免实数转化成计算机浮点数时产生的误差
    {
      derta = b*b-4*a*c ;
      if (derta >= 0)
      {
            x1 = (-b + sqrt(derta)) / (2 * a);
            x2 = (-b - sqrt(derta)) / (2 * a);
            printf("方程%0.2lfx^2+%0.2lfx+%0.2lf=0的根为\nx1 = %0.2lf\nx2 = %0.2lf\n", a, b, c, x1, x2);
      }
      else
      {
            y = -b / (2 * a);
            z = (sqrt(-derta)) / (2 * a);
            printf("判别式小于0,此方程根为两个共轭复数\n");
            printf("x1 = %0.2lf + %0.2lfi\n", y, z);
            printf("X2 = %0.2lf - %0.2lfi\n", y, z);
      }
    }
    else
    {
      printf("首项不能为0");
    }
}
===================================================================================================

bin554385863 发表于 2019-5-6 01:41:00

本帖最后由 bin554385863 于 2019-5-6 02:55 编辑

2019年5月6日01:38:08

习题

用switch对百分制成绩分级排序ABCDE

/*用switch对百分成绩排序分级*/
#include<stdio.h>
void main()
{
    int num ;
    printf("请输入你的成绩");
    scanf("%d",&num);
    if ((num >= 0)&&(num <= 100))
    {
      switch (num/10)
      {
            case 10 :
            case 9 : printf("你的成绩是%c",'A');
            break;
            case 8 : printf("你的成绩是%c",'B');
            break;
            case 7 : printf("你的成绩是%c",'C');
            break;
            case 6 : printf("你的成绩是%c",'D');
            break;
            case 5 :
            case 4 :
            case 3 :
            case 2 :
            case 1 :
            case 0 : printf("你的成绩是%c",'E');
            break;
      }
    }
    else
    {
      printf("请输入有效成绩");
    }
   
}
============================================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-foyssg0w.hwf' '--stdout=Microsoft-MIEngine-Out-uchyvsih.dwf' '--stderr=Microsoft-MIEngine-Error-3rjvn45z.yhi' '--pid=Microsoft-MIEngine-Pid-rstp1qux.pzs' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入你的成绩32
你的成绩是E
PS E:\Administrator\Documents\Visual Studio 2019>
******************************************************************************************************************************

#include<stdio.h>
#include<math.h>
void main()
{
    double x, y, z ;
    printf("请输入参数x,y的值\n");
    scanf("%lf%lf",&x,&y);
    if ((fabs(x) >= (1e-6))&&(fabs(y) >= (1e-6)))
    {
      if ((x >= 0) && (y > 0))
      {
            z = y - y / (pow(x,2)+2) ;
            printf("%5.2lf - (%5.2lf / (pow(%5.2lf , 2) + 2)) = %5.2lf",y,y,x,z);
      }
      if ((x > 0) && (y <= 0))
      {
            z = (x - 2)/(pow(y,2)+1);
            printf("(%5.2lf - 2) / (pow(%5.2lf , 2) + 1) = %5.2lf",x,y,z);
      }
      if (x < 0)
      {
            z = x + y;
            printf("%5.2lf + (%5.2lf) = %5.2lf",x,y,z);
      }
    }
    else
    {
      printf("请输入有效数字");
    }
   
   
}
==============================================================================================================
请输入参数x,y的值
99
1
1.00 - ( 1.00 / (pow(99.00 , 2) + 2)) =1.00
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-ismc1e5p.v5u' '--stdout=Microsoft-MIEngine-Out-fng1olco.cri' '--stderr=Microsoft-MIEngine-Error-dm2davho.yx2' '--pid=Microsoft-MIEngine-Pid-ksuzs5tx.lpe' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入参数x,y的值
20
-20
(20.00 - 2) / (pow(-20.00 , 2) + 1) =0.04
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-2awuigke.tsr' '--stdout=Microsoft-MIEngine-Out-eedg20fp.rpo' '--stderr=Microsoft-MIEngine-Error-jlt1hg0q.q5k' '--pid=Microsoft-MIEngine-Pid-nh50cpif.wrf' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入参数x,y的值
66
3
3.00 - ( 3.00 / (pow(66.00 , 2) + 2)) =3.00
PS E:\Administrator\Documents\Visual Studio 2019>
*************************************************************************************************************************************

bin554385863 发表于 2019-5-6 19:15:51

本帖最后由 bin554385863 于 2019-5-7 00:01 编辑

2019年5月6日19:14:36

练习

/*计算个人所得税,800以下不交,800~1200交超过800的5%,1200~2000交超过1200的8%,2000~∞交超过2000的20%,要求switch语句*/
#include <stdio.h>
#define i 400
void main()
{
    int w, d;
    double v;
    printf("请输入你的收入:\n");
    scanf("%d", &w);
    if (w > 2000)
    {
      v = 0.20;
      d = w - 2000;
      printf("税率 : %5.2lf\n交税:%5.2lf\n", v,v*d);
    }
    else
    {
      switch (w / i)
      {
      case 1:
            v = 0;
            printf("税率 : %5.2lf\n交税:%5.2lf\n", 0, 0);
            break;

      case 2:
            if (w == 800)
            {
                printf("税率%5.2lf\n交税:%5.2lf\n", 0, 0);
            }
            else
            {
                v = 0.05;
                d = w - 800;
                printf("税率 : %5.2lf\n交税:%5.2lf\n", v, v * d);
            }

            break;

      case 3:
      case 4:
            if (w == 1200)
            {
                v = 0.05;
                d = w - 800;
                printf("税率 : %5.2lf\n交税:%5.2lf\n", v, v * d);
            }
            else
            {
                v = 0.08;
                d = w - 1200;

                printf("税率 : %5.2lf\n交税:%5.2lf\n", v, v * d);
            }

            break;
      }
    }
    if (w == 2000)
    {
      v = 0.08;
      d = w - 1200;

      printf("税率 : %5.2lf\n交税:%5.2lf\n", v, v * d);
    }
    else if (w <= 800)
    {
      printf("你的收入真的这么少?");
    }
}
==================================================================================================================
请输入你的收入:
500
税率 :0.00
交税: 0.00
你的收入真的这么少?
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-iei5stvx.zua' '--stdout=Microsoft-MIEngine-Out-bc2w4jny.lqx' '--stderr=Microsoft-MIEngine-Error-3jyyxuxw.nip' '--pid=Microsoft-MIEngine-Pid-xnawfrdn.r1l' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入你的收入:
1200
税率 :0.05
交税:20.00
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-ey3w10a1.yt3' '--stdout=Microsoft-MIEngine-Out-s5hy3ygs.k4k' '--stderr=Microsoft-MIEngine-Error-lp2xmhzu.rlx' '--pid=Microsoft-MIEngine-Pid-m52ll1ow.msv' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入你的收入:
2000
税率 :0.08
交税:64.00
PS E:\Administrator\Documents\Visual Studio 2019>
************************************************************************************************************************************
练习

自己写的代码
/*从键盘输入字符,如果是小写字母则输出大写,如果是大写字符则输出小写,其他字符原样输出*/
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
void main()
{
    char ch1;
    int i, j;
    printf("请输入一个字符\n");
    ch1 = getchar();
    for (j = 0, i = 0; i <= 127; i++)
    {
      ch1 % i == 1;//判断ch1是不是ASC表中的字符
      j++;//如果是则j+1
    }
    switch (!j)
    {
    case 1:
      printf("请输入合法字符");//输入两个以上的字符或者两位以上的数字都是非法
      break;
    case 0:
      if (ch1 >= 'A' && ch1 <= 'Z')
      {
            printf("%c", ch1 + 32);
      }
      if (ch1 >= 'a' && ch1 <= 'z')
      {
            printf("%c", ch1 - 32);
      }
      else
      {
            printf("%c", ch1);
      }
      break;
    default:
      break;
    }

}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
t=Microsoft-MIEngine-Out-2jmmjze5.t14' '--stderr=Microsoft-MIEngine-Error-ucsuoa1i.psa' '--pid=Microsoft-MIEngine-Pid-2eyindh4.mbi' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入一个字符
66
6
PS E:\Administrator\Documents\Visual Studio 2019>
无法达到我想要的想法
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
感谢Croper
提供的帮助
/*从键盘输入字符,如果是小写字母则输出大写,如果是大写字符则输出小写,其他字符原样输出*/
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
int main()
{
         char c=getchar();
         int flg=0;
         if (getchar()!='\n')
               flg=1;
         if (c<0 || c>127)
               flg=1;//在中文环境下,这一句是不需要的
         if (flg){
               printf("请输入合法字符");
               return;
      }
      if (isalpha(c)) c^=32;
      printf("%c",c);
}
==============================================================================================================
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-yiysj53l.dd0' '--stdout=Microsoft-MIEngine-Out-fc2m1x4l.xl5' '--stderr=Microsoft-MIEngine-Error-z0rcmudg.0v0' '--pid=Microsoft-MIEngine-Pid-tnkkhycr.3cu' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
66
请输入合法字符
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-xptiixfc.5fb' '--stdout=Microsoft-MIEngine-Out-kdeidk1m.yw4' '--stderr=Microsoft-MIEngine-Error-4ozsbsuq.jvj' '--pid=Microsoft-MIEngine-Pid-0ojceihd.zg5' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
h
H
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-yihpibka.kjk' '--stdout=Microsoft-MIEngine-Out-yfzunhgd.0ws' '--stderr=Microsoft-MIEngine-Error-21qtkion.25g' '--pid=Microsoft-MIEngine-Pid-tetf2ufk.bvo' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
jj
请输入合法字符
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-vmjlx3ea.oen' '--stdout=Microsoft-MIEngine-Out-k3h5v3in.wbk' '--stderr=Microsoft-MIEngine-Error-x5aswmgv.gfc' '--pid=Microsoft-MIEngine-Pid-dn4ltrcu.hcc' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
2
2
PS E:\Administrator\Documents\Visual Studio 2019>
完美达到了效果
include<ctype.h>    isalpha()判断字符是不是字母
-----------------------------------------------------------------------------------
^=
异或运算是二进制数按位做异或运算再赋值,其运算规则是:

0^0=0;   0^1=1;   1^0=1;   1^1=0

即:如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

同与运算相同,参与异或运算的两个操作数,位数必须相同,也就是数据类型必须相同。不同类型的数据做与运算,需要强制转换为同一类型。
**********************************************************************************************************************************************
练习for的使用

/*使用for循环计算(|a|,|b|)累加和*/
#include <stdio.h>
void main()
{
      int a, b, sum, s, i;
      printf("请输入a和b的值\n");
      scanf("%d%d", &a, &b);
      if (b <= a)
      {
                i = b;
                b = a;
                a = i;
                for (s = a; s <= b; s++)
                {
                        sum = sum + s;
                }
                printf("sum(%d , %d) = %d\n", a, b, sum);
      }
      else
      {
                for (s = a; s <= b; s++)
                {
                        sum = sum + s;
                }
                printf("sum(%d , %d) = %d\n", a, b, sum);
      }
}
------------------------------------------------------------------------------------------------------------------------------------------------------------
请输入a和b的值
50
50
sum(50 , 50) = 50
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-h11exuqp.5kn' '--stdout=Microsoft-MIEngine-Out-zvtxoj2s.iil' '--stderr=Microsoft-MIEngine-Error-jw1s2hah.wpf' '--pid=Microsoft-MIEngine-Pid-5mxdhx3l.0px' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入a和b的值
50
30
sum(30 , 50) = 840
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-wt1qodgs.b0e' '--stdout=Microsoft-MIEngine-Out-1gzpi12l.ip3' '--stderr=Microsoft-MIEngine-Error-xefnl5r3.edw' '--pid=Microsoft-MIEngine-Pid-rfnvokqv.wa5' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入a和b的值
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-qhciwkla.0yw' '--stdout=Microsoft-MIEngine-Out-ysr1gibt.anj' '--stderr=Microsoft-MIEngine-Error-cdxo5uoy.fux' '--pid=Microsoft-MIEngine-Pid-bgzorkky.zku' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入a和b的值
-50
-30
sum(-50 , -30) = -840
PS E:\Administrator\Documents\Visual Studio 2019>
===================================================================================================================
第五章
------------------------------------------------------------
For循环

/*使用*循环打印几何图案*/
#include <stdio.h>
void main()
{
      int i, j, m, n;
      printf("请输入m和n的值\n");
      scanf("%d%d", &m, &n);
      if ((m > 0) && (n > 0))
      {
                for (i = 1; i <= m; i++)
                {
                        for (j = 1; j <= n; j++)
                        {
                              printf("*");//里层循环控制竖列
                              
                        }
                        printf("\n");//外层循环横列
                }
      }
      else
      {
                printf("请输入正确的数字");
      }
}
----------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-pptuufe2.5w5' '--stdout=Microsoft-MIEngine-Out-soymft2l.czu' '--stderr=Microsoft-MIEngine-Error-p3cfkpwn.zvx' '--pid=Microsoft-MIEngine-Pid-kw4qcmuh.fvb' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入m和n的值
8
7
*******
*******
*******
*******
*******
*******
*******
*******
PS E:\Administrator\Documents\Visual Studio 2019>
-----------------------------------------------------------------------------------------------------------------------------
打印一个左对齐的倒直角三角形
/*打印一个左对齐的倒直角三角形*/
#include <stdio.h>
void main()
{
    int i, j;
    for (i = 1; i <= 8; i++)
    {
      for (j = i; j <= 8; j++)
      {
            printf("*");
      }
      printf("\n");
    }
}
--------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-bazkeozo.0uv' '--stdoustdout=Microsoft-MIEngine-Out-cffozh4r.zuh' '--stderr=Microsoft-MIEngine-Error-lzlwn0y5.t2m' '--pid=Microsoft-MIEngine-Pid-amhta0d3.45q' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
********
*******
******
*****
****
***
**
*
PS E:\Administrator\Documents\Visual Studio 2019>

bin554385863 发表于 2019-5-7 00:02:56

本帖最后由 bin554385863 于 2019-5-8 02:11 编辑

2019年5月7日00:02:45

打印一个右对齐的直角三角形
/*打印一个右对齐的直角三角形*/
#include <stdio.h>
void main()
{
    int i, j, k;
    for (i = 1; i <= 8; i++) //换行
    {
      for (j = 1; j <= (8 - i); j++) //打印空格

            printf(" ");

      for (k = 1; k <= i; k++)//打印*

            printf("*");
      printf("\n");
    }
}
-------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.22.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-4d44dejs.xil' '--stdout=Microsoft-MIEngine-Out-vvmz1aim.e5b' '--stderr=Microsoft-MIEngine-Error-fkleu5c0.qwc' '--pid=Microsoft-MIEngine-Pid-wrabbjtz.ion' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
             *
         **
         ***
      ****
      *****
    ******
*******
********
PS E:\Administrator\Documents\Visual Studio 2019>
=======================================================================
for打印一个等腰三角形
/*for打印一个等腰三角形*/
#include <stdio.h>
void main()
{
    int i, j, k;
    for (i = 1; i <= 7; i++)
    {
      for (j = i; j <= 7; j++)
            printf(" ");
      for (k = 1; k <= (2 * i - 1); k++)
            printf("*");
      printf("\n");
    }
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-y1mgxlbo.obs' '--stdout=Microsoft-MIEngine-Out-3mkfpwb1.hg4' '--stderr=Microsoft-MIEngine-Error-xyslzhsg.e4m' '--pid=Microsoft-MIEngine-Pid-l1o05xjl.h03' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
       *
      ***
   *****
    *******
   *********
***********
*************
PS E:\Administrator\Documents\Visual Studio 2019>
====================================================================================
if        for        switch混合使用
和差商积运算

/*和差商积循环计算*/
#include <stdio.h>
void main()
{
    int a, b, s;
    int input, i, m, n, r, x;
    char c;
    printf("请输入你想算的总题数\n");
    scanf("%d", &m);
    printf("请输入你想计算的数值范围\n");
    scanf("%d", &n);

    if ((m < 10) || (n < 100))
    {
      printf("请输入大于10的总题数和大于100的计算范围");
    }
    else
    {
      for (i = 0; i < m; i++)
      {
            srand(time(NULL));
            a = rand() % n;
            b = rand() % n;
            s = rand() % 3;
            switch (s)
            {
            case 0:
                c = '+';
                r = (a + b);
                printf("%d %c %d\n", a, c, b);
                break;
            case 1:
                c = '*';
                r = (a * b);
                printf("%d %c %d\n", a, c, b);
                break;
            case 2:
                c = '-';
                if (a >= b)
                {
                  r = (a - b);
                  printf("%d %c %d\n", a, c, b);
                }
                else
                {
                  r = (b - a);
                  printf("%d %c %d\n", b, c, a);
                }
                break;
            case 3:
                c = '/';
                if ((a >= b) && ((a % b == 0)))
                {
                  r = (a / b);
                  printf("%d %c %d\n", a, c, b);
                }
                else if ((a < b) && ((b % a) == 0))
                {
                  r = (b % a);
                  printf("%d %c %d\n", b, c, a);
                }

                break;
            }
            scanf("%d", &input);
            if (r == input)
            {
                printf("正确\n");
                x++;
            }
            else if (r != input)
            {
                printf("错误\n");
            }
      }
      printf("你做对了%d道题\n做错了%d道题", x, m - x);
    }
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
错误
84 - 72
0
错误
88 * 52
0
错误
91 * 1
0
错误
91 * 1
0
错误
你做对了0道题
做错了10道题
PS E:\Administrator\Documents\Visual Studio 2019>
================================================================================================
九九乘法表
/*九九乘法表*/
#include <stdio.h>
void main()
{
    int i, j;
    for (i = 1; i <= 9; i++)
    {
      for (j = 1; j <= i; j++)
      {
            printf("%2d * %d = %2d ", i, j, i * j);
      }

      printf("\n");
    }
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-d53uf5pc.4y0' '--stdout=Microsoft-MIEngine-Out-nj1v2p2j.qae' '--stderr=Microsoft-MIEngine-Error-zdhutrst.qek' '--pid=Microsoft-MIEngine-Pid-umfalpgf.pbb' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
1 * 1 =1
2 * 1 =22 * 2 =4
3 * 1 =33 * 2 =63 * 3 =9
4 * 1 =44 * 2 =84 * 3 = 124 * 4 = 16
5 * 1 =55 * 2 = 105 * 3 = 155 * 4 = 205 * 5 = 25
6 * 1 =66 * 2 = 126 * 3 = 186 * 4 = 246 * 5 = 306 * 6 = 36
7 * 1 =77 * 2 = 147 * 3 = 217 * 4 = 287 * 5 = 357 * 6 = 427 * 7 = 49
8 * 1 =88 * 2 = 168 * 3 = 248 * 4 = 328 * 5 = 408 * 6 = 488 * 7 = 568 * 8 = 64
9 * 1 =99 * 2 = 189 * 3 = 279 * 4 = 369 * 5 = 459 * 6 = 549 * 7 = 639 * 8 = 729 * 9 = 81
PS E:\Administrator\Documents\Visual Studio 2019>
==========================================================================================================
5.2
while语句

用while输出n的阶乘N!
/*用while输出n的阶乘N!*/
#include <stdio.h>
void main()
{
    int n, s, i;
    printf("请输入一个正整数\n");
    scanf("%d", &n);
    if (n >= 0)
    {
      s = 1;
      i = 1;
      while (i <= n)
      {
            s = s * i;
            i++;
      }
      printf("%d! = %d", n, s);
    }
    else
    {
      printf("请输入一个正整数");
    }
}
----------------------------------------------------------------------------------------------------------------------------------
ohwsfx.bpp' '--stdout=Microsoft-MIEngine-Out-iujqujth.o4p' '--stderr=Microsoft-MIEngine-Error-lsz0mt0b.ph4' '--pid=Microsoft-MIEngine-Pid-yy2rbuqs.i34' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入一个正整数
0
0! = 1
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-rny3ewys.grc' '--stdout=Microsoft-MIEngine-Out-to3qgqog.5vs' '--stderr=Microsoft-MIEngine-Error-r0pdzgxk.hvu' '--pid=Microsoft-MIEngine-Pid-mix1ct3n.k1w' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入一个正整数
-8
请输入一个正整数
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-g0gug30l.ole' '--stdout=Microsoft-MIEngine-Out-sixsu1pe.chw' '--stderr=Microsoft-MIEngine-Error-j0c2b5x5.iga' '--pid=Microsoft-MIEngine-Pid-xfjzqyks.lir' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入一个正整数
6
6! = 720
PS E:\Administrator\Documents\Visual Studio 2019>
========================================================================================
do-----while用法
/*使用do--while计算累加和*/
#include <stdio.h>
void main()
{
    int i, j;
    i = 1;
    j = 0;
    do
    {
      j = j + i;
      i++;
    } while (i <= 100);
    printf("j = %d", j);
}
--------------------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-hjgrgnat.qbc' '--stdout=Microsoft-MIEngine-Out-yfpzipcx.uth' '--stderr=Microsoft-MIEngine-Error-xqe3yi1d.0qf' '--pid=Microsoft-MIEngine-Pid-t10hwgqv.sre' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
j = 5050
PS E:\Administrator\Documents\Visual Studio 2019>
=====================================================================================

bin554385863 发表于 2019-5-9 03:12:22

本帖最后由 bin554385863 于 2019-5-9 23:33 编辑

2019年5月9日03:07:29
分支循环语句和break和continue的练习
----------------------------------------------------------------------------------------------

求两个个正整数的最小公倍数和最大公约数.

#include <stdio.h>
/*求两个个数的最大公约数和最小公倍数*/
void main()
{
    int a, b, c, t;
    printf("请输入任意两个正整数\n");
    scanf("%d%d", &a, &b);
    if ((a > 0) && (b > 0))
    {
      if (a <= b)
      {
            t = a;
            a = b;
            b = t;
      }
      for (c = b; c > 0; c--)
      {
            if (((a % c) == 0) && ((b % c) == 0))
            {
                printf("%d和%d的最大公约数是:%d\n", a, b, c);
                printf("%d和%d的最小公倍数是:%d\n", a, b, (a*b)/c);
                break;
            }
      }

    }
    else
    {
      printf("请输入大于0的整数");
    }
}

---------------------------------------------------------------------------------------------------------------------------
请输入任意两个正整数
20
40
40和20的最大公约数是:20
40和20的最小公倍数是:40
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-1xenkt03.da5' '--stdout=Microsoft-MIEngine-Out-tytcbuvo.e0r' '--stderr=Microsoft-MIEngine-Error-d5ozafg2.nje' '--pid=Microsoft-MIEngine-Pid-zlyag0ze.xce' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入任意两个正整数
77
33
77和33的最大公约数是:11
77和33的最小公倍数是:231
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-itkplkhc.2hh' '--stdout=Microsoft-MIEngine-Out-kpnuch0q.3kh' '--stderr=Microsoft-MIEngine-Error-lfk03dvy.awv' '--pid=Microsoft-MIEngine-Pid-ovmku5i4.udr' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入任意两个正整数
97
35
97和35的最大公约数是:1
97和35的最小公倍数是:3395
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-mtaqc2uv.onw' '--stdout=Microsoft-MIEngine-Out-2r3dnxmd.zcc' '--stderr=Microsoft-MIEngine-Error-jzvfjzol.xqe' '--pid=Microsoft-MIEngine-Pid-w4bcx0p3.qgv' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入任意两个正整数
-9
5
请输入大于0的整数
PS E:\Administrator\Documents\Visual Studio 2019>
==================================================================================================================
goto的作用

goto可以直接跳出多层循环,break只能跳出一层


设a,b,c,d,e为0~9的数字,求满足abc*e=dcba,最大的五个数字且a不为,e不为0和1.
#include <stdio.h>
#include <math.h>
/*设a,b,c,d,e为0~9的数字求满足abc*e=dcba,a!=0&&e!=0&&e!=1,最大的a,b,c,d,e五个数*/
int main()
{
    int a, b, c, d, e;
    for (a = 9; a > 0; a--)
    {
      for (b = 9; b >= 0; b--)
      {
            for (c = 9; c >= 0; c--)
            {
                for (d = 9; d >= 0; d--)
                {
                  for (e = 9; e > 1; e--)
                  {
                        if ((a * 100 + b * 10 + c) * e == (d * 1000 + c * 100 + b * 10 + a))
                        {
                            printf("符合条件的五个数是:a = %d b = %d c = %d d = %d e = %d\n", a, b, c, d, e);
                            printf("组成的四位数是: %d\n", d * 1000 + c * 100 + b * 10 + a);
                            goto Over;
                        }
                  }
                }
            }
      }
    }
Over:
    return 0;
}
----------------------------------------------------------------------------------------------------------------------------------
                                             > & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-iwxmfow2.1j2' '--stdout=Microsoft-MIEngine-Out-5g5o4mae.byb' '--stderr=Microsoft-MIEngine-Error-q1wfomum.sir' '--pid=Microsoft-MIEngine-Pid-cpqtz5pq.x0i' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
符合条件的五个数是:a = 9 b = 6 c = 7 d = 6 e = 7
组成的四位数是: 6769
PS E:\Administrator\Documents\Visual Studio 2019>
=========================================================================================================

利用循环结构计算π的近似值,
公式是a(n) = (-1^(n+1))/(2n+1)的前n项和S(n)*4
#include <stdio.h>
#include <math.h>
/*循环结构计算π的近似值*/
void main()
{
    double pi, PI, a;
    int b, n;
Start:
    printf("请输入n的值,n越大精确度越高\n");
    scanf("%d", &n);
    if (n >= 1)
    {
      for (pi = 0, b = n; b >= 1; b--)
      {
            a = (double)pow(-1, (b + 1)) / (2 * b - 1);
            if (fabs(a) > (1e-6))
            {
                pi = pi + a;
                PI = pi * 4;
            }
      }
      printf("π ≈ %10.8lf\n", PI);
    }
    else
    {
      printf("请输入大于0的正整数");
      goto Start;
    }
}
----------------------------------------------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-r4osipnv.vgm' '--stdout=Microsoft-MIEngine-Out-ipk2veu5.dat' '--stderr=Microsoft-MIEngine-Error-21lotohm.sae' '--pid=Microsoft-MIEngine-Pid-dqrrh432.bkn' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入n的值,n越大精确度越高
0
请输入大于0的正整数请输入n的值,n越大精确度越高
-9
请输入大于0的正整数请输入n的值,n越大精确度越高
50
π ≈ 3.12159465
PS E:\Administrator\Documents\Visual Studio 2019>
===============================================================================================
[4]切木头
一根133m的木头,需要切成19m和23m的木料,求两种木料且多少根时剩下的木料最少
#include<stdio.h>
/*一根133m的木头,需要切成19m和23m的木料,求两种木料且多少根时剩下的木料最少*/
int main()
{
    int a, b, c;
    for (c = 1; c < 19; c++)
    {
      for (a = 133; a >= 1; a--)
      {
            for (b = 133; b >=1; b--)
            {
                if ((19 * a) + (23 * b) + c == 133)
                {
                  printf("19m的木料%d根\n23m的木料%d根,剩下%dm\n", a, b, c);
                  goto End;
                }
            }
      }
    }
    End :
    return 0;
}
---------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-ufqieqr5.vjj' '--stdout=Microsoft-MIEngine-Out-k4xpuwnu.oaz' '--stderr=Microsoft-MIEngine-Error-ljzd2iw0.3zv' '--pid=Microsoft-MIEngine-Pid-irngfpnu.abl' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
19m的木料2根
23m的木料4根,剩下3m
PS E:\Administrator\Documents\Visual Studio 2019>
========================================================================================================
求1~10000,真因子之和等于它本身的数
#include <stdio.h>
/*求1~10000,真因子之和等于它本身的数*/
void main()
{
    int i, j, sum;
    for (i = 10000; i >= 1; i--)
    {
      for (sum = 0, j = 1; j <= (i / 2); j++)
      {
            if (i % j == 0)
            {
                sum = sum + j;
                if (i == sum)
                {
                  printf("%d\n", i);
                }
            }
      }
    }
}
------------------------------------------------------------------------------------------------------------------
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-p5ba2yih.pxe' '--stdout=Microsoft-MIEngine-Out-cevwv4fv.o1h' '--stderr=Microsoft-MIEngine-Error-iaexl5y4.0nh' '--pid=Microsoft-MIEngine-Pid-eybgs5lq.yd5' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
8190
8128
2016
496
28
24
6
PS E:\Administrator\Documents\Visual Studio 2019>

bin554385863 发表于 2019-5-10 21:53:29

本帖最后由 bin554385863 于 2019-5-10 23:49 编辑

2019年5月10日21:33:46
第六章
函数

自定义函数形式:
[存储类型符] [返回值类型符] 自定义函数名 [形式参数列表]
{
        函数体;
        返回值;
}
----------------------------------------------------------------------------------
[存储类型符]说明了函数的作用范围,它只有两种形式:
        static 内部函数 表面函数只在源文件内部起作用,不可被外部调用;

        extern 外部函数        表面函函数可以被外部调用.

        函数默认都是extern类型

[返回值类型符]
        没有返回值可以用void定义返回值类型.

        其他返回值类型参考数据类型.

        返回值类型默认为int.

函数名
        可以是任何合法标识符构成.

[形式参数列表]
        说明了参数的类型;
       
        说明了参数的个数.

函数体:

        实现函数功能的语句表达式

返回值

        返回函数表达式的值.
--------------------------------------------------------------------------------------------
自定义函数的两种调用方式

#include<stdio.h>
[声明自定义函数]; ---------------------------->注意分号]
int main()
{
        函数体;
        调用[自定义函数]
        return 0;
}
[自定义函数方法的定义]
{
        方法定义
        return (函数表达式);
}





#include<stdio.h>
[自定义函数方法的定义]
{
        方法定义
        return (函数表达式);
}
int main()
{
        函数体;
        调用[自定义函数]
        return 0;
}
======================================================================================================
变量的作用域和存储类型

[变量的作用域]

        局部变量 static------------------->在函数或者某个语句块定义的变量就叫局部变量,它的作用域只限于本函数内部或语句块内部,增强了模块的独立性.

        全局变量extern----------------->函数体外面定义的变量就是叫全局变量,它的作用域是整个源文件.

------------------------------------------------------------------------------------------------------------------------------
[变量的存储类型]

        static        型变量和extern型变量都存储在静态存储区;
       
        register型变量存储在寄存器;

        auto型变量存储在动态存储区

        auto和register只能定义局部变量.

        static可以定义局部变量和内部变量,函数外部和语句块外部的变量默认都是extern全局变量.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
计算n的阶乘比较用static和不用的的区别
#include <stdio.h>
/*计算n的阶乘比较用static和不用的的区别*/
long funca(int n)//自定义函数funcb() ,形式参数n
{
    static int f = 1;//局部变量f
    f = f * n;
    return (f);
}
long funcb(int n)//自定义函数funca(),形式参数n
{
    int i, m;
    for (i = 1, m = 1; i <= n; i++)//局部变量i,m
    {
      m = m * i;
    }
    return (m);
}
void main()
{
    int y, k;//全局变量y,k
    printf("请输入y的值");
    scanf("%d", &y);
    if (y >= 1)
    {   
      for (k = 1; k <= y; k++)
      {
            printf("funca(%d) = %d\n", k, funca(k));//调用funca()
      }
      printf("\nfuncb(%d) = %d\n", y, funcb(y));//调用funcb()
    }
}
------------------------------------------------------------------------------------------------------------------
wj000.jrh' '--stdout=Microsoft-MIEngine-Out-s1zfebzu.bfk' '--stderr=Microsoft-MIEngine-Error-gzc2wyaz.0qk' '--pid=Microsoft-MIEngine-Pid-k44ucn2w.41f' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入y的值8
funca(1) = 1
funca(2) = 2
funca(3) = 6
funca(4) = 24
funca(5) = 120
funca(6) = 720
funca(7) = 5040
funca(8) = 40320

funcb(8) = 40320
PS E:\Administrator\Documents\Visual Studio 2019>
========================================================================================================

bin554385863 发表于 2019-5-11 22:38:50

2019年5月11日22:36:10

编写函数求C(a,n)组合数
#include <stdio.h>
/*编写函数求C(a,n)组合数*/
long fun_Nn(int n)
{
    long Nn = 1;
    if (n == 0 || n == 1)
    {
      Nn = 1;
    }
    else if (n > 1)
    {
      Nn = n * fun_Nn(n - 1);
    }
    else
    {
      printf("请输入正整数\n");
    }
    return (Nn);
}
long fun_Cn(int n, int k)
{
    long Cn = 1;
    if (n == k || k == 0)
    {
      Cn = 1;
    }
    else if ((n > k) && (k > 0))
    {
      Cn = fun_Nn(n) / (fun_Nn(k) * fun_Nn(n - k));
    }
    else
    {
      printf("数字存在负数或大小顺序错误\n");
    }
    return (Cn);
}
void main()
{
    int a, b;
    printf("请输入组合数\n");
    scanf("%d%d", &a, &b);
    if ((a >= b ) && (b > 0))
    {
      printf("从%d中抽出%d的组合有%d种方法\n", a, b, fun_Cn(a, b));
    }
    else
    {
      printf("数字存在负数或大小顺序错误\n");
    }
   
}
--------------------------------------------------------------------------------------------------------------------------------------
9
6
从9中抽出6的组合有84种方法
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-hunyosj3.err' '--stdout=Microsoft-MIEngine-Out-n1kcljc2.sb1' '--stderr=Microsoft-MIEngine-Error-fymrjzzc.z1w' '--pid=Microsoft-MIEngine-Pid-5usb423r.ny5' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入组合数
9
45
数字存在负数或大小顺序错误
PS E:\Administrator\Documents\Visual Studio 2019> & 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.0\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-fkxkxuwc.bm2' '--stdout=Microsoft-MIEngine-Out-c45hycvk.3nu' '--stderr=Microsoft-MIEngine-Error-shviffuw.xd5' '--pid=Microsoft-MIEngine-Pid-x55pqnud.khl' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
请输入组合数
-9
12
数字存在负数或大小顺序错误
PS E:\Administrator\Documents\Visual Studio 2019>

bin554385863 发表于 2019-5-13 00:47:21

本帖最后由 bin554385863 于 2019-5-19 08:51 编辑

2019年5月13日00:43:09

第七章 数组
2019-5-15 22:03:21
因为工作耽误了一段时间{:9_220:}


数组的特点:



可以把数组看成是一种所有数据类型相同的变量的集合;
同一数组中的元素在内存占据的地址空间是练血的;
数组的大小必须在定义时确定,在程序中不可改变;
数组名代表的是数组在内存中的首地址.

数组的定义:
[存储类型] [数据类型] 数组名[数组大小]
如: static int array.

数组不能越界否则可能造成不可预料的错误

一维数组

数组的初始化

        全元素初始化,如:a = {1,2,3,4,5}        .

        部分元素初始化,如:a = {1,2,3       }.

        手动输入初始化,如:
        #include <stdio.h>
        int main ()
        {
                int i, arr;
                printf("请输入10个数字");
                for (i = 0; i <10; i++)
                {
                        scanf("%d", &arr);
                }
                for (i = 0; i <10; i++)
                {
                        printf("arr[%D]= %d",i,arr);
                }
                return 0;
        }
       
----------------------------------------------------------------------------------------------------------------
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-4cljommd.a54 --stdout=Microsoft-MIEngine-Out-ekgymgu4.p10 --stderr=Microsoft-MIEngine-Error-4h5uvham.11y --pid=Microsoft-MIEngine-Pid-gpa0fdc3.xyd --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
请输入10个数字
30
20
10
90
40
50
60
20
10
80
arr= 30
arr= 20
arr= 10
arr= 90
arr= 40
arr= 50
arr= 60
arr= 20
arr= 10
arr= 80

E:\Administrator\Documents\My C>
============================================================================
2019年5月17日07:46:25
设数组有个N个整形元素,将从数组下标为m的元素开始连续n个元素与钱m个元素调换位置

#include <stdio.h>
/*设数组有个N个整形元素,将从数组下标为m的元素开始连续n个元素与钱m个元素调换位置*/
#include <stdlib.h>
#include <time.h>
#define N 10
void move(int t[], int m, int n)
{
    int temp, i;
    for (i = 0; i < n; i++)
    {
      temp = t; /*将连续m个元素放到临时数组*/
    }
    for (i = 0; i < m; i++)
    {
      t[(m + n - 1) - i] = t[(m - 1) - i]; /*原数组m个元素后移*/
    }
    for (i = 0; i < n; i++)
    {
      t = temp; /*将临时数组的元素移回数组前部*/
    }
}
void main()
{
    int a, m, n, i;
    srand(time(NULL));
    for (i = 0; i < N; i++)
    {
      a = rand() % 100; /*随机生成元素值*/
    }
    printf("原始数组的值:\n");
    for (i = 0; i < N; i++)
    {
      printf("%d ", a);
    }
    printf("\n");
    printf("请输入数组移动开始位置\n");
    scanf("%d", &m);
    printf("请输入移动的元素个数\n");
    scanf("%d", &n);
    move(a, m, n);
    for (i = 0; i < N; i++)
    {
      printf("%d ", a);
    }
    printf("\n");
}
---------------------------------------------------------------------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-jpaxwjbs.smr --stdout=Microsoft-MIEngine-Out-lh1m4qoq.dkl --stderr=Microsoft-MIEngine-Error-ysigoo05.cnm --pid=Microsoft-MIEngine-Pid-pn3pyeyt.dhy --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
原始数组的值:
73 55 42 4 50 79 49 74 61 90
请输入数组移动开始位置
3
请输入移动的元素个数
5
4 50 79 49 74 73 55 42 61 90

E:\Administrator\Documents\My C>
===========================================================================================================

2019年5月18日22:22:34

****
数组冒泡排序
/*冒泡排序*/
#include <stdio.h>
int main()
{
    int a = {1, 32, 66, 585, 55, 865, 55, 99, 12, 0};
    int i, j, temp;
    printf("排序之前\n");
    for (i = 0; i < 10; i++)
    {
      printf("a[%d] = %d\n", i, a);
    }
    printf("\n");
    /*排序算法*/
    for (i = 0; i < 10; i++)
    {
      for (j = 0; j < 9; j++)
      {
            if (a > a)
            {
                temp = a;
                a = a;
                a = temp;
            }
      }
    }
    printf("排序之后\n");
    for (i = 0; i < 10; i++)
    {
      printf("a[%d] = %d\n", i, a);
    }
    printf("\n");

    return 0;
}
-------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-qxsfwl0h.ltp --stdout=Microsoft-MIEngine-Out-zct4enou.qmi --stderr=Microsoft-MIEngine-Error-0c0jyykw.or5 --pid=Microsoft-MIEngine-Pid-w5ovd4z0.ryq --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
排序之前
a = 1
a = 32
a = 66
a = 585
a = 55
a = 865
a = 55
a = 99
a = 12
a = 0

排序之后
a = 0
a = 1
a = 12
a = 32
a = 55
a = 55
a = 66
a = 99
a = 585
a = 865


E:\Administrator\Documents\My C>
=========================================================================
数组元素个数的确定:
sizeof(a[]) / sizeof(a),用这句代码确定数组元素个数永远不会错,且容易对数组元素个数做修改

/*用sizeof确定数组元素个数*/
#include <stdio.h>
int main()
{
    int arr[] = {6, 85666, 856, 86, 88, 68, 5, 65, 588, 6, 58, 8, 6, 5, 88, 6, 85, 8, 69};
    for (int i = 0; i < (sizeof(arr) / sizeof(arr)); i++)
    {
      printf("arr[%d] = %d\n", i, arr);
    }
    printf("\n");

    return 0;
}
----------------------------------------------------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-m3r1o445.4ep --stdout=Microsoft-MIEngine-Out-1nlq35yy.wa5 --stderr=Microsoft-MIEngine-Error-rbxxrd3c.zht --pid=Microsoft-MIEngine-Pid-bf2helce.yah --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
arr = 6
arr = 85666
arr = 856
arr = 86
arr = 88
arr = 68
arr = 5
arr = 65
arr = 588
arr = 6
arr = 58
arr = 8
arr = 6
arr = 5
arr = 88
arr = 6
arr = 85
arr = 8
arr = 69


E:\Administrator\Documents\My C>
============================================================================================


bin554385863 发表于 2019-5-19 09:58:41

本帖最后由 bin554385863 于 2019-5-19 20:18 编辑

2019年5月19日09:43:44

字符数组


        字符数组逐一元素初始化,末尾要加\0表示结束,如:
char-array[] = {'a','d','f'.........\0}.

        给字符数组赋值字符串,如:
char word={"hello world"}
char word[    ]={"hello world"}
char word[    ]="hello world"



scanf("%c", &array)        逐一赋值;

scanf("%s", &array)                字符串赋值.


        用scanf()输入字符串时空格和换行符会作为字符串之间的符号,且不需要用双引号括起来


        gets()函数能够读取所有字符,回车结束.

scanf()
/*scanf()和gets()函数的不同*/
#include <stdio.h>
int main()
{
    char arr1, arr2;
    printf("请输入字符串\n");
    scanf("%s", &arr1);
    printf("arr1 = %s\n", arr1);
    return 0;
}
-----------------------------------------------------------------------------------------------------------
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-ah42eebq.s20 --stdout=Microsoft-MIEngine-Out-xiam5lkz.wfy --stderr=Microsoft-MIEngine-Error-wzd3krlp.wku --pid=Microsoft-MIEngine-Pid-4h5fg1um.gt5 --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
请输入字符串
hello world
arr1 = hello

E:\Administrator\Documents\My C>
-------------------------------------------------------------------------------------------------------------------
gets()
/*scanf()和gets()函数的不同*/
#include <stdio.h>
int main()
{
    char arr1, arr2;
    printf("请输入字符串\n");
   
    gets(arr2);
    printf("arr2 = %s\n", arr2);
    return 0;
}

--------------------------------------------------------------------------------------------------------
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-uq1s4lgi.oyz --stdout=Microsoft-MIEngine-Out-ukrnz2ix.yl5 --stderr=Microsoft-MIEngine-Error-ulxtsyhz.i4q --pid=Microsoft-MIEngine-Pid-ue5kjfxg.bf0 --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
请输入字符串
hello world
arr2 = hello world

E:\Administrator\Documents\My C>
========================================================================================================
字符数组操作函数



strcopy(array[], "strings")        将""string""字符串复制到字符数组array[].

strcopy(arr1[], arr2[])        将字符数组arr2[]复制到arr1[].arr2不能小于arr1.



strcat(arr1, arr2)        将arr2拼接到arr1尾部.
------------------------------------------------------------------------------------------------------------------------------------
/*字符数组复制函数strcpy()和字符数组拼接函数strcat()*/
#include <stdio.h>
#include <string.h>
int main()
{
    char arr1[] = "WindowsMcrosoft", arr2[] = "abcde";
    strcpy(arr1, arr2);
    printf("arr1:\n%s\n", arr1);
    strcpy(arr2, "zxcv");
    printf("arr2:\n%s\n", arr2);
    strcat(arr1, arr2);
    printf("拼接arr2到arr1:\n%s\n", arr1);
    return 0;
}

-------------------------------------------------------------------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-u2vdhgyq.n3b --stdout=Microsoft-MIEngine-Out-f2pcwkwm.5kh --stderr=Microsoft-MIEngine-Error-44nz20sp.gll --pid=Microsoft-MIEngine-Pid-4pqkbaf5.f5p --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
arr1:                        strcpy()会把\0也复制过去因此改变过后的arr后面的字符无法输出,改变后的arr1[]="abcde\0sMicrosoft"
abcde
arr2:
zxcv
拼接arr2到arr1:
abcdezxcv

E:\Administrator\Documents\My C>
----------------------------------------------------------------------------------------------------------------------------------------

[5.4]
       
        字符串比较函数:strcmp(字符串1 , 字符串2)
字符串1 = 2        返回值=0
字符串1 < 2        返回值=随机负整数
字符串1 > 2        返回值=随机正整数
--------------------------------------------------------------------------------------------------------------------------------------

字符串大小写转换函数

str="a................................n"

strupr(str)        转换大写

strlwr(str)                转换小写.
---------------------------------------------------------------------------------------------------------------------------------------------------
程序范例
从键盘输入八种商品价格,求其最高价最低价和平均价并把高于平均价的 商品打印出来
/*从键盘输入八种商品价格,求其最高价最低价和平均价并把高于平均价的 商品打印出来*/
/*从键盘输入八种商品价格,求其最高价最低价和平均价并把高于平均价的 商品打印出来*/
#include <stdio.h>
float highestp(float p[]) //寻找最大值
{
    int i;
    float hp;
    hp = p;
    for (i = 0; i < 7; i++)
    {
      if (hp < p)
      {
            hp = p;
      }
    }
    return (hp);
}

float lowestp(float p[]) //寻找最小值
{
    int i;
    float lp;
    lp = p;
    for (i = 0; i < 7; i++)
    {
      if (lp > p)
      {
            lp = p;
      }
    }
    return (lp);
}

float average(float p[]) //计算平均值
{
    float sum = 0.0, aver;
    for (int i = 0; i < 8; i++)
    {
      sum = sum + p;
      aver = sum / 8;
    }
    return (aver);
}
void readp(float p)
{
    for (int i = 0; i < 8; i++)
    {
      scanf("%f", &p);
    }
    printf("物价是\n");
    for (int i = 0; i < 8; i++)
    {
      printf("%6.2f\t", p);
    }
    printf("\n");
    return;
}
int ppp(float p, float aver)
{
    for (int i = 0; i < 8; i++)
    {
      if (p > aver)
      {
            printf("%6.2f", p);
      }
    }
    return 0;
}
void main()
{
    float hp, lp, ap;
    float p;
    readp(p);
    ap = average(p);
    hp = highestp(p);
    lp = lowestp(p);
    printf("最高价 = %6.2f\n最低价 = %6.2f\n平均价 = %6.2f\n", hp, lp, ap);
    printf("高于平均价的价格");
    ppp(p, average(p));
}
---------------------------------------------------------------------------------------------------------------------
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-ltojbysc.lwo --stdout=Microsoft-MIEngine-Out-qth3ge1g.bm5 --stderr=Microsoft-MIEngine-Error-s50debj0.4oc --pid=Microsoft-MIEngine-Pid-eivff3sa.2cr --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
23
36
65
15
2
45
32
66
物价是
23.00   36.00   65.00   15.00    2.00   45.00   32.00   66.00
最高价 =66.00
最低价 =   2.00
平均价 =35.50
高于平均价的价格 36.00 65.00 45.00 66.00
E:\Administrator\Documents\My C>
=============================================================================

WOJIAOCHENXU 发表于 2019-5-21 16:53:11

你好 请问你有这方面的视频完整的视频吗 我在论坛里发现好多0基础C语言都打开不了.有的话可否发份链接给我 或者发送至我的邮箱 690135978@qq.com 多谢了

bin554385863 发表于 2019-5-21 20:23:55

B站有老甲鱼的视频
还有好多其他人的视频

小快艇 发表于 2019-5-21 20:42:41

#include<iostream>
#include<string>
using namespace std;
int main()
{
   string nums;
    int target;
    int i,j;
    cin>>nums;
    cin>>target;
    for(i=0;i<nums.size()-1;i++)
         for(j=i;j<nums.size()-1;j++)
       if(nums+nums==target)
         cout<<i<<j<<endl;
   return 0;
}

为什么不能输出

bin554385863 发表于 2019-5-21 20:54:07

小快艇 发表于 2019-5-21 20:42
#include
#include
using namespace std;


你这是C#吧{:9_220:}

我学的是C{:9_220:}
页: [1] 2 3
查看完整版本: 小白学习C语言日记