本次作业所属课程

C语言程序设计||

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

本次作业要求

https://edu.cnblogs.com/campus/zswxy/MS/homework/2829

我在这个课程的目标是

学会自主编程

本次学习在哪些具体方面帮组我实现目标

搞懂递归

参考文献

C primer plus第六版

 

一、基础题

1、单选题

2-1、宏定义“#define DIV(a, b) a/b”,经DIV(x + 5, y - 5) 引用,替换展开后是()。 
  1. x + 5 / y - 5
  2. (x + 5 / y – 5)
  3. (x + 5) / (y - 5)
  4. (x + 5) / (y - 5);
2-2、定义带参数的宏“#define JH(a,b,t) t = a; a = b; b = t”,对两个参数a、b的值进行交换,下列表述中正确的是()。 
  1. 不定义参数a和b将导致编译错误
  2. 不定义参数a、b、t将导致编译错误
  3. 不定义参数t将导致运行错误
  4. 不需要定义参数a、b、t类型
2-3、如果所有的变量按照下面的程序进行定义和声明,那么在main()函数中所有可用的变量为 ()。 
void fun(int x)
{  
    static int y;
    ……
    return;
}
int z;
void main( )
{   
    int a,b;
    fun(a);
    ……
}
  1. x,y
  2. x,y,z
  3. a,b,z
  4. a,b,x,y,z
2-4、如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为( )。 
  1. 静态变量
  2. 动态变量
  3. 外部变量
  4. 内部变量
2-5、下面说法中正确的是()。 
  1. 若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度
  2. 若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度
  3. 设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑变量生命周期问题
  4. 静态全局变量使用过多,可那会导致动态存储区(堆栈)溢出
2-6、凡是函数中未指定存储类别的局部变量,其隐含的存储类型为( )。 
  1. 自动(auto)
  2. 静态(static)
  3. 外部(extern)
  4. 寄存器(register)
2-7、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。 
  1. extern
  2. register
  3. auto
  4. static
2-8、将一个函数说明为static后,该函数将 ( )。
  1. 既能被同一源文件中的函数调用,也能被其他源文件中的函数调用
  2. 只能被同一源文件中的函数调用,不能被其他源文件中的函数调用
  3. 只能被其他源文件中的函数调用,不能被同一源文件中的函数调用
  4. 既不能被同一源文件中的函数调用,也不能被其他源文件中的函数调用

总结:这个预习题还是有点难,翻书都翻了好久,还百度了几个。

 

2、编程题

题目一:汉诺塔问题

1)实验代码

#include<stdio.h>
void hanio(int n,char x,char y,char z);
int main ()
{
    int n;
    char x,y,z;
    
    scanf("%d\n",&n);
    scanf("%c %c %c ",&x,&y,&z);

    hanio(n,x,y,z);
}
void hanio(int n,char x,char y,char z)
{
    if(n==1)
    {
        printf("%d: %c -> %c\n",n,x,y);
    }
    else
    {
        hanio(n-1,x,z,y);
        printf("%d: %c -> %c\n",n,x,y);
        hanio(n-1,z,y,x);
    }
}

2)设计思路

第十一周编程总结 随笔 第1张

 

3)本题调试过程中遇到的问题及解决办法

第十一周编程总结 随笔 第2张

这题按照书上的代码修改的,改了那个输出样例,错了几次就对了

4)运行结果截图

第十一周编程总结 随笔 第3张

 

题目二:估值一亿的AI核心代码 

1)实验代码

