1请编写一个程序

1.请编写一个程序,从键盘输入若干单词(每个单词一行),找出最长的单词

问题分析: 根据题意要求,需要两个数组str[80],maxstr[80],一个用来保存每次输入的单词str[80],另一个用来保存最长的单词maxstr[80],每次从键盘输入一个新单词,我们就把这个新单词和目前已知最长的单词比较,如果发现新单词更长,就把这个新单词拷贝到用来保存最长的单词的数组中maxstr[80].

解决这个问题的基本步骤如下:

1、 定义两个数组char str[80],maxstr[80];定义目前已知最长的单词的长度,定义每次输

入的单词的长度int max=0,len=0.

2、 从键盘取得单词(使用函数),获得长度len,判断max小于len,如真,拷贝,如

假,再取下一个.

3、 查看获得长度len是否大于0,如真,转到步骤2,如假,转到步骤4

4、 把这个最大字符maxstr[80]输出来.

答案:

#include

#include

main()

{ char str[80],maxstr[80];

int max=0,len;

do{

printf("Enter a string:");

gets(str);

len=strlen(str);

if(len>max){

strcpy(maxstr,str);

max=len;

}

}while(len>0);

printf("The max string is %s\n",maxstr);

}

2.请编写一个程序,输入一个文本行,其中包含多个单词,请计算其中最长的单词长度。

问题分析:根据题意要求,首先需要一个数组来保存文本行str[256],两个数组,maxword[256],一个用来保存要考察的每个单词word[256],另一个用来保存最长的单词maxword[256],从文本行里遍历每个单词,并把它放到数组word[256]中,下面的就和上一题相同了,我们就把这个新单词和目前已知最长的单词比较,如果发现新单词更长,就把这个新单词拷贝到用来保存最长的单词的数组中maxword[256],注意每次把新单词拷贝到数组中maxword[256]前,要先对它清零.

答案:

#include

#include

void main( )

{ char str[256],word[256],maxword[256];

int k=0,wordlen,maxlen=0,n;

gets(str);

while(str[k]!='\0'){

wordlen=0; n=0;

while(str[k]==' ') k++;

while(str[k]!='\0' && str[k]!=' '){

wordlen++; word[n++]=str[k++];

}

word[n]='\0';

if(maxlen

maxlen=wordlen; strcpy(maxword,word);

}

}

printf("The max word is %s, len=%d\n",maxword,maxlen);

}

3.请编写一个程序,判断通过键盘输入的字符串是否表示一个合法的标识符。标识符的命名规则是:第一个字符必须是字母或下划线(_),后面可以跟随字母、数字或下划线。

问题分析: 这个题目的关键是对每个字母进行判断,

1、 第一个字符必须是字母或下划线(_)使用if(str[0]!='_' && !isalpha(str[0]) )判

断.

2、 后面跟随的必须是字母、数字或下划线,我们考虑使用一个for循环.

3、 另外,为了标示这个字母是否合法,要用一个标记位valid=1来进行标记.

答案:

#include

#include

main( )

{

char str[81];

int k, valid=1;

gets(str);

if(str[0]!='_' && !isalpha(str[0]) )

valid=0;

else

for(k=1;str[k]!='\0';k++)

if(str[k]!='_' && !isalnum(str[k]) ){

valid=0;

break;

}

if(valid)

printf("%s is valid\n", str);

else

printf("%s is invalid\n", str);

}

4.请编写一个程序,其功能为转换日期的表示形式。例如,将输入的字符串形式表示的日期格式10/25/1990转换成Oct,25,1990格式。

问题分析: 这是一个日期表示形式的转换题,用数学角度分析,实际上这个题目我们只要对字符串形式10/25/1990截取,再用对应的形式输出即可,其中月份的转换稍稍有点麻烦,考虑使用switch(…) { case 1:…;break;}语法就可。

解决这个问题的基本步骤如下:

