*big=*(a+i);
}
/*编写函数voidnew(charstr[]),该函数将字符串str中ASCII值为偶数的字符删除,串中剩余字符形成一个新串。
编写函数voidstringcat(charstr1[],charstr2[])将原字符串str链接在新串的后面。
编写一个程序,调用上述各个函数。
要求:
在main()函数中初始化字符串str并输出原字符串str,调用各个函数后在主函数中输出处理后的新字符串str。
要求:
不允许使用字符串库函数。
*/
#include
voidnew(charstr[]);
voidstringcat(charstr1[],charstr2[]);
main()
{
charstr[40]="0elloworld",str2[20],*s=str,*p=str2;
while(*s!
='\0')
{
*p=*s;
s++;p++;
}
*p='\0';
new(str);
stringcat(str,str2);
puts(str);
}
voidnew(charstr[])
{
char*p=str,*q=str;
while(*q!
='\0')
{
p=q;
if((int)*p%2==0)
{
while(*p!
='\0')
{
*p=*(p+1);
p++;
}
}
else
q++;
}
}
voidstringcat(charstr1[],charstr2[])
{
char*m=str1,*n=str2;
while(*m!
='\0')
m++;
while(*n!
='\0')
{
*m=*n;
m++;
n++;
}
*m='\0';
}
/*编写函数voidstrfun(charstr[],intn,intk,intm),此函数的功能是:
对一个长度为n的字符串str从其第k个字符起,删除m个字符,
组成长度为n-m的新串(其中:
n、m<=80,k<=n)。
要求在main()函数中初始化字符串str并输出原字符串str,调用函数后,在main()函数输出处理后的新串。
在输入字符串“weareallstudents.”,利用此函数进行删除“all”的处理,并输出处理后的字符串。
*/
#include
voidstrfun(charstr[],intn,intk,intm);
main()
{
charstr[]="student";
intk,m;
puts(str);
printf("k,m=");
scanf("%d%d",&k,&m);
strfun(str,7,k,m);
printf("%s",str);
}
voidstrfun(charstr[],intn,intk,intm)
{
char*p=str;
inti;
for(p=p+k-1;p*p=*(p+m);
*p='\0';
}
/*编写函数intstrfun(charstr[],chara),其功能是计算str所指定字符串中,出现指定字符的个数,并返回此值。
例如:
若字符串:
123412132,输入字符为:
1,则返回:
3。
要求在main()函数中初始化字符串str并输出原字符串str,
调用函数strfun()后在主函数中输出处理后的返回值。
要求:
不允许使用字符串库函数。
*/
#include
intstrfun(charstr[],chara);
main()
{
charstr[]="helloworld",a;
intd;
puts(str);
printf("输入一个字符a:
\n");
a=getchar();
d=strfun(str,a);
printf("共有%d个\n",d);
}
intstrfun(charstr[],chara)
{
inti=0;
char*p=str;
while(*p!
='\0')
{
if(*p==a)
i++;
p++;
}
returni;
}
/*编写函数voidrevstr(char*str),其功能是把字符串str反序。
例如字符串str为”abcde”时,则处理后为”edcba”,
要求:
在main()函数中初始化字符串str并输出原字符串str,调用函数后在主函数中输出处理后的新字符串str。
要求:
不允许使用字符串库函数。
*/
#include
voidrevstr(char*str);
main()
{
charstr[20];
printf("输入一个字符串");
gets(str);
revstr(str);
puts(str);
}
voidrevstr(char*str)
{
chart,*p=str,*q=str;
intd,i;
while(*q!
='\0')
q++;
d=q-p;
for(i=0;i{
t=*(p+i);
*(p+i)=*(p+d-1-i);
*(p+d-1-i)=t;
}
}
/*编写函数voidstrfun(charstr[]),该函数功能是把str字符串中的所有字符左移一个位置,串中的第一个字符移到最后。
编写主程序,要求在main()函数中初始化字符串str并输出原字符串str,调用函数完成字符串移位后在主函数中输出处理后的新串。
要求:
不允许使用字符串库函数。
*/
#include
voidstrfun(charstr[]);
main()
{
charstr[]="abcde";
puts(str);
printf("\n");
strfun(str);
puts(str);
}
voidstrfun(charstr[])
{
chart,*p=str;
t=*p;
for(p=str;*(p+1)!
='\0';p++)
*p=*(p+1);
*p=t;
}
/*编写函数voidnew(charstr[]),该函数将字符串str中下标值为奇数的字符删除,串中剩余字符形成一个新串。
编写函数voidstrstoc(charstr[])将新字符串中的大写字母转换为小写字母。
编写程序,调用上述各个函数。
要求:
在main()函数中初始化字符串str并输出原字符串str,调用各个函数后在主函数中输出处理后的新字符串str。
要求:
不允许使用字符串库函数。
*/
#include
voidnew(charstr[]);
voidstrstoc(charstr[]);
main()
{
charstr[]="01234567mnj";
puts(str);
new(str);
strstoc(str);
puts(str);
}
voidnew(charstr[])
{
inti,j;
for(i=1;str[i]!
='\0';i++)
{
j=i;
while(str[j]!
='\0')
{
str[j]=str[j+1];
j++;
}
}
}
voidstrstoc(charstr[])
{
char*p=str;
while(*p!
='\0')
{
if(*p>='a'&&*p<='z')
*p=*p-32;
p++;
}
}
/*将一个正整数分解质因数。
例如:
输入90,打印出90=2*3*3*5。
*/
#include
main()
{
intn,i,a[10],j=0;
printf("输入一个数n:
");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(i!
=n)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);
}
/*设有一分数列:
2/1,3/2,5/3,8/5,13/8,21/13,……试编程求出这个数列的前十项之和。
*/
#include
main()
{
floati=2.0,j=1.0,k,t;
floatsum=0;
for(k=1;k<3;k++)
{
sum+=(i/j);
t=i;
i=i+j;
j=t;
}
printf("sum=%.2f",sum);
}
/*编写程序:
找出不超过1000的十位数字为1,个位数字为3或7的所有数。
例如:
13、17、113、317等。
*/
#include
main()
{
intn;
for(n=13;n<=1000;n++)
{
if(n%10==3||n%10==7)
if((n%100-n%10)/10==1)
printf("%4d",n);
}
}
/*输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
*/
#include
main()
{
charstr[100],*p=str;
inti=0,j=0,m=0,n=0;
printf("输入一行字符\n");
gets(str);
for(;*p!
='\0';p++)
{
if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))
i++;
elseif(*p=='')
j++;
elseif(*p>='0'&&*p<='9')
m++;
else
n++;
}
printf("%s其中英文字母%d、空格%d、数字%d和其它字符的个数%d\n",str,i,j,m,n);
}
/*编程将一个数组中的最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出数组。
要求初始化数组。
*/
#include
main()
{
inta[3][3]={2,5,1,5,4,7,3,4,5},i,j,max=a[0][0],min=a[0][0],t;
inte,b,c,d;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(max{
max=a[i][j];
e=i;b=j;
}
elseif(min>a[i][j])
{
min=a[i][j];
c=i;d=j;
}
}
t=a[0][0];
a[0][0]=max;
a[e][b]=t;
t=a[2][2];
a[2][2]=min;
a[c][d]=t;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
/*编写一个函数spir,其功能是判断一个数是否为素数。
编程实现一个足够大的偶数(>6)总能表示为两个素数之和。
*/
#include
intspir(intm);
main()
{
intx,m,n,q;
printf("输入一个偶数x:
");
scanf("%d",&x);
for(m=2;m{
q=spir(m);
if(q)
{
n=x-m;
q=spir(n);
if(q)
{
printf("%d=%d+%d\n",x,m,n);
break;
}
}
}
}
intspir(intm)
{
inti;
for(i=2;i{
if(m%i==0)
break;
}
if(i>=m)
return1;
else
return0;
}
/*编写一个函数myatol,该函数的功能是:
输入一个数字字符串,返回对应的long型整数。
在main函数中写出调用的语句。
例如,调用myatol(“678”),函数返回long型整数678。
*/
#include
longmyatol(charstr[]);
main()
{
charstr[20];
longl,m;
gets(str);
l=myatol(str);
printf("数字字符串为数字%ld\n",l);
}
longmyatol(charstr[])
{
char*p=str,*q=str;
inti=0,k;
longl=0;
while(*(p+i)!
='\0')
{
k=*(p+i)-48;
l=l*10+k;
i++;
}
returnl;
}
/*编写一个函数myatol,该函数的功能是:
输入long型整数,返回对应的一个字符串。
在main函数中写出调用的语句。
例如,调用myatol(678),函数返回数字字符串"678"。
*/
#include
voidmyatol(longl,char*p);
main()
{
longl;
charstr[20];
printf("输入一个数l:
");
scanf("%ld",&l);
myatol(l,str);
puts(str);
}
voidmyatol(longl,char*p)
{
intk,i=0,j;
chart;
while(l!
=0)
{
k=l%10;
*(p+i)=k+48;
l=l/10;
i++;
}
*(p+i)='\0';
for(j=0;j
{
t=*(p+i-j-1);
*(p+i-j-1)=*(p+j);
*(p+j)=t;
}
}
/*编写一个函数substring,其功能是计算字符串中子串出现的次数。
要求在主函数中初始化字符串和子串,调用函数substring后,在主函数中输出计算的结果。
*/
#include
intsubstring(charstr1[],charstr2[]);
main()
{
charstr1[40],str2[10];
intn;
printf("输入字符串和子串\n");
gets(str1);
gets(str2);
n=substring(str1,str2);
printf("共有%d个\n",n);
}
intsubstring(charstr1[],charstr2[])
{
inti=0;
char*p=str1,*q;
while(*p!
='\0')
{
q=str2;
while((*p==*q)&&(*q!
='\0')&&(*p!
='\0'))
{
p++;
q++;
}
if(*q=='\0')
{
i++;
p--;
}
p++;
}
returni;
}
/*编写函数voidsort(charstr[]),该函数把str字符串按照ASCII码从小到大排序。
在main()函数中初始化字符串str,
调用函数后输出处理后的字符串str。
例如:
如果str为”main”,则函数调用后str为”aimn”。
*/
#include
voidsort(charstr[]);
main()
{
charstr[10];
gets(str);
sort(str);
puts(str);
}
voidsort(charstr[])
{
inti,j;
chart;
for(i=0;str[i]!
='\0';i++)
for(j=i;str[j+1]!
='\0';j++)
{
if(str[j]>str[j+1])
{
t=str[j];
str[j]=str[j+1];
str[j+1]=t;
}
}
}
/*将一维数组中的10个元素对调。
即第一个元素变为最后一个元素,最后一个元素变为第一个元素,第二个元素和第八个元素对调…。
*/
#include
main()
{
inta[10]={0,1,2,3,4,5,6,7,8,9},i,t;
for(i=0;i<5;i++)
{
t=a[i];
a[i]=a[9-i];
a[9-i]=t;
}
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
/*实现两个数的#法和$法运算。
如输入3,4,#,输出25;输入3,4,$,输出34;提示:
#法和$法运算是自己定义的一种运算,a#b=a*a+b*b,a$b=a*10+b。
*/
#include
main()
{
inta,b,y;
charc;
printf("输入两个数和运算符:
");
scanf("%d%d%c",&a,&b,&c);
if(c=='#')
y=a*a+b*b;
if(c=='$')
y=a*10+b;
printf("%d%c%d=%d",a,c,b,y);
}
/*编写函数mystr(char*str),函数将字符串str中的所有大写字母删除,剩余的字符串仍由str描述,计算删除后str的长度。
要求:
在主函数main中初始化str并输出,调用函数mystr(char*str)后输出str和str的长度。
不允许使用字符处理库函数。
*/
#include
intmystr(char*str);
main()
{
charstr[20];
intd;
printf("输入一个字符串:
");
gets(str);
d=mystr(str);
printf("输出改动过的字符串和字符串长度\n");
puts(str);
printf("%d\n",d);
}
intmystr(char*str)
{
char*p=str,*q;
inti=0,j;
while(*(p+i)!
='\0')
{
j=i;
if(*(p+j)>='A'&&*(p+j)<='Z')
{
while(*(p+j)!
='\0')
{
*(p+j)=*(p+j+1);
j++;
}
}
else
i++;
}
p=q=str;
while(*p!
='\0')
p++;
returnp-q;
}
/*"求矩阵的所有靠内侧的各元素值之和。
要求初始化矩阵(4行5列),输出原始的矩阵和内侧的各元素值之和,必须用循环实现。
例如,矩阵为:
3123
2573
1142
则所有靠内侧的各元素值之和为5+7=12。
提示:
相当于循环计算时,数组a[i][j]中的i,j不为0或n-1。
"*/
#include
main()
{
inta[4][5],i,j,sum=0;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
for(i=1;i<3;i++)
{
for(j=1;j<4;j++)
{
printf("%4d",a[i][j]);
sum+=a[i][j];
}
printf("\n");
}
printf("sum=%d",sum);
}
0-9可以组成多少个不重复三位奇数
#include
main()
{
inti,j,k,s=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=1;k<=9;k=k+2)
if(i!
=j&&j!
=k&&i!
=k)
s++;
printf("%d",s);
}
1,1+2...,1+2+...+9各项值的积
#include
main()
{
inti;
intj;
intx=0;
doubley=1;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
x=x+j;
y=y*x;
x=0;
}
printf("\nvalueis%.0lf",y);
}
1-1000之间所有完数
#include