您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > C语言上机题库百科园第6章2!南信大!
程序设计/*请编写函数fun,该函数的功能是:判断字符串是否为回文,若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。试题程序:*/#includestdio.h#defineN80intfun(charstr[]){/***************Begin************//***************End************/}voidmain(){chars[N];FILE*out;chartest[][80]={1234321,123421,123321,abcdCBA};inti;printf(Enterastring:);gets(s);printf(\n\n);puts(s);if(fun(s))printf(YES\n);elseprintf(NO\n);/************************************/out=fopen(debug\\out12.dat,w);for(i=0;i4;i++)if(fun(test[i]))fprintf(out,YES\n);elsefprintf(out,NO\n);fclose(out);/************************************/}【参考代码】intfun(charstr[]){inti,n=0,fg=1,j=0;while(str[j]){n++;j++;}for(i=0;in/2;i++)/*循环比较字符*/if(str[i]==str[n-1-i]);/*相同,什么都不作*/else/*不同,直接跳出循环*/{fg=0;break;}returnfg;}/*请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。试题程序:*/#includestring.h#includestdio.h#defineN80intfun(char*s){/************Begin*************//*************End*************/}voidmain(){FILE*wf;charline[N];intnum=0;printf(Enterastring:\n);gets(line);num=fun(line);printf(Thenumberofwordis:%d\n\n,num);/******************************/wf=fopen(d:\\out19.dat,w);fprintf(wf,%d,fun(Thisisabigcar));fclose(wf);/*****************************/}【参考代码】inti,j=0;for(i=0;s[i]!='\0';i++)if(s[i]!=''&&(s[i+1]==''||s[i+1]=='\0'))/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/j++;returnj;/*返回单词个数*//*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。试题程序:*/#includestring.h#includestdio.hvoidfun(char*a){/************Begin*************//************End**************/}voidmain(){chars[81];FILE*in,*out;inti;printf(Enterastring:\n);gets(s);fun(s);printf(Thestringafterdeleted:\n);puts(s);/******************************/in=fopen(in21.dat,r);out=fopen(debug\\out21.dat,w);for(i=0;i8;i++){fscanf(in,%s,s);fun(s);fprintf(out,%s\n,s);}fclose(in);fclose(out);/******************************/}【参考代码】inti=0;char*p=a;while(*p&&*p=='*'){a[i]=*p;i++;p++;}while(*p){if(*p!='*'){a[i]=*p;i++;}p++;}a[i]='\0';/*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestdio.hvoidfun(char*a){/************Begin**************//************End*************/}voidmain(){FILE*wf,*in;inti;chars[81],t[81]=****A*BC*DEF*G*******;printf(Enterastring:\n);gets(s);fun(s);printf(Thestringafterdeleted:\n);puts(s);/******************************/in=fopen(in18.dat,r);wf=fopen(debug\\out18.dat,w);for(i=0;i8;i++){fscanf(in,%s,t);fun(t);fprintf(wf,%s\n,t);}fclose(in);fclose(wf);/*****************************/}【参考代码】char*p=a;while(*p=='*')p++;/*指针p指向字符串第一个字母*/for(;*p!='\0';p++,a++)*a=*p;*a='\0';/*请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestring.h#includestdio.h#defineN81voidfun(char*s){/************Begin*************//************End**************/}voidmain(){chara[N];FILE*out;printf(Enterastring:);gets(a);printf(Theoriginalstringis:);puts(a);fun(a);printf(\n);printf(Thestringaftermodified:);puts(a);strcpy(a,HelloWorld!ThisisafirstCprogram!);fun(a);/******************************/out=fopen(d:\\out17.dat,w);fprintf(out,%s,a);fclose(out);/******************************/}【参考代码】charch;inti,m,n;i=0;m=n=strlen(s)-1;while(i(n+1)/2){ch=s[i];s[i]=s[m];s[m]=ch;i++;m--;}/*请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位依次放在c数的百位和个位上。例如,当a=45,b=12,调用该项函数后,c=4152。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestdio.h#includeconio.hvoidfun(inta,intb,long*c){/************Begin************//************End***************/}voidmain(){inta,b;longc;FILE*out;printf(Inputa,b:);scanf(%d%d,&a,&b);fun(a,b,&c);printf(Theresultis:%ld\n,c);/******************************/out=fopen(debug\\out20.dat,w);for(a=10;a20;a++){fun(a,109-a,&c);fprintf(out,%d\n,c);}fclose(out);/******************************/}【参考代码】*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;程序改错/*下列给定程序中函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/#includestdlib.h#includestdio.h#includestring.hvoidfun(char*s,char*t){inti,s1;s1=strlen(s);for(i=0;is1;i++)/**********ERROR**********/t[i]=s[s1-1];for(i=0;is1;i++)t[s1+i]=s[i];/**********ERROR**********/t[2*s1]=\0;}voidmain(){chars[100],t[100];printf(\nPleaseenterstrings:);scanf(%s,s);fun(s,t);printf(Theresultis:%s\n,t);}【参考答案】t[i]=s[s1-1-i];t[i]=s[s1-i-1i];【参考答案】t[2*s1]='\0';t[2*s1]=0;/*下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入ABCDeFGH,调用后字符串中的内容为eABCDFGH。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/#includestdio.h/**********ERROR**********/fun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(maxp[i]){/**********ERROR**********/p=
本文标题:C语言上机题库百科园第6章2!南信大!
链接地址:https://www.777doc.com/doc-1754719 .html