1、 声明定义必要的变量,如date[11]表示字符串形式表示的日期格式,mm[3] 表

示要输出的月份如Oct,month,day,yea表示要输出的数字月日年.

2、 字符串形式表示的日期格式截取计算相应的数字月日年.

3、 switch(…) { case 1:…;break;}语法转换相应的字符月份.

答案:

#include

#include

main()

{ char

char mm[3];

int month,day,year;

printf("input date(mm/dd/yyyy)?");

gets(date);

month=(date[0]-'0')*10+date[1]-'0';

day=(date[3]-'0')*10+date[4]-'0';

year=(date[6]-'0')*1000+(date[7]-'0')*100+(date[8]-'0')*10+date[9]-'0';

switch(month)

{ case 1:strcpy(mm,"Jan");break;

case 2:strcpy(mm,"Feb");break;

case 3:strcpy(mm,"Mar");break;

case 4:strcpy(mm,"Apr");break;

case 5:strcpy(mm,"May");break;

case 6:strcpy(mm,"Jun");break;

case 7:strcpy(mm,"Jul");break;

case 8:strcpy(mm,"Aug");break;

case 9:strcpy(mm,"Sep");break;

case 10:strcpy(mm,"Oct");break;

case 11:strcpy(mm,"Nov");break;

case 12:strcpy(mm,"Dec");break;

}

printf("%s,%d,%d\n",mm,day,year);

getch();

}

5.请编写一个程序,其功能为从一个字符串中删除指定字符。

问题分析: 按照题目的要求,我们要在一个字符串中删除指定字符,可以对这个字符串遍历,当发现字符串中有指定字符时,就用它的下个字符把这个字符替换掉,并依次扫描,扫描结束,最后在末尾加上'\0',表示结束了。

答案:

#include

main( )

{ char s[ ]="My name is Jia Zhongning";

char c= 'n';

int i,j;

printf("\nThe string is %s\n", s);

for(i=j=0; s[i]!='\0'; i++)

if(s[i]!=c)

s[j++]=s[i];

s[j]='\0';

if(i==j)

printf("Not found %c\n",c);

else

printf("The string is %s\n",s);

}

6.请编写一个程序,把一个字符串拷贝到另一个字符数组中去。

问题分析: 这个题目很简单,用个while循环就可,在循环里,把数组中每个字符都遍历一遍,要注意遍历结束的条件s[k]) != '\0'

答案:

#include

main( )

{

char s[]="My name is Jia Zhongning",d[40];

int k=0;

while ((d[k]=s[k]) != '\0')

k++;

printf("%s\n",d);

}

7.请编写一个程序,比较两个从键盘输入的字符串根据比较结果输出相应信息。

问题分析: 根据题意要求,两个字符串中字符的比较,对每个字符比较有四种情况,1、

字符串1字符结束了,2、字符串2字符结束了,3、字符串1字符大于字符串2字符,4、字符串1字符小于字符串2字符。

根据各种情况给出相应的输出

答案:

#include

main( )

