⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 microsoft word 文档.doc

📁 精心分类的南开C语言上机100题
💻 DOC
📖 第 1 页 / 共 3 页
字号:
return s;
}


 
25: 第25题 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 
答案:

char *fun(char *s,char *t)
{
 char *p,*t1=t,*s1=s;
int n=0;m=0;
while (*s1)
{
 n++;
s1++;
}
while(*t1)
{
 m++;
t1++;
}
if(n>=m)
p=s;
else
p=t;
return p;
}


29: 第29题 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 
答案:

void fun(char *ss)
{
 int i,n;
n=strlen(ss);
for(i=1;i<n;i+=2)
if(ss[i]>=‘a’&& ss[i]<=‘z’)
ss[i]=ss[i]-32;
}

33: 第33题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 
答案:

void fun(char *a,int n)
{
 int i=0;k=0;
char *p, *t;
p=t=a;
while (*t)
t++; t--;
while(*t==‘*’)
{
 k++;t--;
}
t++;
if(k>n)
{
 while (*p&&p<t+n)
{
 a[i]=*p; i++; p++;
}
a[i]=‘\0’;
}
}

35: 第35题 请编写一个函数,用来删除字符串中的所有空格。 
答案:

void fun(char *str)
{
 int i=0;
char *p=str;
while (*p)
{
 if(*p!=‘ ’)
{
 str[i]=*p;
  i++;
}
p++;
}
str[i]=‘\0’;
}


 
36: 第36题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 
答案:

void fun(char *a)
{ int i,j=0,t=0;
  while(a[j]=='*')
  j++;
  for(i=j;i<strlen(a);i++)
  a[t++]=a[i];
  while(--j)
  a[t++]='*';
  a[t]='\0';
}
38: 第38题 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 
答案:

int fun(char *ss, char c)
{
 int n=0;
while (*ss)
{
 if(*ss==c)
n++;
ss++;
}
return n;
}

40: 第40题 请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 
答案:

void fun(char *w,int m)
{
 char b[N];
int i,j=0;
for(i=0;i<m;i++)
{
b[j]=w[i];
j++;
}
for (i=0;i<strlen(w)-m;i++)
w[i]=w[i+m];
for(j=0;j<m;j++)
{
w[i]=b[j];
i++;
}
w[i]=‘\0’;
}

43: 第43题 编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 
答案:

char *fun(char (*a)[81],int num)
{int i;
char *max;
max=a[0];
for(i=0;i<num;i++)
if(strlen(max)<strlen(a))
max=a[];
return max;}


 
44: 第44题 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。 
答案:

int fun(char *str,char *substr)
{int n;
char *p,*r;
n=0;
while(*str)
{p=str;
r=substr;
while(*r)
if(*r==*p)
{r++;
p++;}
else
break;
if(*r==‘\0’)
n++;
str++;}
return n;}

45: 第45题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n 给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用c语言给提供得字符串函数。 
答案:

void fun(char *s,int n,int h,int e)
{  int i,j=0;
   for(i=h;i<n-e-1;i++)
   s[j++]=s[i];
   s[j]='\0';
}

47: 第47题 请编写一个函数void fun(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。 
答案:

void fun(char *ss)
{ int i;
  for(i=1;i<strlen(ss);i+=2)
  if(ss[i]>='a'&&ss[i]<='z')
  ss[i]-='a'-'A';
  }

52:编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 
答案:

void fun(char p1[],char p2[])
{int i=0,n=0;
char *p=p1,*q=p2;
while (*p)
{p++;
n++;}
i=n;
while(*p)
{p1=*q;
q++;
i++;}
p1=‘\0’;}


56:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字母串中其他*号全部删除。形参p已指向字符串中最后的一个字母。不使用c的字符串函数。 
答案:

void fun(char*a,char *p)
{int i=0;
char *p=a;
while(q<=p)
{if(*q!=‘*’)
{a=*q;
i++;}
q++;}
while(*q)
{a=*q;
i++;
q++;}
a=‘\0’;}

59:请别写函数fun,该函数的功能是:将放在字符串数组中的m个字符串(每串的长度不超过n),按顺序合并组成一个新的字符串。 
答案:

void fun(char a[m][n],char *b)
{int i,j,k=0;
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
if(*(*(a+i)+j))
{b[k]=*(*(a+i)+j)
k++;}
else
break;
b[k]=‘\0’;}}

