);
printf("\n");
}
}
51.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是小写字母,则把它变成大写字母;其它字符不变,请编程。
#include <stdio.h>
void main()
{
char ch;
ch=getchar();
if ((ch>=65)&&(ch<=90)) ch=ch+32;
else if ((ch>=97)&&(ch<=122)) ch=ch-32;
printf("%c\n",ch);
}
52.已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。
y=x*(x+2),2<x<=10; y=2x, -1<x<=2; y=x-1, x<=-1.
#include <stdio.h>
void main()
{
float x,y;
printf("输入X值:");
scanf("%f",&x);
if (x<=-1)
{
y=x-1;
printf ("Y=%6.2f\n",y);
}
else if (x<=2)
{
y=2*x;
printf ("Y=%6.2f\n",y);
}
else if (x<=10)
{
y=x*(x+2);
printf ("Y=%6.2f\n",y);
}
else printf("取值范围出错\n");
}
53.已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。
y=0,x=a||x=-a; y=sqrt(a*a-x*x), -a<x<a; y=x,x<-a||x>a.
#include <stdio.h>
#include <math.h>
void main()
{
float x,y,a;
printf("输入A值[A>0]:");
scanf("%f",&a);
printf("输入X值:");
scanf("%f",&x);
if ((x==a)||(x==-a)) y=0;
else if ((x<a)&&(x>-a)) y=sqrt(a*a-x*x);
else if ((x<-a)||(x>a)) y=x;
printf ("Y=%6.2f\n",y);
}
54.编程判断对输入的任何一个年份是否是闰年,将结果输出。
#include <stdio.h>
void main()
{
int n;
printf("输入年份:");
scanf("%d",&n);
if (n%4==0&&n0!=0||n@0==0) printf("闰年\n");
else printf ("不是闰年\n");
}
55.请编制程序要求输入整数a和b,若a*a+b*b大于100,则输出a*a+b*b百位以上的数字,否则输出两数之和。
#include <stdio.h>
void main ()
{
int a,b,c,d;
printf("请输入两个整数:\n");
scanf("%d,%d",&a,&b);
printf("你输入的两个数为:%d,%d\n",a,b);
c=a*a+b*b;
if(c>=100)
{
d=c/100;
printf("a*a+b*b的百位以上的数为:%d\n",d);
}
else
printf("a*a+b*b=%d/n",c);
}
56.请编制程序判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no.
#include <stdio.h>
void main()
{
int a;
printf("请输入要验证的数:\n");
scanf("%d",&a);
if(a%5==0&&a%7==0)
printf("Yes\n");
else
printf("No\n");
}
57.编程实现:计算1到100之间的奇数之和及偶数之和。
#include <stdio.h>
void main ()
{
int n,even=0,odd=0;
for(n=1;n<=50;n++)
{
even+=2*n;
odd+=2*n-1;
}
printf("1到100间的偶数的和为%d:\n",even);
printf("1到100间的奇数的和为%d:\n",odd);
}
58.请编程实现:求100个任意整数的累加和。
59.请编程实现:求1到100之间所有能被3整除,但不能被5整除的数的和。
60.请编程实现:输入任意正整数n,计算n!并将结果输出,输出结果中没有小数部分。
61.请编程实现:计算1至50中是7的倍数的数值之和。
62.请编程实现:对任意100个整数,统计0的个数及正数的累加和。
#include <stdio.h>
#define N 100
void main ()
{
int a,sum=0,i,frequency=0;
int s[N];
printf("请输入数据:\n");
for(i=0;i<N;i++)
scanf("%d",&s);
printf("\n原始数据为:\n");
for(i=0;i<N;i++)
printf("%d\n",s);
for(i=0;i<N;i++)
{
if(s==0)
frequency+=1;
if(s>0)
{
a=s;
sum+=a;
}
}
printf("这些数中0的个数为%d\n",frequency);
printf("这些数中所有正数的和为%d\n",sum);
}
63.请编程实现:输入两个整数,判断它们之间的关系(=,<,>等),并清楚地将比较结果输出。
64.请编程实现:输入几个整数,判断其中偶数的个数,并输出结果(要求:数据的个数及原始数据由键盘输入)。
#include <stdio.h>
#define N 20
void enter (int a[], int n)
{
int i;
printf("请输入数据:\n");
for (i=0;i<n;i++)
scanf("%d",&a);
printf("\n原始数据为:\n");
for (i=0;i<n;i++)
printf("%d",a);
printf("\n");
}
void main()
{
void enter (int [], int );
int i;
int a[N],n;
printf("\n输入你所要的数组元素个数:\n");
scanf("%d",&n);
enter (a,n);
for(i=0;i<n;i++)
{
if (a%2==0)
printf ("其中的偶数是%d\n",a);
}
}
65.请编程实现:输入几个整数,判断其中奇数的个数,并输出奇数的累加和。(要求:数据的个数及原始数据由键盘输入)
#include <stdio.h>
#define N 20
void enter (int a[], int n)
{
int i;
printf("请输入数据:\n");
for (i=0;i<n;i++)
scanf("%d",&a);
printf("\n原始数据为:\n");
for (i=0;i<n;i++)
printf("-",a);
printf("\n");
}
void main()
{
void enter (int [], int );
int i;
int a[N],n,sum=0;
printf("\n输入你所要的数组元素个数:\n");
scanf("%d",&n);
enter (a,n);
for(i=0;i<n;i++)
{
if (a%2==1)
{printf ("其中的奇数是%d\n",a);
sum=sum+a;}
}printf ("奇数和是%d\n",sum);
}
66.有一个两位数XY,X是十位,Y是个位;给出X+Y的值和X*Y的值;编程实现让用户猜测这个两位数十多少?根据猜测给出不同的提示。
#include <stdio.h>
void main()
{
printf ("x+y=2\n");
printf("x*y=1\n");
printf("请输入你所猜得数字\n");
int a;
scanf("%d", &a);
for (;a!=11;)
{printf("you are not right\n");
scanf("%d", &a);}
printf ("you are right\n");
}
67.键盘输入的一个两位数XY,X是十位,Y是个位;请编程计算X+Y的值和X*Y的值。
#include <stdio.h>
void main ()
{
printf ("请输入一个两位数\n");
int a,x,y;
scanf ("%d",&a);
x=a/10;
y=a;
printf ("x+y=%d\n",x+y);
printf("x*y=%d\n"x*y);
}
68.用for循环语句计算1到20的和,并将结果输出。
#include <stdio.h>
void main()
{
int i=1,sum=0;
for (;i<=20;)
{
sum=sum+i;
i++;
}
printf("1到20的和是%d\n",sum);
}
69.从键盘输入一行字符,统计出输入的字符个数(注:不要使用strlun函数编程)。
#include <stdio.h>
void main()
{ int alphabet=0,i=0;
char str[100];
printf ("请输入一个字符串\n");
gets(str);
for (i=0;str!='\0';i++)
++alphabet;
printf ("有%d个字母\n",alphabet);
}
70.编程实现:任意输入10个数,计算所有正数的和,负数的和以及10个数的和。
#include <stdio.h>
void main()
{ int i;
float a[10];
printf("请输入任意十个数\n");
for (i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%f",&a);
}
printf("\n");
printf("\n原始数据为:\n");
for (i=0;i<10;i++)
printf("?",a);
float sum1=0, sum2=0, sum3=0;
for (i=0;i<10;i++)
{if (a>0) sum1=sum1+a;
else sum2=sum2+a;
sum3=sum1+sum2;}
printf("正数的和是%f",sum1);
printf("负数的和是%f",sum2);
printf("总和是%f",sum3);
}
71.编程实现:求任意20个数中的正数之和及正数的个数,并将结果输出。
#include <stdio.h>
void main()
{ int i;
float a[20];
printf("请输入任意二十个数\n");
for (i=0;i<20;i++)
{
printf("a[%d]=",i);
scanf("%f",&a);
}
int m=0;
float sum=0;
for (i=0;i<20;i++)
{
if (a>0)
m++;
}
for (i=0;i<20;i++)
sum=sum+a;
printf("正数的个数是%d",m);
printf("所有数的和是%f",sum);
}
72.编程实现:对键盘输入的任意一个四位正整数,计算各位数字平方和。
如:2345 则:计算2*2+3*3+4*4+5*5
#include <stdio.h>
#include <math.h>
void main ()
{
printf ("请输入一个四位数\n");
int x,a,b,c,d,s;
scanf ("%d",&x);
a=x/1000;
b=x/100-10*a;
c=x/10-100*a-10*b;
d=x;
printf ("a=%d\n",a);
printf("b=%d\n",b);
printf ("c=%d\n",c);
printf ("d=%d\n",d);
s=a*a+b*b+c*c+d*d;
printf("各位数字的平方和是%d\n",s);
}
73.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完,请编程。
#include <stdio.h>
void main()
{
int a=1020,c=0;
do
{a=a/2-2;
c++;}
while (a!=0);
printf("c=%d",c);
}
74.编程实现:打印100以内个位数为6且能被3整除的所有数 。
#include <stdio.h>
void main()
{int i;
for (i=0;i<100;i++)
{if (i==6&&i%3==0)
printf("%d\n",i);
}
}
75.编程实现:从键盘输入若干个整数(数据个数应不少于50),其值在0至4的范围内,用-1作为输入结束的标志,统计每个整数的个数。
76.编写一个函数sort,将放到一维数组中的若干个数按从大到小的顺序排序;在主函数中输入若干个数到一个一维数组中,调用sort,对该数组进行排序,在主函数中将原数组和排好序的数组输出。
77.输入一个正整数,将其用质因子的乘积表示,并输出结果,格式为:12=2×2×3。
78.输入一个正整数,求出它的质因子的和,并输出结果,格式为:12的质因子和=2+2+3=7。
79.编写一个函数,判断一个正整数是否为完数:如果一个数的除它本身以外的所有因数之和等于它本身,则它就是完数。主函数中找出1000以内的所有完数。
80.编写函数GCD,求两个正整数的最大公约数,主函数中输入任意5个正整数,调用函数GCD,求出这5个数的最大公约数和最小公倍数。
81.编函数isprime判断正整m是否为素数;如果是素数,返回正整数1,否则返回0;主函数中调用isprime,找出2到1000之间的所有素数。
#include<stdio.h>
#include<math.h>
int isprime(int);
void main()
{
int m;
for(m=2;m<=1000;m++)
if(isprime(m))
printf("]",m);
}
int isprime(int a)
{
int i;
for(i=2;i<=sqrt(a);i++)
if(a%i==0) return 0;
return 1;
}
82.一维数组a中的若干个数已按从小到大的顺序有序;在主函数中输入一个数,将其插入到该数组中,使得原数组依然按原序有序,分别输入原数组和插入新元素之后的数组。
#include<stdio.h>
void main()
{
int a[21],i,j,n,p,temp;
printf("请输入数组元素的个数:");
scanf("%d",&n);
printf("请输入%d个整数:\n",n);
for(i=0;i<n;i++)
scanf("%d",&a);
for(i=1;i<=n-1;i++)
{
for(j=0;j<=n-1-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("原数组为:\n");
for(i=0;i<=n-1;i++)
printf("]",a);
printf("\n请输入插入的数:");
scanf("%d",&p);
for(i=0;i<=n-1;i++)
if(p<a)
{
temp=a;
a=p;
p=temp;
}
a[n]=p;
printf("插入元素后的数组为:\n");
for(i=0;i<=n;i++)
printf("]",a);
}
83.有5个国家名,编程实现按字母先后顺序排序,然后分别输出原数组和排序之后的数组。
#include<stdio.h>
#include<string.h>
void main()
{
char name[5][15],temp[15];
int i,j;
printf("请输入国家名:\n");
for(i=0;i<5;i++)
gets(name);
for(i=0;i<5;i++)
for(j=0;j<4-i;j++)
if(strcmp(name,name[j+1])>0)
{
strcpy(temp,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],temp);
}
printf("国家名排序后为:\n");
for(i=0;i<5;i++)
printf("%s\n",name);
}
84.有一行文字,要求删去其中的某个字符,此行文字和要删的字符均由键盘输入,分别输出原文字和删除之后的文字(注:原文字中的所有和要删除字符相同的字符完全删除)。
#include<stdio.h>
void main()
{
int i,j;
char a[10],N='n';
printf("请输入一行9个的文字:\n");
gets(a);
printf("原文字为:\n");
puts(a);
for(i=0;i<=9;i++)
if(a==N)
for(j=i;j<=9;j++)
a[j]=a[j+1];
printf("删除后文字为:\n");
puts(a);
}
85.打印如图所示的杨辉三角,要求打印出n行,n由键盘输入。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
………
#include<stdio.h>
void main()
{
int i,j,N,a[21][21];
printf("请输入打印的行数:\n");
scanf("%d",&N);
for(i=1;i<N+1;i++)
{
a[1]=1;
a=1;
}
for(i=3;i<N+1;i++)
for(j=2;j<=i-1;j++)
a[j]=a[j-1]+a[j];
for(i=1;i<N+1;i++)
{
for(j=1;j<=i;j++)
printf("m",a[j]);
printf("\n");
}
printf("\n");
}
86.编一个函数实现将一个整型的一维数组中的数逆序存放,不使用辅助数组。主函数输入一个整型的一维数组,调用上述函数,将该数组逆置,将结果输出。
#include<stdio.h>
#define N 10
void main()
{
int a[N],i,temp;
printf("enter array a:\n");
for(i=0;i<N;i++)
scanf("%d",&a);
printf("array a:\n");
for(i=0;i<N;i++)
printf("M",a);
for(i=0;i<N/2;i++)
{
temp=a;
a=a[N-i-1];
a[N-i-1]=temp;
}
printf("\nNow,array a:\n");
for(i=0;i<N;i++)
printf("M",a);
printf("\n");
}
87.编写一个函数convert,求一个方阵的转置矩阵;主函数中输入方阵的阶数和方阵,在主函数中将原矩阵和转置矩阵按原格式输出。
#include<stdio.h>
void main()
{
void convert(int [10][10]);
int a[10][10],p,q,i,j;
printf("请输入矩阵的行和列:\n");
scanf("%d",&p);
scanf("%d",&q);
printf("请输入矩阵的元素值:\n");
for(i=0;i<p;i++)
for(j=0;j<q;j++)
scanf("%d",&a[j]);
printf("原矩阵为:\n");
for(i=0;i<p;i++)
{
for(j=0;j<q;j++)
printf("]",a[j]);
printf("\n");
}
convert(a);
printf("转置矩阵为:\n");
for(i=0;i<q;i++)
{
for(j=0;j<p;j++)
printf("]",a[j]);
printf("\n");
}
}
void convert(int a[10][10])
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
{
t=a[j];
a[j]=a[j];
a[j]=t;
}
}
88.求∏值,精度为10-5:∏/4≈1-1/3+1/5-1/7+……
#include<stdio.h>
void main()
{
float a=1.0,b;
int i;
for(i=1;1.0/(2*i+1)>0.00001;i++)
{
if(i%2!=0)
a-=1.0/(2*i+1);
else
a+=1.0/(2*i+1);
}
b=4.0*a;
printf("b的值为:%f\n",b);
}
89.用公式计算:e≈1+1/1!+1/2! …+1/n!,精度为10-6。
#include<stdio.h>
float fun(int);
void main()
{
int i;
float e=1.0;
for(i=1;fun(i)>0.00000001;i++)
e+=fun(i);
printf("e=%f\n",e);
}
float fun(int n)
{
int i;
float term=1.0;
for(i=1;i<=n;i++)
term/=i;
return term;
}
90.有一分数序列
2/1,3/2,5/3,8/5,13/8,21/13
求该序列的前20项之和。
#include<stdio.h>
void main()
{
int i;
float a[22], b[20],p=0.0;
a[0]=1.0;
a[1]=1.0;
for(i=2;i<22;i++)
a=a+a;
for(i=0;i<20;i++)
b=a/a;
for(i=0;i<20;i++)
p+=b;
printf("%f\n",p);
}
91.编一个子函数GCD,求两个正整数的最大公约数,主程序输入n个自然数,调GCD,求出这n个数的最大公约数。
#include<stdio.h>
int GCD(int,int);
void main()
{
int a[100],i,n,k;
printf("请输入数组元素的个数:\n");
scanf("%d",&n);
printf("请输入%d个正整数:\n",n);
for(i=0;i<n;i++)
scanf("%d",&a);
k=GCD(a[0],a[1]);
for(i=2;i<n;i++)
k=GCD(k,a);
printf("输入的%d个正整数的最大公约数是:%d\n",n,k);
}
int GCD(int x,int y)
{
int i,min,p,q,gcd;
if(x<=y)
min=x;
else
min=y;
for(i=1;i<=min;i++)
{
p=x%i;
q=y%i;
if(p==0&&q==0)
gcd=i;
}
return gcd;
}
92.写函数求sin(x)的值。计算公式为:Sin(x)=X-X3/3!+X5/5!-X7/7!+ …+(-1)n-1X2n-1/(2n-1)!。
#include<stdio.h>
float fun(float,int);
float sin(int,float);
float term(int);
void main()
{
int n;
float x;
printf("请输入n,x值:\n");
scanf("%d",&n);
scanf("%f",&x);
printf("sin(%f)=%f",x,sin(n,x));
}
float sin(int n,float x)
{
int i;
float s=0.0;
for(i=1;i<=n;i++)
s+=fun(-1.0,i-1)*fun(x,2*i-1)*term(2*i-1);
return s;
}
float fun(float x,int n)
{
int i;
float p=1.0;
for(i=0;i<n;i++)
p=p*x;
return p;
}
float term(int n)
{
int i;
float q=1.0;
for(i=1;i<=n;i++)
q/=i;
return q;
}
93.编一函数使用冒泡法对若干个整数按从小到大的顺序排序,主函数中输入若干个整数到一个一维数组中,调用排序函数,将其排序,最后将原数组和排好序的数组输出。
#include<stdio.h>
#define N 10
void main()
{
int a[N],i,j,temp;
printf("请输入10个整数:\n");
for(i=0;i<N;i++)
scanf("%d",&a);
printf("\n");
printf("原始数据为:\n");
for(i=0;i<N;i++)
printf("%d",a);
for(i=1;i<=N-1;i++)
{
for(j=0;j<=N-i-1;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("\n排序后的数据为:\n");
for(i=0;i<N;i++)
printf("%d",a);
printf("\n");
}
94.求一个m行n列的二维数组中的这样一个原素;它在它所在的行为最大,在它所在的列为最小。
#include<stdio.h>
#define N 4
#define M 5
void main()
{
int i,j,k,a[N]
,max,maxj,flag;
printf("please input matrix:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[j]);
for(i=0;i<N;i++)
{
max=a[0];
maxj=0;
for(j=0;j<M;j++)
if(a[j]>max)
{
max=a[j];
maxj=j;
}
flag=1;
for(k=0;k<N;k++)
if(max>a[k]
)
{
flag=0;
continue;
}
if(flag)
{
printf("a[%d][%d]=%d\n",i,maxj,max);
break;
}
}
if(! flag)
printf("It is not exist!\n");
}
95.编写一个函数求给定字符串长度,主函数中输入一个字符串,调用该子函数,求出该字符串的长度,输出。
#include<stdio.h>
void main()
{
int length(char*p);
int len;
char str[20];
printf("input string:");
scanf("%s",str);
len=length(str);
printf("The length of string is %d.\n",len);
}
int length(char*p)
{
int n;
n=0;
while(*p!='\0')
{
n++;
p++;
}
return(n);
}
96.编写一个函数将给定字符串复制到另一个字符串中去,主函数中输入一个字符串,调用该子函数,复制出另一字符串,将两个串输出。
#include<stdio.h>
#include<string.h>
void main()
{
void copystr(char*,char*,int);
int m;
char str1[20],str2[20];
printf("\ninput string:");
gets(str1);
printf("which character that begin to copy?");
scanf("%d",&m);
if(strlen(str1)<m)
printf("input error!");
else
{
copystr(str1,str2,m);
printf("result:%s\n",str2);
}
}
void copystr(char*p1,char*p2,int m)
{
int n;
n=0;
while(n<m-1)
{
n++;
p1++;
}
while(*p1!='\0')
{
*p2=*p1;
p1++;
p2++;
}
*p2='\0';
}
97.写函数求Cos(x)=1+X2/2!-X4/4!+X6/6!- …+(-1)nX2n/(2n)!。
#include<stdio.h>
float fun(float,int);
float cos(int,float);
float term(int);
void main()
{
int n;
float x;
printf("请输入n,x值:\n");
scanf("%d",&n);
scanf("%f",&x);
printf("cos(%f)=%f",x,cos(n,x));
}
float cos(int n,float x)
{
int i;
float s=-1.0;
for(i=1;i<=n;i++)
s+=fun(-1.0,i-1)*fun(x,2*i)*term(2*i);
return s;
}
float fun(float x,int n)
{
int i;
float p=1.0;
for(i=0;i<n;i++)
p=p*x;
return p;
}
float term(int n)
{
int i;
float q=1.0;
for(i=1;i<=n;i++)
q/=i;
return q;
}
98.编写一个函数将给定字符串中的大写字母转换成小写字母,主函数中输入一个字符串,调用该子函数,进行转换,将原字符串及转换后的字符串输出。
#include<stdio.h>
void main()
{
int i;
char a[11];
gets(a);
puts(a);
for(i=0;i<10;i++)
if(a>=65&&a<=90)
a=a+32;
puts(a);
}
99.编写一个函数将给定的两个字符串连接成一个字符串:
格式为:strcat(ch1,ch2);
功能:将ch2复制到ch1的后面;
主函数中输入两个字符串,调用该子函数,求出连接之后的字符串,将两个原字符串及连接之后的结果串输出。
#include<stdio.h>
#include<string.h>
void main()
{
char str1[20],str2[8];
gets(str1);
gets(str2);
strcat(str1,str2);
printf("%s\n",str1);
}
100.用40元钱买苹果、西瓜和梨共100个,且三种水果都有。已知苹果0.4元一个,西瓜4元一个,梨0.2元一个。问可以买多少个?编程输出所有购买方案。
#include<stdio.h>
void main()
{int i=1,j,k;
double r;
printf("苹果 西瓜 梨\n");
while (i<=100)
{
j=1;
while(j<=(10-i))
{
k=100-i-j;
r=2*i/5+4*j+i/5;
if(r<=40)
printf("%d}}\n",i,j,k);
j++;
}
i++;
}
}
101.编程:建立一个3×3的二维整数数组,求两条对角线上元素值得和,并将结果输出。(用函数调用方式编程)
102.编程计算:1*2*3+3*4*5+……+99*100*101的值。
#include<stdio.h>
void main()
{
int i,j,k,sum=0;
for(i=1,j=2,k=3;i<100,j<101,k<102;i+=2,j+=2,k+=2)
sum=sum+i*j*k;
printf("%d\n",sum);
}
103.有一个5×4的矩阵,编程实现:找出该矩阵中每行元素的最大值,并使该值成为该行的首列元素。
#include<stdio.h>
void main ()
{
int a[5][4]={6,7,8,9,2,7,8,7,4,8,9,5,2,4,6,7,2,4,1,2},b[5][4]={6,7,8,9,2,7,8,7,4,8,9,5,2,4,6,7,2,4,1,2},t,i,j,k,p;
int max[5]={6,2,4,2,2};
for(i=0;i<5;i++)
{for(j=1;j<4;j++)
if(a[j]>max)
{
max=a[j];
}
}
for(k=0;k<5;k++)
{for(p=1;p<4;p++)
if(max[k]!=b[k][p])
{b[k][p]=b[k][p];}
else
{ t=b[k][0];
b[k][0]=b[k][p];
b[k][p]=t;
}
}
for(k=0;k<5;k++)
for(p=0;p<4;p++)
printf("\nb[%d][%d]=%d",k,p,b[k][p]);
printf("\n");
}
104.编写一个程序,使输入的一个字符串按反序存放在一字符数组中,然后输出。要求:
(1)在主调函数中输入字符串;
(2)写函数完成由主调函数传递来的字符串按反序存放;
(3)在主调函数中输出结果。
#include<stdio.h>
#include<string.h>
void main()
{
void inverse(char str[]);
char str[100];
printf("输入字符串:\n");
gets(str);
inverse(str);
printf("%s\n",str);
}
void inverse(char str[])
{char t;
int i,j;
for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)
{t=str;
str=str[j-1];
str[j-1]=t;
}
}
105.从键盘输入五个字符串,分别求出字符串中长度最长和最短的字符串,请编程。(要求:不要使用strlen(_)函数编程)
106.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请编程实现。
#include<stdio.h>
#define N 10
void main()
{
int a[N],b[N],i,j,min,max,p,t;
printf("请输入数据\n");
for(i=0;i<N;i++)
scanf("%d",&a);
for(i=0,j=0;i<N,j<N;i++,j++)
b[j]=a;
for(j=0;j<N;j++)
printf("=",b[j]);
printf("\n");
for(i=1;i<N;i++)
{
if(a[0]>a)
{a[0]=a;
min=a[0];}
}
for(i=0;i<N-1;i++)
{
if(a[N-1]<a)
{a[N-1]=a;
max=a[N-1];}
}
for(j=0;j<N;j++)
{
if(min!=b[j])
{b[j]=b[j];}
else
{t=b[0];
b[0]=b[j];
b[j]=t;
}
}
for(j=0;j<N;j++)
{if(max!=b[j])
{b[j]=b[j];}
else
{p=b[N-1];
b[N-1]=b[j];
b[j]=p;
}
}
for(j=0;j<N;j++)
printf("=",b[j]);
printf("\n");
}
107.写一个判断素数的函数,在主函数中调用素数的判断函数,求出2到1000之间的素数的累加和,将结果输出,请编程。
#include<stdio.h>
#include<math.h>
int isprime(int);
void main()
{
int i,sum=0;
for (i=2;i<=1000;i++)
if (isprime(i))
sum=sum+i;
printf("%d\n",sum);
}
int isprime(int a)
{
int j;
for(j=2;j<=sqrt(a);j++)
if(a%j==0) return 0;
return 1;
}
108.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
#include<stdio.h>
int letter,digit,space,others;
void main()
{
void count(char[]);
char text[80];
printf("输入字符串:\n");
gets(text);
printf("字符串是:");
puts(text);
letter=0;
digit=0;
space=0;
others=0;
count(text);
printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others);
}
void count(char str[])
{int i;
for(i=0;str!='\0';i++)
if((str>='a'&&str<='z')||(str>='A'&&str<='Z'))
letter++;
else if(str>='0'&&str<='9')
digit++;
else if(str==32)
space++;
else
others++;
}
109.请编程实现:将两个字符串s1和s2比较,如果s1>s2,输出一个正数;s1<s2,输出一个负数;s1==s2,输出0。
要求:不要用strcpy函数,两个串用gets函数读入,输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCⅡ码的差值。
#include<stdio.h>
void main()
{
int i,resu;
char str1[100],str2[200];
printf("请输入str1:\n");
gets(str1);
printf("请输入str2:\n");
gets(str2);
i=0;
while((str1==str2)&&(str1!='\0')) i++;
if(str1=='\0'&&str2=='\0') resu=0;
else
resu=str1-str2;
printf("%d\n",resu);
}
110.编写一个函数,由实参传来一个字符串,把串中所有大写字母变成相应的小写字母;原串中所有的小写字母变成相应的大写字母,在主函数中输入原字符串和输出变换后的字符串,请编程。
#include<stdio.h>
void strupr(char str[]);
void main()
{
char text[20];
printf("请输入字符串:\n");
gets(text);
printf("%s\n",text);
strupr(text);
printf("%s\n",text);
}
void strupr(char str[])
{
int i;
for(i=0;str!='\0';i++)
if(str>='a'&&str<='z')
str=str+'A'-'a';
else if(str>='A'&&str<='Z')
str=str-'A'+'a';
}
111.编程实现:由键盘输入的任意一组字符中统计出大写字母的个m和小写字母的个数n,并输出m、n中的较大者。
#include<stdio.h>
int fmax(int x,int y);
void main()
{
char str[80];
int m=0,n=0,i=0,k=0,c;
printf("请输入一个字符串\n");
gets(str);
for(i=0;str!='\0';i++)
if('A'<=str&&str<='Z')
++m;
else if('a'<=str&&str<='z')
++n;
else
++k;
printf("有%d个大写字母,有%d个小写字母:\n",m,n);
c=fmax(m,n);
printf("max=%d\n",c);
}
int fmax(int x,int y)
{
int z;
z=x>y?x:y;
return z;
}
112.定义一个含有30个整形元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出,请编程。
#include<stdio.h>
void main()
{
int a[30] ,i,j=0,b[6][5],p,k;
int c[6];
for(i=0;i<30;i++)
a=2*(i+1);
for(i=0;i<30;i++)
{
printf("=",a);
j++;
if(j%5==0) printf("\n");}
for(p=0;p<5;p++)
for(k=0;k<6;k++)
b[k][p]=a[5*k+p];
for(k=0;k<6;k++)
c[k]=(b[k][0]+b[k][1]+b[k][2]+b[k][3]+b[k][4])/5;
for(k=0;k<6;k++)
{printf("=",c[k]);}
printf("\n");
}
113.输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:
(1)能同时被3,5,7整除;
(2)能被其中两数(要指出哪两个数)整除;
(3)能被其中一个数(要指出哪个数)整除。
#include<stdio.h>
void main()
{
int a;
printf("请输入一个整数\n");
scanf("%d",&a);
if(a%3==0&&a%5==0&&a%7==0)
printf("%d能同时被3,5,7整除\n",a);
else if(a%3!=0&&a%5==0&&a%7==0)
printf("%d能同时被5,7整除\n",a);
else if(a%3==0&&a%5!=0&&a%7==0)
printf("%d能同时被3,7整除\n",a);
else if(a%3==0&&a%5==0&&a%7!=0)
printf("%d能同时被3,5整除\n",a);
else if(a%3==0&&a%5!=0&&a%7!=0)
printf("%d能被3整除\n",&a);
else if(a%3!=0&&a%5==0&&a%7!=0)
printf("%d能被5整除\n",a);
else if(a%3!=0&&a%5!=0&&a%7==0)
printf("%d能被7整除\n",a);
else printf("%d不能被3,5,7整除\n",a);