字符串
1.下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。
#include "stdio.h"
main()
{ int i,a[20],s,count;
s=count=0;
for(i=0;i<20;i++ )
scanf("%d", ① );
for(i=0;i<20;i++)
{ if(a[i]<0)
② ;
s+=a[i];
count++;
}
printf("s=%d\t count=%d\n",s,count);
}
2.下面程序的功能是删除字符串s中的空格。
#include <stdio.h>
main()
{ char *s="Beijing ligong daxue";
int i,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!= ' ') ① ;
else ② ;
s[j]= '\0';
printf("%s",s);
}
3.下面程序的功能是将字符串s中所有的字符'c'删除。请选择填空。
#include<stdio.h>
main( )
{ char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!= '\0';i++ )
if(s[i]!= 'c') ① ;
s[j]= '\0';
puts(s);
}
4.下面程序的功能是输出两个字符串中对应相等的字符。请选择填空。
#include <stdio.h>
char x[]="programming";
char y[]="Fortran";
main()
{ int i=0;
while(x[i]!= '\0' && y[i]!= '\0')
if(x[i]==y[i])
printf("%c", ① );
else
i++;
}
5.下面程序的功能是将字符串s中的每个字符按升序的规则插到数组a中, 字符串a已排好序。
#include <string.h>
main()
{ char a[20]="cehiknqtw";
char s[]="fbla";
int i,k,j;
for(k=0;s[k]!= '\0';k++ )
{ j=0;
while(s[k]>=a[j] && a[j]!= '\0' )
j++;
for( ① )
② ;
a[j]=s[k];
}
puts(a);
}
6.下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。
#include <stdio.h>
main()
{ char str1[100],str2[100],c;
int i,s;
printf("Enter string 1: "); gets(str1);
printf("Enter string 2: "); gets(str2);
i=0;
while((str1[i] == str2[i] && str1[i]!= ① ))
i++;
s= ② ;
printf("%d\n", s);
}
7.下面的函数expand在将字符串s复制到字符串t时, 将其中的换行符和制表符转换为可见的转义字符表示,即用'\n'表示换行符,用'\t'表示制表符。
expand(char s[],char t[])
{ int i,j;
for(i=j=0;s[i]!= '\0';i++ )
switch (s[i])
{ case '\n': t[ ① ] = ② ;
t[j++] = 'n';
break;
case '\t': t[ ③ ] = ④ ;
t[j++] = 't';
break;
default: t[ ⑤ ] = s[i];
break;
}
t[j] = ⑥ ;
}
8.下面的函数index(char s[], char t[])检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则送回-1。
index(char s[], char t[])
{ int i,j,k;
for(i=0;s[i]!= '\0';i++ )
{ for(j=i,k=0; ① && s[j]==t[k];j++,k++) ;
if( ② )
return (i);
}
return(-1);
}
n