300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > -成信大-C语言程序设计-1学期《C语言程序设计B》C-trainingExercises19

-成信大-C语言程序设计-1学期《C语言程序设计B》C-trainingExercises19

时间:2021-09-18 06:07:52

相关推荐

-成信大-C语言程序设计-1学期《C语言程序设计B》C-trainingExercises19

文章目录

-成信大-C语言程序设计-1学期《C语言程序设计B》C-trainingExercises19P820P813P311P743P750P771

-成信大-C语言程序设计-1学期《C语言程序设计B》C-trainingExercises19

整体上,对于字符串,大家要有足够的印象:

字符串常量可以直接用双引号给出来而字符串本身如果需要内存来装它,则一定是用字符数组来完成,用字符数组是最直接简单的方式,但不够灵活或者是主动使用malloc来分配相应的字符型内存空间【以后会讨到】

对于字符中的整体操作,有两种方式

使用scanf输入,使用%s方式整体输入,但不能有空格,制表,或是回车符,因为遇到这三种字符,输入就结束了使用gets输入,遇到回车结束所以:如果输入的串里,包含了空格,制表,则只能使用gets来输入。 当然,也可以使用循环的方式,使用scanf的%c逐个字符的一个一个的输入,这样子,空格也可以输入到相应的数组中去可以使用长度控制可以使用结束符控制可以使用异常结束来控制【不符合软件工程要求,但可以做到】

对于函数,现在要求掌握

函数返回值函数命名函数入口参数函数声明函数体实现函数调用

函数是C的思维方式,也是顶级的处理问题的思维方式:

自顶向下,逐步求精模块化,复用入口参数化,通用入口防御性检测,可靠对函数做单元测试,形成库函数对函数做专门的注释,形成文档,专利化

P820

下载的源代码是:

#include <stdio.h>/* userCode(<50字符): 自定义函数之原型声明 */______________________________int main(void){int n;long int Fn;printf("Please input a number: ");scanf("%d", &n);______________________________ /* userCode(<50字符): 调用函数计算f(n) */printf("\nf(%d) = %ld\n", n, Fn);return 0;}/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

修改过后的代码是:

#include <stdio.h>/* userCode(<50字符): 自定义函数之原型声明 */long int myfun(int n);int main(void){int n;long int Fn;printf("Please input a number: ");scanf("%d", &n);Fn = myfun(n); /* userCode(<50字符): 调用函数计算f(n) */printf("\nf(%d) = %ld\n", n, Fn);return 0;}/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */long int myfun(int n){if (n==1){return 1;}else if (n>1){return 2 * myfun(n / 2) + n;}else{return 0;}}

P813

下载的源代码是:

#include <stdio.h>/* userCode(<50字符): 自定义函数之原型声明 */______________________________int main(void){int n;double fn;printf("Input n (13>=n>=2): ");scanf("%d", &n);______________________________ /* userCode(<50字符): 调用函数计算fn */printf("\nf(%d)=%.0f\n", n, fn);return 0;}/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

修改过后的代码是:

#include <stdio.h>/* userCode(<50字符): 自定义函数之原型声明 */double myfun(int n);int main(void){int n;double fn;printf("Input n (13>=n>=2): ");scanf("%d", &n);fn = myfun(n); /* userCode(<50字符): 调用函数计算fn */printf("\nf(%d)=%.0f\n", n, fn);return 0;}/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */double myfun(int n){if (n==0){return 0;} else if (n==1){return 1;} else if (n==2){return 2;} else{return myfun(n - 1) * 2 + myfun(n - 2) * myfun(n - 3);}}

P311

/**编写一程序P311.C实现以下功能①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。提示,合并时可使用中间数组。例如:s1输入为"123456789",S2输入为"abcdefghijk",则输出的s1为:1a2b3c4d5e6f7g8h9ijk③在屏幕上输出新生成的s1。编程可用素材:printf("Please input string1:");printf("Please input string2:");printf("\nstring1:...\n");程序的运行效果应类似地如图1所示,其中的123456789和abcdefghijk是从键盘输入的内容。图1 程序运行效果示例*/#include <stdio.h>#define N 127int main(int argc, char const *argv[]){int i;int j;char str1[N], str2[N];char newStr[N * 2];printf("Please input string1:");gets(str1);printf("Please input string2:");gets(str2);for (i = 0, j = 0; str1[i] != '\0' && str2[i] != '\0'; i++){newStr[j++] = str1[i];newStr[j++] = str2[i];}while (str2[i] != '\0'){newStr[j++] = str2[i++];}while (str1[i] != '\0'){newStr[j++] = str1[i++];}newStr[j] = '\0';printf("\nstring1:%s\n", newStr);return 0;}

P743

/**编写一程序P743.C实现以下功能从键盘输入一行可带空格的字符串(约定:字符数≤127字节),按逆序输出该字符串。注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。编程可用素材:printf("Input a string: ");printf("\nThe result is: ");程序的运行效果应类似地如图1所示,图1中的abc xyz是从键盘输入的内容。Input a string: abc xyzThe result is: zyx cba*/#include <stdio.h>#include <string.h>#define N 127int main(int argc, char const *argv[]){int i;char str[N];printf("Input a string: ");gets(str);printf("\nThe result is: ");for (i = (int)strlen(str); i>= 0 ; i--){putchar(str[i]);}return 0;}

P750

/**编写一程序P750.C实现以下功能输入字符串s(约定:字符数≤100字节),将字符串s中所有字符‘*’删除,并将修改后的字符串显示出来。编程可用素材:printf("Please input a string: ");printf("\nThe result is: ");程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。Please input a string: *dgjk* %&* *df78dg 88**The result is: dgjk %& df78dg 88*/#include<stdio.h>#define N 100int main(int argc, char const *argv[]){int i,j;char str[N];char strNew[N];printf("Please input a string: ");gets(str);// remove star alphafor ( i = 0,j=0; str[i]!='\0'; i++){if (str[i]!='*'){strNew[j++] = str[i];}}strNew[j] = '\0';printf("\nThe result is: %s", strNew);return 0;}

P771

/**编写一程序P771.C实现以下功能编程在一个已知的字符串(约定:字符数≤127字节)中查找最长单词,输出最长单词的长度。注意事项:(1)只考虑输入的字符串中仅含空格和其它可见字符,仅用空格用来分隔不同单词。(2)字符串中可能只有1个单词。(3)字符串中可能1个单词都没有,此时最长单词的长度为0。(4)编程可用素材:printf("please input a string:\n");printf("\nmax_length of the string is: %d\n");程序的运行效果应类似地如图1所示,图1中的hello welcome to chengdu-CUIT是从键盘输入的内容。*/#include <stdio.h>#define N 127int main(int argc, char const *argv[]){int i, j;int oldLength = 0;int length;char str[N];printf("please input a string:\n");gets(str);for (i = 0; str[i] != '\0'; i++){if (str[i] != ' '){length = 0;for (j = i; str[j] != ' ' && str[j]!='\0'; j++) // 开始求长度{length++;}if (oldLength<length) // 记录最长的串长度{oldLength = length;}i = j;}}printf("\nmax_length of the string is: %d\n",oldLength);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。