{ char str1[40],str2[40];

int k;

printf("Enter 2 strings:");

gets(str1);

gets(str2);

for(k=0; str1[k]==str2[k]; k++)

if(str1[k]=='\0'){

printf("%s equals %s\n",str1,str2);

break;

}

if(str1[k]>str2[k])

printf("%s is bigger\n",str1);

else

if(str1[k]

printf("%s is bigger\n",str2);

}

8.请编写一个程序,从键盘输入两个字符串,然后把第2个字符串接到第1个字符串之后,成为一个字符串。

问题分析:根据题意要求,把第2个字符串接到第1个字符串之后,成为一个字符串,我们需要两个数组str1[80],str2[40],str1[80]表示第1个字符串,str2[40] 表示第2个字符串;先对第1个字符串遍历到字符串末尾,第2个字符串从开头开始,第1个字符串从末尾开始,第2个字符串对第1个字符串依次赋值,直到第2个字符串结束,要注意对第1个字符串末尾赋值'\0'

答案:

#include

main( )

{ char str1[80],str2[40];

int k,j;

printf("Enter 2 strings:");

gets(str1);

gets(str2);

k=0;

while(str1[k]!='\0')

k++;

j=0;

while((str1[k++]=str2[j++])!='\0') ;

printf("%s\n",str1);

}

1.请编写一个程序,从键盘输入若干单词(每个单词一行),找出最长的单词

问题分析: 根据题意要求,需要两个数组str[80],maxstr[80],一个用来保存每次输入的单词str[80],另一个用来保存最长的单词maxstr[80],每次从键盘输入一个新单词,我们就把这个新单词和目前已知最长的单词比较,如果发现新单词更长,就把这个新单词拷贝到用来保存最长的单词的数组中maxstr[80].

解决这个问题的基本步骤如下:

1、 定义两个数组char str[80],maxstr[80];定义目前已知最长的单词的长度,定义每次输

入的单词的长度int max=0,len=0.

2、 从键盘取得单词(使用函数),获得长度len,判断max小于len,如真,拷贝,如

假,再取下一个.

3、 查看获得长度len是否大于0,如真,转到步骤2,如假,转到步骤4

4、 把这个最大字符maxstr[80]输出来.

答案:

#include

#include

main()

{ char str[80],maxstr[80];

int max=0,len;

do{

printf("Enter a string:");

gets(str);

len=strlen(str);

if(len>max){

strcpy(maxstr,str);

max=len;

}

}while(len>0);

printf("The max string is %s\n",maxstr);

}

2.请编写一个程序,输入一个文本行,其中包含多个单词,请计算其中最长的单词长度。

问题分析:根据题意要求,首先需要一个数组来保存文本行str[256],两个数组,maxword[256],一个用来保存要考察的每个单词word[256],另一个用来保存最长的单词maxword[256],从文本行里遍历每个单词,并把它放到数组word[256]中,下面的就和上一题相同了,我们就把这个新单词和目前已知最长的单词比较,如果发现新单词更长,就把这个新单词拷贝到用来保存最长的单词的数组中maxword[256],注意每次把新单词拷贝到数组中maxword[256]前,要先对它清零.

答案:

#include

#include

void main( )

{ char str[256],word[256],maxword[256];

int k=0,wordlen,maxlen=0,n;

gets(str);

while(str[k]!='\0'){

wordlen=0; n=0;

while(str[k]==' ') k++;

while(str[k]!='\0' && str[k]!=' '){

wordlen++; word[n++]=str[k++];

}

word[n]='\0';

if(maxlen

maxlen=wordlen; strcpy(maxword,word);

}

}

printf("The max word is %s, len=%d\n",maxword,maxlen);

}

3.请编写一个程序,判断通过键盘输入的字符串是否表示一个合法的标识符。标识符的命名规则是:第一个字符必须是字母或下划线(_),后面可以跟随字母、数字或下划线。

问题分析: 这个题目的关键是对每个字母进行判断,

1、 第一个字符必须是字母或下划线(_)使用if(str[0]!='_' && !isalpha(str[0]) )判

断.

2、 后面跟随的必须是字母、数字或下划线,我们考虑使用一个for循环.

3、 另外,为了标示这个字母是否合法,要用一个标记位valid=1来进行标记.

答案:

#include

#include

main( )

{

char str[81];

int k, valid=1;

gets(str);

if(str[0]!='_' && !isalpha(str[0]) )

valid=0;

else

for(k=1;str[k]!='\0';k++)

if(str[k]!='_' && !isalnum(str[k]) ){

valid=0;

break;

}

if(valid)

printf("%s is valid\n", str);

else

printf("%s is invalid\n", str);

}

4.请编写一个程序,其功能为转换日期的表示形式。例如,将输入的字符串形式表示的日期格式10/25/1990转换成Oct,25,1990格式。

问题分析: 这是一个日期表示形式的转换题,用数学角度分析,实际上这个题目我们只要对字符串形式10/25/1990截取,再用对应的形式输出即可,其中月份的转换稍稍有点麻烦,考虑使用switch(…) { case 1:…;break;}语法就可。

解决这个问题的基本步骤如下:

1、 声明定义必要的变量,如date[11]表示字符串形式表示的日期格式,mm[3] 表

示要输出的月份如Oct,month,day,yea表示要输出的数字月日年.

2、 字符串形式表示的日期格式截取计算相应的数字月日年.

3、 switch(…) { case 1:…;break;}语法转换相应的字符月份.

答案:

#include

#include

main()

{ char

char mm[3];

int month,day,year;

printf("input date(mm/dd/yyyy)?");

gets(date);

month=(date[0]-'0')*10+date[1]-'0';

day=(date[3]-'0')*10+date[4]-'0';

year=(date[6]-'0')*1000+(date[7]-'0')*100+(date[8]-'0')*10+date[9]-'0';

switch(month)

{ case 1:strcpy(mm,"Jan");break;

case 2:strcpy(mm,"Feb");break;

case 3:strcpy(mm,"Mar");break;

case 4:strcpy(mm,"Apr");break;

case 5:strcpy(mm,"May");break;

case 6:strcpy(mm,"Jun");break;

case 7:strcpy(mm,"Jul");break;

case 8:strcpy(mm,"Aug");break;

case 9:strcpy(mm,"Sep");break;

case 10:strcpy(mm,"Oct");break;

case 11:strcpy(mm,"Nov");break;

case 12:strcpy(mm,"Dec");break;

}

printf("%s,%d,%d\n",mm,day,year);

getch();

}

5.请编写一个程序,其功能为从一个字符串中删除指定字符。

问题分析: 按照题目的要求,我们要在一个字符串中删除指定字符,可以对这个字符串遍历,当发现字符串中有指定字符时,就用它的下个字符把这个字符替换掉,并依次扫描,扫描结束,最后在末尾加上'\0',表示结束了。

答案:

#include

main( )

{ char s[ ]="My name is Jia Zhongning";

char c= 'n';

int i,j;

printf("\nThe string is %s\n", s);

for(i=j=0; s[i]!='\0'; i++)

if(s[i]!=c)

s[j++]=s[i];

s[j]='\0';

if(i==j)

printf("Not found %c\n",c);

else

printf("The string is %s\n",s);

}

6.请编写一个程序,把一个字符串拷贝到另一个字符数组中去。

问题分析: 这个题目很简单,用个while循环就可,在循环里,把数组中每个字符都遍历一遍,要注意遍历结束的条件s[k]) != '\0'

