C语言 复习输出输入函数 字符串输出输入函数 循环结构 选择结构 4.11

4.11

复习

递归函数:

自己调用自己调用的函数

一定要有退出条件

typedef:

对数据类型取别名

例:

typedef unsigned long u8;

指针函数:

本质是个函数,返回值类型是一个地址

函数指针:

typedef int(*p_func)(int,char)

int func(int a,char b);

int (*p)(int,char);

p(3,'a');

p_func p=func;

结构体:

存储不同类型的数据

struct stu

{char name[20];int id;float grade;long a;	

}lisi,*q; //可以写在此处定义结构体变量

一共占有40个字节,按照结构体内最大的数据类型进行对齐

sizeof(struct stu)==40;

struct stu zhangsan;

struct stu *p=&zhangsan //定义一个指针要指向一个变量

struct stu wangwu={"wangwu",3,11812990230};//变量初始化

struct stu arr[10]={{"das",2,23,43},{"eqe",3,65,67}};//数组未完全初始化

zhangsan.a=4;

p->grade=92;

arr[0].a=6;


字符输入输出函数–getchar,putchar

从键盘获取一个字符,返回值为获取到的字符
 例:
    char a;
    a=getchar();
putchar(s); 输出一个字符s。
 例;   
    char a;
	a=getchar();//获取一个字符
	putchar(a);//打印字符
	putchar(10);//打印出换行

标准输入输出函数–printf,scanf

printf:
	printf("格式控制串",输出表);
	格式控制串:%+修饰符+格式控制符
    格式控制符:
		%d  --  输出十进制整数
		%c  --  输出字符型数据
		%f  --  输出浮点型
		%x  --  输出十六进制数
		%o  --  输出八进制数
		%e  --  输出指数形式 
		%s  --  输出字符串形式
		%p  --  输出地址
		%%  --  输出%本身
	修饰符:
		m   --  输出数据域宽,数据长度<m,左补空格
		.n  --  对实数指定小数点后n位
				对字符串指定实际输出位数为n位
		-   --  输出数据在域内左对齐
		+   --  在有符号数的正数前显示+
		0   --  输出数据时指定左面不使用的空位填0
		#   --  在八进制和十六进制前加00x
		l   --  在d,o,x,u前指定输出精度为long
				在e,f,g前指定为double
	输出表:指定输出打印内容
	普通字符原样输出
scanf:
功能:以指定的格式获取数据放入地址表中
一般形式:
	scanf("格式控制串",地址表);
	格式控制串:%修饰符格式控制符
	格式控制符:
		%d  --  输入十进制整数
		%c  --  输入字符型数据
		%f  --  输入浮点型
		%x  --  输入十六进制数
		%o  --  输入八进制数
		%e  --  输入指数形式
		%s  --  输入字符串形式
	修饰符:
		m   --  指定输入的数据长度
		*   --  抑制符,接收数据后不放入地址表
	结束标志:
		1.空格,回车,制表符结束一次输入
		2.遇非法输入
		3.遇数据宽度结束
	
	脏字符:在程序中不必要的字符
		1.用抑制符%*c或空格
		2.用getchar函数吸收
		
	注意:遇到空白符(回车,空格,制表符)会跳过向后获取数据
	
	普通字符原样输出
    
getchar();//可以吸收脏字符,用于循坏输入scanf当中

字符串输入输出–gets puts

gets:
功能:从键盘上获取一串字符串
一般形式:
	gets(char *s)char *s:字符串首地址
	例:
		char a[50];
		gets(a);
puts:
功能:输出指定字符串,会自动换行
一般形式:
	puts(char *s);
	例:
		char a[10]="asd";
		puts(a);

练习:1.删除字符串中的重复字符,如aabbaddffe,删除后的结果,abdfe;

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{ 
    int i,j,k;
   // int len;
    char a[20];
    scanf("%s",a);
    //len=strlen(a);
   // printf("%d",len);
    for(i=0;a[i]!='\0';i++)
    {
        for(j=i+1;a[j]!='\0';j++)
        {
            if(a[i]==a[j])
            {
                k=j;
             while(a[k]!='\0')
             {
                 a[k]=a[k+1];
                 k++;
             }
             j--;
            }
        }
    }
    for(i=0;a[i]!='\0';i++)
    printf("%c",a[i]);
    puts(" ");

    return 0;
} 
hq

​ 2.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(约瑟夫环)

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{ 
    int i=0,j=0,count=0;//i=下标,j=个数,count=计数。
    int n;
    scanf("%d",&n);
    int a[n];
    memset(a,0,sizeof(a));
   while(count!=n-1)
   {
       if(i==n)//先循环成一个圈;
       {
           i=0;
       }
       if(a[i]==0)
       {
           j++;
           if(j==3)
           {
               a[i]=1;
               j=0;
               count++;
           }
       }
       i++;
   }
   for(i=0;i<n;i++)
   {
       if(a[i]==0)
       printf("%d\n",i+1);
   }
    return 0;
} 

控制语句

选择结构

if…else

一般表达式:
	if(表达式1{
    语句块1}
else if(表达式2{
    语句块2}else//除以上所有情况
    {
        语句块;
    }

switch…case

一般形式:
    switch(表达式)//不能用浮点型数据
    {
            case 常量表达式1:
                语句块;
                breakcase 常量表达式2:
                语句块;
                break;
                …
                default:
                语句块;//最后一个不用添加break自动退出
    }
当表达式结果和常量表达式结果相同时进入,开始执行语句块直到break

循环结构

while

一般形式:
	while (表达式)
	{
		循环体;
	}
死循环: while(1)

do…while

一般形式:
    do
    {
        循环体:
    }while(表达式)

for

一般形式:
    for(表达式1;表达式2;表达式3)
    {
        循环体;
    }

goto

破坏程序的逻辑结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独memories

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值