示例
1.字符串输出示例。
程序:
#include<stdio.h>
void main(void)
{
char str[25]={"Welcome to our city!"};
puts(str);
puts("Thank you!");
}
结果:
2.字符串输入实例。
(注意比较gets与scanf和puts与printf的区别)程序:
#include<stdio.h>
void main(main)
{
char str[20];
gets(str);
puts(str);
printf("*********\n");
scanf("%s",str);
puts(str);
}
结果:
3.测字符串长度函数strlen()的使用。
程序:
#include<stdio.h>
#include<string.h>
void main(main)
{
char a[10]="program";
int x,y;
x=strlen(a);
y=strlen("abc13");
printf("%d\n%d\n\n",x,y);
}
结果:
4.字符串连接函数的使用。
程序:
#include<string.h>
#include<stdio.h>
void main(main)
{
char s1[20]="Hello",s2[6]="Word";
puts(s1);
puts(s2);
strcat(s1,s2);
printf("%s\n",s1);
}
结果:
修改后
程序:
#include<string.h>
#include<stdio.h>
void main(main)
{
char s1[5]="Hello",s2[6]="Word";
puts(s1);
puts(s2);
strcat(s1,s2);
printf("%s\n",s1);
}
结果:
5.字符串复制函数strcpy的应用。
(将第二个字符串的值拷给第一个)程序:
#include<string.h>
#include<stdio.h>
void main(main)
{
char s1[10]="Program",s2[6]="turbo";
printf("%s,%s\n",s1,s2);
strcpy(s1,s2);
printf("%s,%s\n",s1,s2);
}
结果:
6.字符串比较函数strcmp函数。
程序:
#include<string.h>
#include<stdio.h>
void main(main)
{
int k;
char str1[20],str2[]="Computer string";
gets(str1);
k=strcmp(str1,str2);
if(k==0)printf("str1=str2\n");
if(k>0)printf("str1>str2\n");
if(k<0)printf("str1<str2\n");
}
结果:
7.字符串大小写互相转换。
程序:
#include<string.h>
#include<stdio.h>
void main(main)
{
char s[]="1a2AB3abc";
printf("%s\n",strupr(s));
printf("%s\n",strlwr(s));
}
结果:
4.5典型例题精解(P109)
1.输入一行字符,统计其中有多少个单词。
单词之间用一个或多个空格隔开。
程序:
#include<stdio.h>
#include<string.h>
void main(void)
{
char s[80],c;
int i,n,word;
n=0;
word=0;
gets(s);
for(i=0;(c=s[i])!='\0';i++)
if(c==' ')
word=0;
else if(word==0)
{
word=1;
n=n+1;
}
printf("n=%d\n\n",n);
}
结果:
2.从键盘任意输入一个字符串,然后按逆序存放后输出。
程序:
#include<stdio.h>
#include<string.h>
void main(void)
{
char s[80],ch;
int len,i;
gets(s);
len=strlen(s);
for(i=0;i<len/2;i++)
{
ch=s[i];
s[i]=s[len-i-1];
s[len-i-1]=ch;
}
printf("s=%4d\n\n",s);
}
结果:
3.求下列矩阵中两对角线上元素之和。
程序:
#include<stdio.h>
void main(void)
{
int a[4][4]={{2,5,1,8},{7,1,6,4},{0,2,5,9},{3,0,2,1}};
int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(i==j)
s+=a[i][j];
if(i+j==3)
s+=a[i][j];
}
printf("两对角线元素之和为%d\n\n",s);
}
结果:
4.查找算法已知一个包含10个整形升序数组成的一维数组a。
现任意输入一个整数x,判断是否在数组a中。
若在,输出其位置(若数组中有多个x,则输出第一次找到的位置),若不在数组中,则给出信息。
程序:
#include<stdio.h>
void main(void)
{
int a[10],x,low,high,mid,k,t=0;
printf("input order array\n");
for(k=0;k<10;k++)
scanf("%d",&a[k]);
printf("input search x:");
scanf("%d",&x);
low=0;
high=9;
while(t==0&&low<=high)
{
mid=(low+high)/2;
if(x==a[mid])
{
t=1;
break;
}
else if(x<a[mid])
high=mid-1;
else low=mid+1;
}
if(t)printf("%d\n",mid);
else printf("no data!\n");
}
结果:。