}
9、/*下面程序的功能是从字符数组 s 中删除存放在 c 中的字符。*/
#include
main()
{
char
s[80],c;
int
j,k;
printf("\nEnter a string: ");
gets(s);
printf("\nEnter a character: ");
c=getchar( );
for(j=k=0;s[j]!= '\0';j++)
if(s[j]!=c)
s[k++]=s[j];
s[k]= '\0';
printf("\n%s",s);
}
10、/*编写一个 void sort(int *x,int n)实现将 x 数组中的 n 个数据从大到小
排序。n 及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件 p9_1.out 中*/
#include
void sort(int *x,int n)
{
int i,j,k,t;
for(i=0;ix[k]) k=j;
if(k!=i)
{
}
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
void main()
{FILE *fp;
int *p,i,a[10];
fp=fopen("p9_1.out","w");
p=a;
printf("Input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);
for(;p
x)
/*j 为元素个数*/
/*从最后一个单元开始*/
{
a[i+1]=a[i]; i--;
}
/*将比 x 大的数往后移动一个位置*/
a[++i]=x;
j++;
/*插入 x 后元素总个数增加*/
for(i=1;i<=j;i++) printf("%8d",a[i]);
printf("\n");
}
12、/*编写函数 replace(char *s,char c1,char c2)实现将 s 所指向的字符串中所有字符 c1 用 c2 替换,字符串、字符 c1 和 c2
均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件 p10_2.out 中*/
#include
replace(char *s,char c1,char c2)
{ while(*s!='\0')
{ if (*s==c1)
*s=c2;
s++;
}
}
main()
{ FILE *fp;
char str[100],a,b;
if((fp=fopen("p10_2.out","w"))==NULL)
{ printf("cannot open the file\n");
exit(0);
}
printf("Enter a string:\n");
gets(str);
printf("Enter a&&b:\n");
scanf("%c,%c",&a,&b);
printf("%s\n",str);
fprintf(fp,"%s\n",str);
replace(str,a,b);
printf("The new string is----%s\n",str);
fprintf(fp,"The new string is----%s\n",str);
fclose(fp);
}
13、/*在一个字串 s1 中查找一子串 s2,若存在则返回子串在主串中的起始位置
,不存在则返回-1。*/
main()
{char s1[6]="thisis";char s2[5]="is";
printf("%d\n",search(s1,s2));
system("pause");
}
int search(char s1[],char s2[])
{int i=0,j,len=strlen(s2);
while(s1[i]){
for(j=0;j=len)return i;
else i++;
}
return -1;
}
14、/*用指针变量输出结构体数组元素。*/
struct student
{
int num;
char *name;
char sex;
int age;
}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou",'F',19},{1005,"Wangming",'M',
18}};
main()
{int i;
struct student *ps;
printf("Num \tName\t\t\tSex\tAge\t\n");
/*用指针变量输出结构体数组元素。*/
for(ps=stu;psnum,ps->name,ps->sex,ps->age);
/*用数组下标法输出结构体数组元素学号和年龄。*/
for(i=0;i<5;i++)
printf("%d\t%d\t\n",stu[i].num,stu[i].age);
}
15、/*建立一个有三个结点的简单链表:*/
#define NULL 0
struct student
{
int num;
char *name;
int age ;
struct student *next;
};
void main()
{
struct student a,b,c,*head,*p;
a.num=1001; a.name="lihua"; a.age=18;
/* 对结点成员进行赋值 */
b.num=1002; b.name="liuxing"; b.age=19;
c.num=1003; c.name="huangke"; c.age=18;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do{
/* 建立链表,a 为头结点 */
/* 输出链表 */
printf("%5d,%s,%3d\n",p->num,p->name,p->age);
p=p->next;
}while(p!=NULL);
}
16、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。*/
#include
#include
#include
main()
{ char s[100];
int i,j,n;
printf("输入字符串:\n");
gets(s);
n=strlen(s);
for(i=0,j=n-1;i=j) printf("是回文串\n");
else
printf("不是回文串\n");
}
17、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件 myf2.out*/
#include
void fun(int a[],int n)
{int i,j,t;
for(i=0;i<=n-1;i++)