第十一周编程总结
本次作业所属课程 |
C语言程序设计|| SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 |
本次作业要求 |
|
我在这个课程的目标是 |
学会自主编程 |
本次学习在哪些具体方面帮组我实现目标 |
搞懂递归 |
参考文献 |
C primer plus第六版 |
一、基础题
1、单选题
2-1、宏定义“#define DIV(a, b) a/b”,经DIV(x + 5, y - 5) 引用,替换展开后是()。- x + 5 / y - 5
- (x + 5 / y – 5)
- (x + 5) / (y - 5)
- (x + 5) / (y - 5);
- 不定义参数a和b将导致编译错误
- 不定义参数a、b、t将导致编译错误
- 不定义参数t将导致运行错误
- 不需要定义参数a、b、t类型
void fun(int x)
{
static int y;
……
return;
}
int z;
void main( )
{
int a,b;
fun(a);
……
}
- x,y
- x,y,z
- a,b,z
- a,b,x,y,z
- 静态变量
- 动态变量
- 外部变量
- 内部变量
- 若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度
- 若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度
- 设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑变量生命周期问题
- 静态全局变量使用过多,可那会导致动态存储区(堆栈)溢出
- 自动(auto)
- 静态(static)
- 外部(extern)
- 寄存器(register)
- extern
- register
- auto
- static
- 既能被同一源文件中的函数调用,也能被其他源文件中的函数调用
- 只能被同一源文件中的函数调用,不能被其他源文件中的函数调用
- 只能被其他源文件中的函数调用,不能被同一源文件中的函数调用
- 既不能被同一源文件中的函数调用,也不能被其他源文件中的函数调用
总结:这个预习题还是有点难,翻书都翻了好久,还百度了几个。
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)设计思路
3)本题调试过程中遇到的问题及解决办法
这题按照书上的代码修改的,改了那个输出样例,错了几次就对了
4)运行结果截图
题目二:估值一亿的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)运行结果截图
题目三:八皇后问题
不会写,答案都懒得搜了
二、挑战题
算了吧,基础题都搞不完还挑战题
三、预习题
请举实例解释以下几个概念:数组指针,指针数组,指针函数,函数指针,二级指针,单向链表。(无实例不给分)
四、学习进度条
五、累积博客字数及代码行数
六、结对编程感想
总结:

更多精彩