#include<stdio.h>
#include<string.h>
int main(void)
{
    char str1[1001];
    static int i,a,x,y,N,b;
    
    scanf("%d\n",&N);
    
    char str[N][1001];
    
    for(i=0;i<N;i++)
    {             
        gets(str[i]);
    }
    
    for(b=0;b<N;b++)
    {            
    i=0;
    a=0;
    x=0;
    while(str[b][i]!='\0')
    {               
        if(str[b][i]==' '&&x==1)
        {         
            str1[a]=' ';
            a++;
            x=0;
        }
        
        if(str[b][i]!=' ')
        {              
            if((str1[a-1]==' ')&&((str[b][i]<'a'||str[b][i]>'z')&&(str[b][i]<'A'||str[b][i]>'Z'))&&((str[b][i]<'0')||(str[b][i]>'9')))
            {
                if(str[b][i]=='?')
                {                  
                    str1[--a]='!';
                    a++;
                    x=1;
                }
                else
                {
                    str1[--a]=str[b][i];
                    a++;
                    x=1;
                }
            }
            else
            {
                if(str[b][i]<='Z'&&str[b][i]>='A'&&str[b][i]!='I')
                {      
                    str1[a]=str[b][i]-'A'+'a';
                    a++;
                    x=1;
                }
                else
                {
                    if(str[b][i]=='?')
                    {                     
                        str1[a]='!';
                        a++;
                        x=1;
                    }
                    else
                    {                             
                        str1[a]=str[b][i];
                        a++;
                        x=1;
                    }
                }
            }
        }
        i++;                 
    }
    
    str1[a]='\0';    
               
    if(str1[a-1]==' ')
    {          
        str1[a-1]='\0';
    }
    
    i=0;
    
    while(str1[i]!='\0')
    {
        
         
        if(str1[i]=='c'&&str1[i+1]=='a'&&str1[i+2]=='n'&&str1[i+3]==' '&&str1[i+4]=='y'&&str1[i+5]=='o'&&str1[i+6]=='u')
        {   
         
            if(((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i+7]<'a'||str1[i+7]>'z')&&(str1[i+7]<'A'||str1[i+7]>'Z')))
            { 
            
                str1[i]='I';                     
                str1[i+1]=' ';
                str1[i+2]='c';
                str1[i+3]='a';
                str1[i+4]='n';
                str1[i+5]='8';
                str1[i+6]='8';
                i+=7;                             
                continue;
            }
        }
        if(str1[i]=='c'&&str1[i+1]=='o'&&str1[i+2]=='u'&&str1[i+3]=='l'&&str1[i+4]=='d'&&str1[i+5]==' '&&str1[i+6]=='y'&&str1[i+7]=='o'&&str1[i+8]=='u')
        {
            
            if(((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i+9]<'a'||str1[i+9]>'z')&&(str1[i+9]<'A'||str1[i+9]>'Z')))
            {
                
                str1[i]='I';                      
                str1[i+1]=' ';
                str1[i+2]='c';
                str1[i+3]='o';
                str1[i+4]='u';
                str1[i+5]='l';
                str1[i+6]='d';
                str1[i+7]='8';
                str1[i+8]='8';
                i+=7;                             
                continue;
            }
        }
        if(str1[i]=='I'&&((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i+1]<'a'||str1[i+1]>'z')&&(str1[i+1]<'A'||str1[i+1]>'Z')))
        {
            
            str1[i]='7';
        }
        if((str1[i]=='m'&&str1[i+1]=='e')&&((str1[i-1]<'a'||str1[i-1]>'z')&&(str1[i-1]<'A'||str1[i-1]>'Z'))&&((str1[i+2]<'a'||str1[i+2]>'z')&&(str1[i+2]<'A'||str1[i+2]>'Z')))
        {
            
            str1[i]='5';
            str1[i+1]='6';
            i++;
        }
       
        i++;
        
    }
    
    printf("%s\nAI: ",str[b]);
    y=strlen(str1);
    
    for(i=0;i<y;i++)
    {
        if(str1[i]=='8')
            continue;
        else if(str1[i]=='5'&&str1[i+1]=='6')
        {
            printf("you");
            i++;
            continue;
        }
        else if(str1[i]=='7')
        {
            printf("you");
        }
        else
            printf("%c",str1[i]);
    }
    printf("\n");
    }
    
}

 

2)设计思路

 

3)本题调试过程中遇到的问题及解决办法

第十一周编程总结 随笔 第4张

 

4)运行结果截图

第十一周编程总结 随笔 第5张

 

题目三:八皇后问题

不会写,答案都懒得搜了

二、挑战题

算了吧,基础题都搞不完还挑战题

三、预习题

请举实例解释以下几个概念:数组指针,指针数组,指针函数,函数指针,二级指针,单向链表。(无实例不给分)

 

四、学习进度条

 

五、累积博客字数及代码行数

 

六、结对编程感想

 

总结:

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