62:请编写函数fun,该函数的功能是:统一一含字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。 
答案:

int fun (char *s)
{int i,n=0;
for(i=0;i<strlen(s);i++)
{if(s=‘a’&s<=‘z’&s[i+1]==‘ ’
‖s[i+1]==‘\0’)
n++;}
return n;}

66:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。 
答案:

void fun(char *a)
{int i=0;char *p=a;
while(*p)
{if(*p!=‘*’)
{a=*p;
i++;}
p++;}
a=‘\0’;}

72: 第72题 请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。 
答案:

void fun(char *s,char t[])
{int i,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(i%2!=0)
{t[j]=s;
j++;}
t[j]=‘\0’;}

73: 第73题 假定输入的字符串中只包含字母和*号,请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字符,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。 
答案:

void fun(char *a,char *h,char *p)
{ int i=0;
   while((*h)=='*')
 {   a[i]=*h;
     i++;
     h++;
 }
 while(h<p)
 {  if(*h!='*')
    {a[i]=*h;
     i++; }
    h++;}
 while(*h)
 { a[i]=*h;
   i++;
   h++;
   }
 a[i]='\0';
 }

83: 第83题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。 
答案:

void fun(char *a)
{ int i,j;
  j=strlen(a);
  for(i=j-1;i>=0;i--)
  if(*(a+i)=='*')  *(a+i)='\0';
  else break;
  }

88: 第88题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数亚时,不得使用c语言提供的字符串函数。 
答案:

void fun(char *a)
{  int i,j=0;
 while(*(a+j)=='*')
 j++;
 for(i=j;*(a+i);i++)
 if(a[i]!='*')  
   a[j++]=*(a+i);
 a[j]='\0';
 }

94: 第94题 规定输入字符串中只包含字母和*号。请编写函数fun,它的功能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。 
答案:

void fun(char *a)
{ int i,j=0,k;
  while(a[j]=='*')
  j++;
  k=strlen(a)-j;
  for(i=0;a[j];i++)
  a[i]=a[j++];
  a[i]='\0';
}

95: 第95题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做。字符串中间和尾部的*号不删除。 
答案:

void fun(char *a,int n)
{  int i=0,k=0;
   char *p=a;
   while(*p=='*')
   { k++;  p++; }
   p=a;
   if(k>n)
   p=a+k-n;
   while(*p)
   { a[i]=*p++;i++; }
   a[i]='\0';
}
数字交换位置
15: 第15题 请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。 
答案:

unsigned fun(unsigned w)
{
 unsigned t,s=0,s1=1,p=0;
t=w;
while(t>10)
{
 if(t/10)
p=t%10;
s=s+p*s1;
s1=s1*10;
t=t/10;
}
return s;
}

16: 第16题 请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。 

{  long  j;  float s;  h=h*1000;  j=(h+5)/10;  s=(float)(j/100.0);  return s; }   

 19: 第19题 编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。 
答案:

void fun(char s[],int c)
{int i=0;   char *p;  p=s;  while(*p) { if(*p!=c)  { s[i]=*p; i++;} p++;} s[i]=‘\0’; }

48: 第48题 请编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。 
答案:

void fun(int a,int b,long *c)
{*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}

65:请编写函数fun,其功能是:将两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。 
答案:

void fun(int a,int b,long *c)
{*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;}

71: 第71题 请编写函数fun,其功能时:将两个两位数的正整数a、b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b的十位和个位整数依次放在c数的百位和个位上。 
答案:

void fun(int a,int b,long *c)
{*c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10;}

77: 第77题 请编写一个函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。 
答案:

void fun(int a,int b,long *c)
{*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;}

81: 第81题 请编写函数fun,其功能使:将两个两位正整数a b合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。 
答案:

void fun(int a,int b,long *c)
{*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}

84: 第84题 请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。 
答案:

void fun(int a,int b,long *c)
{c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}

87: 第87题 请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。 
答案:

void fun(int a,int b,long *c)
{*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;}

91: 第91题 请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。 
答案:

void fun(int a, int b, long *c)
{
 *c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;
}





1


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -