12.26学习总结

刷题进度:+3

题解:

/1.在字符串中删除特定的字符

//#include <stdio.h>
//#include <string.h>
//int main()
//{
//    char str[1000];
//    char t[1000];
//    char s[100];
//    int i,j,k;
//    gets(str); 
//    scanf("%[^'\n']%*c",str);//scanf("%[^\n]%*c", str),把’\n’吸收掉(即读取但不存储),防止影响后续输入.替代gets()
//    scanf("%[^'\n']%*c",s);
//    for( i=k=0;i<strlen(str);i++)
//    {
//        for( j=0;j<strlen(s);j++)
//        {
//            if(s[j]==str[i])break;
//        }printf("j=%d\n",j);
//        if(j==strlen(s)){t[k++]=str[i];
//        }
//    }
//    for(int z=0;z<k;z++)
//    {
//        printf("%c",t[z]);
//    }}

2.字符串改造(串):偶数个字符从大到小,奇数个字符从小到大排
//#include <stdio.h>
//#include <string.h>
//int main()
//{
//    char str[15];
//    int i,j,z;
//    scanf("%[^'\n']%*c",str);
//    char s[15],t[15];
//    for( i=j=z=0;i<strlen(str);i++)
//    {        //注意数组下标和数字个数的不同
//        if(i%2!=0)s[j++]=str[i];//偶数个字符
//        else t[z++]=str[i];//奇数
//    }
//    s[j]=0;t[z]=0;//将无内容的数组后边去掉
//    for(int k=0;k<z-1;k++)
//    {
//        for(int b=0;b<z-1-k;b++)
//        {if(t[b]>t[b+1]){
//            int g=t[b];t[b]=t[b+1];t[b+1]=g;//冒泡排序
//        }}
//    }
//    for(int k=0;k<j-1;k++)
//    {
//        for(int b=0;b<j-1-k;b++)
//        {
//            if(s[b]<s[b+1]){
//            int g=s[b];s[b]=s[b+1];s[b+1]=g;
//            }
//        }
//    }
//    strcat(strcpy(str,t),s);//strcpy把t数组复制到str数组中
//    printf("%s",str);//strcat函数把s链接到str数组后    
//}    

3.团体 "USACO" 会是 21*19*1*3*15=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果搭配打印"GO"否者打印"STAY" 
//#include<stdio.h>
//#include <string.h>
//int go(char str[])
//{
//    int i=0,k=0,z=1;
//    for(;i<strlen(str);i++)
//        {
//            k=str[i]-64;
//            z=k*z;
//        }return z%47;
//}
//int main()
//{
//    char str[7],ssr[7];//注意字符串的长度是包含末尾的'\0'的,不正确的数,
//        int i=0,k=0,z=1;//p=0,q=0,l=0,j=1;//组长度后是随机值,不一定会是'\0'
//    scanf("%s",str);getchar();
//    int p=0;p=go(str);
//
//    scanf("%s",ssr);getchar();
//    int q=0;q=go(ssr);

//if(p==q)printf("GO");
//    else printf("STAY");
//}    
//
//#include<stdio.h>
//#include <string.h>
//int main()
//{
//    char str[7],ssr[7];
//        int i=0,k=0,z=1,p=0,q=0,l=0,j=1;
//    scanf("%s",str);getchar();
//    
//    for(;i<strlen(str);i++)
//            {
//                k=str[i]-64;
//                z=k*z;
//            }   l=z%47;
//    scanf("%s",ssr);getchar();
//    for(i=0;i<strlen(ssr);i++)
//                {
//                    p=ssr[i]-64;
//                    j=p*j;
//                }q=j%47;
//    if(l==q)printf("GO");
//    else printf("STAY");
//    return 0;}
//    

今天跟着做的题目学习了一下字符串和结构体的知识。

笔记:函数传参时,参数是需要压栈的,如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能下降。

结构体传参时,传结构体的地址。

指向字符串常量的的指针实际上是const 类型的,不带const 是被允许的,但对该指针所指向的字符串做写入会导致严重后果。

scanf("%s",s)读到空格,回车会结束,需要用scanf 输入带空格的字符串时可以用scanf("%[^'\n']",s),^是非的意思,[^\n]表示输入换行字符就结束读入,这种输入方式可以输入带空格的字符串。

*表示该输入项读入后不赋予任何变量,即可跳过该输入值。scanf("%*[^\n]%*c")表示跳过一行字符串。其中%*c可以把\n吸收但不储存,防止影响后续输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值