答案:

#include

main( )

{

char s[]="My name is Jia Zhongning",d[40];

int k=0;

while ((d[k]=s[k]) != '\0')

k++;

printf("%s\n",d);

}

7.请编写一个程序,比较两个从键盘输入的字符串根据比较结果输出相应信息。

问题分析: 根据题意要求,两个字符串中字符的比较,对每个字符比较有四种情况,1、

字符串1字符结束了,2、字符串2字符结束了,3、字符串1字符大于字符串2字符,4、字符串1字符小于字符串2字符。

根据各种情况给出相应的输出

答案:

#include

main( )

{ char str1[40],str2[40];

int k;

printf("Enter 2 strings:");

gets(str1);

gets(str2);

for(k=0; str1[k]==str2[k]; k++)

if(str1[k]=='\0'){

printf("%s equals %s\n",str1,str2);

break;

}

if(str1[k]>str2[k])

printf("%s is bigger\n",str1);

else

if(str1[k]

printf("%s is bigger\n",str2);

}

8.请编写一个程序,从键盘输入两个字符串,然后把第2个字符串接到第1个字符串之后,成为一个字符串。

问题分析:根据题意要求,把第2个字符串接到第1个字符串之后,成为一个字符串,我们需要两个数组str1[80],str2[40],str1[80]表示第1个字符串,str2[40] 表示第2个字符串;先对第1个字符串遍历到字符串末尾,第2个字符串从开头开始,第1个字符串从末尾开始,第2个字符串对第1个字符串依次赋值,直到第2个字符串结束,要注意对第1个字符串末尾赋值'\0'

答案:

#include

main( )

{ char str1[80],str2[40];

int k,j;

printf("Enter 2 strings:");

gets(str1);

gets(str2);

k=0;

while(str1[k]!='\0')

k++;

j=0;

while((str1[k++]=str2[j++])!='\0') ;

printf("%s\n",str1);

}


相关内容

  • 质量体系程序文件的编写要求
  • 质量体系程序文件的编写要求 程序文件的格式和内容由编写的组织自行确定.但是,一个组织的所有程序文件应规定统一的内容和格式要求,以便使用者熟悉.适应按固定方法编写的程序文件. 对于原有程序文件的不规范,以及在贯标中要初次设计程序文件格式的组织,在编制程序文件前,管理部门要认真设计并规定程序文件的内容与 ...

  • 计算机二级上机编程题
  • 1程序设计 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回. int fun(STREC *a,STREC *b,int l,int h) {int i,j=0; ...

  • 用 Selenium 自动化验收测试
  • 如何使用 Selenium 测试工具对 Ruby on Rails 和 Ajax 应用程序进行功能测试 文档选项 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 讨论 样例代码 最新推荐 Java 应用开发源动力 - 下载免费软件,快速启动开发 级别: 中级 Christian ...

  • 实验室质量手册和程序文件的编写
  • 实验室质量手册和程序文件的编写 李正东(原中国计量科学研究院教授)编 1质量管理的原则 1.1 以顾客为关注焦点 1.1.1 概述 质量管理的主要关注点是满足顾客要求并且努力超越顾客期望. 1.1.2 理论依据 组织只有赢得和保持顾客和其他有关的相关方的信任才能获得持续成功. 1.2 领导作用 1. ...

  • 消防安全管理体系文件编制指南
  • 消防安全管理体系 件 编 制 指 ××市公安消防支队 二○○九年十一月文南 前 言 随着世界经济的飞速发展,人们生活水平的日益提高,人们对自身安全的保护意识越来越强,对生活环境.工作条件的要求越来越高.这就要求企业主想方设法提高自身消防安全管理水平,改善消防安全条件,为员工和社会提供安全的环境.与此 ...

  • C语言程序设计实验课程简介
  • 四川师范大学计算机科学学院 <C 语言程序设计> 实 验 手 册 2010年2月 年级: 2009级 专业: 计算机科学与技术 班级: 一班 姓名: 谢丹 学号: 2009110156 指导教师: 廖雪花 <C 语言程序设计>实验课程简介 课程名称:C 语言程序设计实验 课程 ...

  • 编程的基本认识介绍
  • 编程的基本认识介绍 简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机虽然功能十分强大.可以供你上网.打游戏.管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的"命令".于 ...

  • 微机原理第三版
  • 微机原理与接口技术实验 (第三版) 信息工程系实验室 袁鹏 2009.3.5 目录 一 显示程序实验......................3 二 数据传送实验......................5 三 数码转换程序实验..................6 四 运算类程序实验..... ...

  • 零基础自学PLC入门
  • 第1章PLC周边常用器件介绍及简单应用..............................................................................-1- 1.1按钮开关.......................................... ...

  • 计算机软件系统
  • 1. 计算机操作系统的主要功能是( ). A )管理计算机系统的软硬件资源,以充分发挥计算机资源的效率,并为其它软件提供良好的运行环境 B )把高级程序设计语言和汇编语言编写的程序翻译到计算机硬件可以直接执行的目标程序,为用户提供良好的软件开发环境 C ) 对各类计算机文件进行有效的管理,并提交计算 ...