第十一周编程总结
Posted lll0719
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十一周编程总结相关的知识,希望对你有一定的参考价值。
宏定义“#define DIV(a, b) a/b”,经DIV(x + 5, y - 5) 引用,替换展开后是()。 (1分)
定义带参数的宏“#define JH(a,b,t) t = a; a = b; b = t”,对两个参数a、b的值进行交换,下列表述中正确的是()。 (1分)
如果所有的变量按照下面的程序进行定义和声明,那么在main()函数中所有可用的变量为 ()。 (2分)
void fun(int x)
{
static int y;
……
return;
}
int z;
void main( )
{
int a,b;
fun(a);
……
}
如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为( )。 (1分)
下面说法中正确的是()。 (1分)
凡是函数中未指定存储类别的局部变量,其隐含的存储类型为( )。 (1分)
在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。 (1分)
将一个函数说明为static后,该函数将 ( )。(1分)
汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。
请编写程序,输入汉诺塔圆片的数量,输出移动汉诺塔的步骤。
输入格式
圆盘数 起始柱 目的柱 过度柱
输出格式
移动汉诺塔的步骤
每行显示一步操作,具体格式为:
盘片号: 起始柱 -> 目的柱
其中盘片号从 1 开始由小到大顺序编号。
输入样例
3
a c b
输出样例
1: a -> c 2: a -> b 1: c -> b 3: a -> c 1: b -> a 2: b -> c 1: a -> c
实验代码;
#include<stdio.h> void hanio(int n, char a, char b, char c); int main(void) { int n; char a, b, c; scanf("%d\\n", &n); scanf("%c %c %c", &a, &b, &c); hanio(n,a,b,c); return 0; } void hanio(int n, char a, char b, char c) { if(n==1) printf("1: %c -> %c\\n", a, b); else{ hanio(n-1, a, c, b); printf("%d: %c -> %c\\n", n, a, b); hanio(n-1, c, b, a); } }
实验思路:
实验结果:
以上图片来自新浪微博。
本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:
- 无论用户说什么,首先把对方说的话在一行中原样打印出来;
- 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
- 把原文中所有大写英文字母变成小写,除了
I
; - 把原文中所有独立的
can you
、could you
对应地换成I can
、I could
—— 这里“独立”是指被空格或标点符号分隔开的单词; - 把原文中所有独立的
I
和me
换成you
; - 把原文中所有的问号
?
换成惊叹号!
; - 在一行中输出替换后的句子作为 AI 的回答。
输入格式:
输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。
输出格式:
按题面要求输出,每个 AI 的回答前要加上 AI:
和一个空格。
输入样例:
6
Hello ?
Good to chat with you
can you speak Chinese?
Really?
Could you show me 5
What Is this prime? I,don ‘t know
输出样例:
Hello ?
AI: hello!
Good to chat with you
AI: good to chat with you
can you speak Chinese?
AI: I can speak chinese!
Really?
AI: really!
Could you show me 5
AI: I could show you 5
What Is this prime? I,don ‘t know
AI: what Is this prime! you,don‘t know
实验代码:
#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"); } }
实验结果:
学习感悟:这周太难了!一时半会我不会做第二题是别人的代码!这周编程结对和一位女生结对,别说女生对作业还是比较细节的;
周/日 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷茫的问题 |
---|---|---|---|---|
第十一周 | 9小时 | 140 | 递归 | 好迷茫啊!咱也说不来啊 |
折线图:
以上是关于第十一周编程总结的主要内容,如果未能解决你的问题,请参考以下文章