#include <stdio.h>
void NONO();
int fun(char *s)
{
int n=0;
char *p;//很重要。
for(p=s;*p!='\\0';p++)//全局变量p扫描了整个字符串;
if((*p>='0')&&(*p<='9'))
n++;
return n;
}
main()
{ char *s="2def35adh25 3kjsdf 7/kj8655x";
printf("%s\\n",s);
printf("%d\\n",fun(s));
NONO();
}
2.确定单词的个数。查找指定的字符。
#include<string.h>
#include<stdio.h>
#define N 80
int fun(char *s)
{
int flag=0;
int num=0;
char *p;
for(p=s;*p!='\\0';p++)//还是和上面的一样,遍历全部的内容哦。
if(*p==' ') flag=0;
else if(flag==0)
{
flag=1;
num++;
}
return num;
}
void main()
{
FILE *wf;
char line[N];
int num=0;
printf("Enter a string:\\n ");
gets(line);
num=fun(line);
printf("The number of word is:%d\\n\\n ",num);
3.字符串的逆置
#include <string.h>
#include <conio.h>
#include <stdio.h>
#define N 81
void fun(char*s)
{
char ch;
int i,m,n;
i=0;
m=n=strlen(s)-1;
/*将第i个和倒数第i个数互换,但循环的次数为数组长度的一半*/
while(i<(n+1)/2)
{
/*使用中间变量叫唤*/
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++; m--;//算法,第一个和最后一个换。
}
main()
{
char a[N];
FILE *out;
printf("Enter a string:");
gets(a);
printf("The original string is:");
puts(a);
fun(a);
printf("\\n");
printf("The string after modified:");
puts(a);
strcpy(a,"Hello World!");
fun(a);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%s",a);
fclose(out);
/******************************/
}
4.字符串的连接
#include <stdio.h>
#define N 20
void NONO();
void fun( char *a , char *s)
{
while(*s!='\\0')
{ *a=*s;
a++;
s++;
}
*a='\\0';
}
main()
{ char s1[N], *s2="abcdefghijk";
fun( s1,s2);
printf("%s\\n", s1);
printf("%s\\n", s2);
NONO();
}
要将s所指的字符串存入a所指的字符串中,程序要求不能使用系统提供的字符串函数,本题可以使用循环语句,依次取出a所指字符串中的元素,将其存入s所指的字符串中,最后为s所指的字符串添加结束标识'\0'。
5。
连接aa,bb,ccc;
#include <stdio.h>
#include <conio.h>
#define M 3
#define N 20
void fun(char a[M][N],char *b)
{
int i,j,k=0;
for(i=0;i<M;i++) /*将字符串数组中的M个字符串,按顺序存入一个新的字符串*/
for(j=0;a[i][j]!='\\0';j++)
b[k++]=a[i][j];
b[k]='\\0'; /*在字符串最后加上字符串结束标记符*/
//本程序中第1个for循环的作用是对二维数组行的控制,第2个循环的作用是从同一
//行中取出字符并存放到一维数组b中,语句是b[k++]=a[i][j];
}
void main()
{
FILE *wf;
char w[M][N]={"AAAA", "BBBBBBB", "CC"},i;
char a[100]={ " ##############################"};
printf("The string:\\n ");
for(i=0;i<M;i++)
puts(w[i]);
printf("\\n ");
fun(w,a);
printf("The A string:\\n ");
printf("%s ",a);
printf("\\n\\n ");
6.連接函數
、、、cpp
include<stdio.h>
include<string.h>
void mystrcat(char[], char[]);
int main()
{
char c1[80];
char c2[80];
gets(c1);
gets(c2);
mystrcat(c1,c2);
puts(c1);
return 0;
}
void mystrcat(char dst[], char str[])
{
int i,j;
j=strlen(dst);
for(i=0;i<strlen(dst);)
dst[j++]=str[i++];
dst[j]='\\\\0';
}
5结构体求单项平均值。
```cpp
#include <stdio.h>
#define N 8
typedef struct
{ char num[10];
double s[N];
double ave;
} STREC;
void fun(STREC *a)
{
int i;
a->ave=0.0;
for(i=0;i<N;i++)
a->ave=a->ave+a->s[i]; /*求各门成绩的总和*/
a->ave/=N; /*求平均分*/
}
main()
{ STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
int i;
void NONO ( );
fun( &s );
printf("The %s's student data:\\n", s.num);
for(i=0;i<N; i++)
printf("%4.1f\\n",s.s[i]);
printf("\\nave=%7.3f\\n",s.ave);
NONO();
}
6.结构体排序
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
void fun( STREC a[] )
{
int i,j;
STREC t;
for(i=1;i<N;i++)
for(j=0;j<N-1;j++)
if(a[j].s<a[j+1].s)
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
}
main()
{ STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};
int i;FILE *out ;
fun( s );
printf("The data after sorted :\\n");
for(i=0;i<N; i++)
{ if( (i)%4==0 )printf("\\n");
printf("%s %4d ",s[i].num,s[i].s);
}
printf("\\n");
out = fopen("out.dat","w") ;
for(i=0;i<N; i++)
{ if( (i)%4==0 && i) fprintf(out, "\\n");
fprintf(out, "%4d ",s[i].s);
}
fprintf(out,"\\n");
fclose(out) ;
}
7.结构体排序//并传入数组;
#include <stdio.h>
#define N 8
typedef struct
{ char num[10];
double s;
} STREC;
double fun( STREC *a, STREC *b, int *n )
{
int i,j=0;
double av=0.0;
for(i=0;i<N;i++)
av=av+a[i].s;
av=av/N; /*求平均值*/
for(i=0;i<N;i++)
if(a[i].s<av) b[j++]=a[i];/*将低于平均值的学生记录存入结构体b中*/
*n=j; /*指针传回低于平均值的学生人数*/
return av; /*返回平均值*/
}
main()
{ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};
STREC h[N],t;FILE *out ;
int i,j,n; double ave;
ave=fun( s,h,&n );
printf("The %d student data which is lower than %7.3f:\\n",n,ave);
for(i=0;i<n; i++)
printf("%s %4.1f\\n",h[i].num,h[i].s);
printf("\\n");
out = fopen("out.dat","w") ;
fprintf(out, "%d\\n%7.3f\\n", n, ave);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(h[i].s>h[j].s) {t=h[i] ;h[i]=h[j]; h[j]=t;}
for(i=0;i<n; i++)
fprintf(out,"%4.1f\\n",h[i].s);
fclose(out);
}
8
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define N 10
typedef struct ss
{ char num[10];
int s;
} STU;
fun(STU a[], STU *s)
{
int i;
*s=a[0]; /*先认为第1个值最小*/
for(i=0;i<N;i++) /*如果在循环的过程中再发现比第1个值更小的则赋给*s*/
if(s->s>a[i].s)
*s=a[i];
}
void main()
{
FILE *wf;
STU a[N]={{ "A01",81},{ "A02",89},{ "A03",66},{ "A04",87},{ "A05",77},
{ "A06",90},{ "A07",79},{ "A08",61},{ "A09",80},{ "A10",71}},m;
int i;
system("CLS");
printf("*****The original data*****\\n");
for(i=0;i<N;i++)
printf("No=%s Mark=%d\\n", a[i].num,a[i].s);
fun(a,&m);
printf("*****THE RESULT*****\\n");
printf("The lowest :%s, %d\\n",m.num,m.s);
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%s, %d",m.num,m.s);
fclose(wf);
/*****************************/
}
网友评论