首页 > 其他分享 >PA0:关于练习题

PA0:关于练习题

时间:2024-01-17 15:15:38浏览次数:32  
标签:PA0 练习题 int char case 关于 letter printf break

练习11:

 

附加题:复制操作:

    i=0;
     while(i<argc)
     {
         states[i]=argv[i];
         i++;
     } 
     

如果还要考虑安全性,那就在循环体里面增加判断:

  i=0;
  j=0;
  while(i<argc)
 {
       states[i]=argv[i];
       i++;
       j++;
       if(j>=3)  break;   //达到states上限后强行中止循环
 } 
     

2)首先, char a[]=xxx,char b[]=xxx。这种情况下,b不能等于a,这是非法语句,不可以将别的值赋给数组名,这是常量。

如果用char*a =“yes”,char *b=“no”,然后b=a,这是可以的。但是这并也不是复制,因为a和b都是指针,我们只是把a指针的值给了b,换句话说,两个指针现在都指向了内存a,但是原来的两个字符串都还好好地躺在内存里。如果要真的实现字符串复制的效果,要用strcpy。

 

 

----------------练习13--------

 

#include <stdio.h>

int main(int argc,char *argv[])
{
    if(argc!=2)
    {
        printf("wrong argument\n");
        return 1;
    }
    
    int i=0;
    for(i=0;argv[1][i]!='\0';i++)
    {
        char letter=argv[1][i];
        switch(letter) {
            case 'A':
                printf("%d: %c\n", i,letter-32);
                break;

            case 'E':
                printf("%d: %c\n", i,letter-32);
                break;

            case 'I':
                printf("%d: %c\n", i,letter-32);
                break;

            case 'O':
                printf("%d: %c\n", i,letter-32);
                break;

            case 'U':
                printf("%d: %c\n", i,letter-32);
                break;

            case 'Y':
                if(i > 2) {
                     printf("%d: %c\n", i,letter-32);
                }
                break;

            default:
                printf("%d: %c is not a vowel\n", i, letter);
        }
    }
    return 0;
}

//大写转小写

如果不限制要转换的字母是哪个,那可以直接用if(letter>='A' && letter <='Z')  printf("%c \n",letter-32);

在Y的例子里,break写在if条件外。因为if是条件判断,不一定要进入。如果break写在if里面,有时候就无法走到break,会一直向下走入default,把default的代码也执行一遍。

 

-----------------练习14---------

附加题:修改后的程序:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

// forward declarations
void print_letters(char arg[]);

void print_arguments(int argc, char *argv[])
{
    int i = 0;
    int len;
    for(i = 0; i < argc; i++) 
    {
        len=strlen(argv[i]);
        print_letters(argv[i],len);
    }
}

void print_letters(char arg[],int len)
{
    int i = 0;

    for(i = 0; i<len; i++) 
    {
        char ch = arg[i];

        if( isalpha(ch) || isblank(ch) ) 
        {
            printf("'%c' == %d ", ch, ch);
        }
    }

    printf("\n");
}

 

----------------练习15-------

对于字符串,sizeof()在处理长度时会计入\0作为一个字符,它统计的是占用空间的大小;而strlen()只计算字符串长度,不考虑\0结束符。

对于一个char指针  :char *a;  它可以指向单个字符,也可以是指向一个字符数组或者字符串,C语言中没有直接区别指向单个字符还是数组的功能。

  注意,字符串在C语言中是字符串常量的存储形式。存储在常量区,不可以修改。即char *a="yes"  ,不可以用a[i]的方式修改内容。 而字符数组存储在栈区,可以修改内容。

 

-----------------------------------------

 

标签:PA0,练习题,int,char,case,关于,letter,printf,break
From: https://www.cnblogs.com/namezhyp/p/17967342

相关文章

  • 关于提交git出现“lint-staged“报错
    因为提交推送前会触发pre-commit勾子,由于代码出现不规范被检测到所以禁止提交,如果想取消这个提交前校验可以卸载掉husky,这里以npm为例输入命令:npm  uninstallhusky--save其他两种解决办法:1:进入项目的.git文件夹这个文件夹默认为隐藏的,可先设置显示,再进入hooks文件夹,删除pre......
  • [Java]关于基本数据类型与引用类型赋值时的底层分析的小结(简述)
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17969159出自【进步*于辰的博客】目录1、关于赋值1.1基本数据类型赋值1.2String类型赋值2、关于String赋值2.1情形一2.2情形二3、关于String与char[]的比较4、不同类型引......
  • 关于二叉树递归代码的粗鄙理解
    整体来看,二叉树的递归代码,可以分为终止条件,单层递归逻辑。单层递归逻辑就是所谓的根左右那三种,选哪一种也是有讲究的,如果不需要对根节点进行处理,那三种都可以。如果题目侧重与由子节点推到父节点,就采用后序遍历。如果题目侧重与由父节点推到子节点,就采用前序遍历。终止条件怎......
  • 关于修改prometheus-operator 方式下的prometheus的配置文件
    fq简单介绍prometheus-operator中的每个PrometheusCRD资源,Operator都会以StatefulSet形式在相同的命名空间下部署对应配置的资源,PrometheusPod的配置是通过一个包含Prometheus配置的名为的Secret对象声明挂载的。该CRD根据标签选择来指定部署的Prometheus实......
  • 关于修改Prometheus指标告警阈值
     方法一:在rancher平台仪表盘里修改 修改告警规则的配置文件 修改阈值并保存 rules界面查看是否生效 方法二: ......
  • 关于命令行修改K8s内Prometheus配置文件参数
    #登录master节点操作1、进入prometheus介质目录:[root@k8s-master01]$cd/yang/operator/operator-0.7/manifests/prometheus2、备份prometheus配置文件[root@k8s-master01]$cpprometheus-prometheus.yamlprometheus-prometheus.yaml.202312153、编辑prometheus配置文件修......
  • 关于CH32V003J4M6下载烧录注意事项
    对CH32V003J4M6进行下载烧录时,注意打印引脚要修改使用复用的打印引脚,否则因为PD1与PD5引脚是合封在一起的,使用默认的打印引脚之后会导致PD1的SWDIO信号受影响而无法下载以及debug,需要清空flash之后才能继续下载使用。  ......
  • maven项目关于target目录没有生成xml文件的解决方案
    1.这是我的项目目录结构2.在我通过maven的install后,target目录中并没有xml文件解决方案:1.在maven的pom文件中添加2.再通过maven的install后,target目录中出现xml文件......
  • PA0:关于练习题
    网页浏览体验很差,希望下次不要再找广告满天飞的网站搭翻译博客。网页做的很好,以后别做了。  不使用stdio库。gcc在make时会提示存在implicitdeclaration(隐式声明)--------------------------------------------makefile基本指令解释:CFLAGS=-Wall-g clean:   rm......
  • 关于gunicorn与异步兼容性问题:AttributeError: module 'select' has no attribute 'ep
    关于gunicorn与异步兼容性问题:AttributeError:module'select'hasnoattribute'epoll'背景:介绍:  在使用gunicorn、Flask&flask-sockets部署,实现websocket协议中同类消息阻塞,不同类消息不阻塞场景。异常:[2024-01-1510:22:16+0800][31655][ERROR]Ex......