第1题:
请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码值升序排列。
例如:原来的字符串为BdsihAd,则排序后输出为 BAdhisd。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <stdio.h>
include <ctype.h>
include <conio.h>
int fun(char*s,int num)
{
}
main()
{
char s[10];
clrscr();
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
}
第2题:
请补充函数fun(),该函数的功能是:依次取出字符串中所有的小写字母以形成新的字符串,并取代原字符串。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio.h>
include<conio.h>
void fun(char *s)
{
int i=0;
char *p=s;
while(【 】)
{
if (*p>='a'&&*p<='z')
{
s[i]=*p;
【 】;
}
p++;
}
s[i]=【 】;
}
main()
{
char str[80];
clrscr();
printf("\nEnter a string:");
gets(str);
printf("\n\nThe string is:\%s\n",str);
fun(str);
printf("\n\nThe string of changing
is:\%s\n",str);
}
第3题:
第4题:
下列给定程序中函数fun()的功能是:求出字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到的信息:Not found!
请改正程序中的错误,使它能得出正确的结果。
注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include<stdio.h>
include <conio.h>
include <string.h>
char *fun(char *s,char *t)
{
char *p,*r,*a;
/*************found**************/
a=Null;
while(*s)
{ p=s;r=t;
while(*r)
/*************found**************/
if(r= =p) {r++;p++;}
else break;
if(*r=='\0') a=s;
s++;
}
return a;
}
main()
{char s[100],t[100],,*p;
clrscr();
printf("\nPlease enter string S: ");
scanf("%s",s);
printf("\nPlease enter substring t: ");
scanf("%s",t);
p=fun(S,t);
if(p) printf("\nThe result is:%s\n",p);
else printf("\nNot found!\n ");
}
第5题:
假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。
试题程序;
include <stdio. h>
include <conio. h>
void fun (char *a)
{
}
main()
{
char s[81];
printf("Enter a string :\n");
gets (s);
fun (s);
printf ("The string after deleted: \n");
puts (s);
}
第6题:
请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。 例如,若字符串数组中的M个字符串为: ABCD BCDEFG CDEFGHI 则合并后的字符串内容应该是ABCDBCDEFGCDEF—GHl。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。 试题程序: include<stdio.h> include<conio.h> define M 3 define N 20 void proc(char arr[M][N],char*b) {
} void main { char str[M][N]={"ABCD","BCDEFG"," CDEFGHI"},i; char arr[100]={" "); printf("The string:\n"); for(i=0;i<M;i++) puts(str[i]); printf("\n"); proc(str,arr); printf("The A string:\n"); printf("%s",arr); printf("\n\n"); }
void proc(char arr[M][N],char*b)
{
int i,j,k=0;
for(i=0;i<M;i++) //i表示其行下标
for(j=0;.rr[i][j]!=\0 ;j++)//由于每行的个数不等,因此用a[i][j]!=\0 来作为循环结束的条件
b[k++]=arr[il[j]; //把二维数组中的元素茄到b的一维数组中,
b[k]=\0; //最后把b赋\0作为字符串结束的标志
}
【解析】字符串数组中每一行都是一个一个完整的字符串,其结束标志为\0 。因此,通过字符串的结束标志来判断每一个字符串是否结束,将字符串数组中的所有字符串均赋值新的一维数组b来完成字符串的合并。
第7题:
编写一个函数fun(),它的功能是:实现两个字符串的连接(不使用库函数strcat,即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString
SecondString
则程序输出:
FirstStringSecondString
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号小填入所编写的若干语句。
试题程序:
include <stdio. h>
include<conio. h>
void fun (char pi[],char p2[])
{
}
main ( )
{
char s1[80],s2[40];
clrscr ();
printf("Enter s1 and s2:\n");
scanf ("%s%s", s1, s2);
printf ("s1=%s\n", s1);
printf("s2=%s\n",s2);
printf("Invoke fun(s1,s2) :\n");
fun(s1,s2);
printf("After invoking:\n");
printf ("%s\n", s1);
}
第8题:
●试题三
请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<conio.h>
int m;
void fun(char *s)
{
int i=0,j=0;
char *p=s;
while(*(p+i))
{
if(*(p+i)>=′A′&&*(p+i)<=′Z′)
{
(1) ;
}
(2) ;
}
s[j]=′\0′;
(3) ;
}
main()
{
char str[80];
clrscr();
printf("\nEnter a string:");
gets(str);
printf("\n\nThe string is:\%s\n",str);
fun(str);
printf("\n\nThe string of changing
is:\%s\n",str);
printf("\n\nThe length of changed string
is:\%d\n",m);
}
●试题三
【答案】(1)s[j++]=*(p+i)(2)i++(3)m=j
【解析】填空1:将大写字母存于原字符串中,数组下标j自加1,为下一次存放做准备。填空2:为了判断字符串中的下一个字符是否为大写字母,变量i自加1。填空3:最后将大写字母的个数,即删除后字符串的长度赋给全局变量m。
第9题:
请补充函数fun(),该函数的功能是:把ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数fun()。
例如,输入“abcdef”,输出“bdf”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include <stdio.h>
define N 80
void fun(char s[],int n)
{
int i, j;
j=0;
for(i=0;【 】;i++)
{
if(【 】)
s [j++]-s [i];
}
【 】;
}
main ( )
{
int i=0, strlen=0;
char str [N];
clrscr ();
printf ("\nInput a string: \n");
gets (str);
while (str [i] !='\0')
{
strlen++;
i++;
}
fun(str, strlen);
printf("\n*** display string ***\n");
puts (str);
}
第10题:
请补充函数fun(),该函数的功能是:把字符串str中的字符按字符的ASCⅡ码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。
例如,如果输入“cdefgh”,则输出为“hgfedc”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include <stdio.h>
define N 80
void fun (char s [], int n)
{
int i, j;
char ch;
for (i=0; i<n; i++)
for(j=【 】;j<n;j++)
if (s[i]<s [j])
{
ch=s [j];
【 】;
s [i] =ch;
}
main ( )
{
int i=0, strlen=0;
char str [N];
clrscr ();
printf ("\nInput a string: \n");
gets (str);
while (str [i] !=' \0')
{
strlen++;
i++;
}
fun (str, strlen);
printf ("\n***display string ***\n");
puts (str);
}