新113道C语言题目.docx
《新113道C语言题目.docx》由会员分享,可在线阅读,更多相关《新113道C语言题目.docx(74页珍藏版)》请在冰豆网上搜索。
新113道C语言题目
113道C语言题目,超经典的~~~
1.输入两个正整数,m和n,求其最大公约数和最小公倍数。
#include
voidmain()
{
inthcf(int,int); /*函数声明*/
intlcd(int,int,int); /*函数声明*/
intu,v,h,l;
printf("Pleaseinputtwonumbers:
\n");
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=lcd(u,v,h);
printf("L.C.D=%d\n",l);
}
inthcf(intu,intv)
{
intt,r;
if(v>u)
{t=u;u=v;v=t;}
while((r=u%v)!
=0)
{u=v;v=r;}
return(v);
}
intlcd(intu,intv,inth)
{
return(u*v/h);
}
91.编一个子函数GCD,求两个正整数的最大公约数,主程序输入n个自然数,调GCD,求出这n个数的最大公约数。
#include
intGCD(int,int);
voidmain()
{
inta[100],i,n,k;
printf("请输入数组元素的个数:
\n");
scanf("%d",&n);
printf("请输入%d个正整数:
\n",n);
for(i=0;i scanf("%d",&a[i]);
k=GCD(a[0],a[1]);
for(i=2;i k=GCD(k,a[i]);
printf("输入的%d个正整数的最大公约数是:
%d\n",n,k);
}
intGCD(intx,inty)
{
inti,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;
}
returngcd;
}
68.用for循环语句计算1到20的和,并将结果输出。
#include
voidmain()
{
inti=1,sum=0;
for(;i<=20;)
{
sum=sum+i;
i++;
}
printf("1到20的和是%d\n",sum);
}
3.输入一个正整数求出它是几位数;输出原数和位数。
#include
intdigit;
voidmain()
{
voidcount(char[]);
chartext[80];
printf("Pleaseinputnumbers:
\n");
gets(text);
printf("Numbers:
\n");
puts(text);
digit=0;
count(text);
printf("digit:
%d\n",digit);
}
voidcount(charstr[])
{
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='9')
digit++;
}
4.输入一个正整数,输出原数并逆序打印出各位数字。
#include
voidinvertLongInt(long);
voidmain()
{
unsignedlongiNumber;
printf("Pleaseinputanumber:
\n");
scanf("%ld",&iNumber);
printf("Theinputnumberis:
%ld\n",iNumber);
printf("Theinversenumberis:
");
invertLongInt(iNumber);
}
voidinvertLongInt(longx)
{
if(x>=0&&x<=9)
printf("%d\n",x);
else
{
printf("%d",x%10);
invertLongInt(x/10);
}
}
86.编一个函数实现将一个整型的一维数组中的数逆序存放,不使用辅助数组。
主函数输入一个整型的一维数组,调用上述函数,将该数组逆置,将结果输出。
#include
#defineN10
voidmain()
{
inta[N],i,temp;
printf("enterarraya:
\n");
for(i=0;i scanf("%d",&a[i]);
printf("arraya:
\n");
for(i=0;i printf("%4d",a[i]);
for(i=0;i {
temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\nNow,arraya:
\n");
for(i=0;i printf("%4d",a[i]);
printf("\n");
}
10.求下列试子的值:
1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。
#include
voidmain()
{
floatsum=1.0,t,s=1;
inti;
for(i=1;i<=100;i++)
{
t=s/i;
sum=sum+t;
s=-s;
}
printf("1-1/2+1/3-1/4+……+1/99-1/100=%5.4f\n",sum);
}
19.求一个3*3的整型矩阵对角线元素之和。
将原矩阵和求出的和输出。
#include
voidmain()
{
floata[3][3],sum=0;
inti,j;
printf("请输入元素:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("对角线之和是:
%6.2f\n",sum);
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
printf("%5.2f",a[i][j]);
printf("\n");
}
}
2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
#include
intletter,digit,space,others;
voidmain()
{
voidcount(char[]);
chartext[80];
printf("Pleaseinputstring:
\n");
gets(text);
printf("string:
\n");
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);
}
voidcount(charstr[])
{
inti;
for(i=0;str[i]!
='\0';i++)
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
elseif(str[i]>='0'&&str[i]<='9')
digit++;
elseif(str[i]==32)
space++;
else
others++;
}
26.有一篇文章,有三行文字,每行有80个字符。
要求统计出其中英文大写字母、消协字母、数字、空格以及其他字符的个数。
#include
voidmain()
{
inti,j,big=0,sma=0,num=0,spa=0,oth=0;
chartext[3][80];
for(i=0;i<3;i++)
{
printf("请输入行%d:
\n",i+1);
gets(text[i]);
for(j=0;j<80&&text[i][j]!
='\0';j++)
{
if(text[i][j]>='A'&&text[i][j]<='Z')
big++;
elseif(text[i][j]>='a'&&text[i][j]<='z')
sma++;
elseif(text[i][j]>='0'&&text[i][j]<='9')
num++;
elseif(text[i][j]=='')
spa++;
else
oth++;
}
}
printf("大写字母:
%d\n",big);
printf("小写字母:
%d\n",sma);
printf("数字:
%d\n",num);
printf("空格:
%d\n",spa);
printf("其它:
%d\n",oth);
}
108.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
#include
intletter,digit,space,others;
voidmain()
{
voidcount(char[]);
chartext[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);
}
voidcount(charstr[])
{inti;
for(i=0;str[i]!
='\0';i++)
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
elseif(str[i]>='0'&&str[i]<='9')
digit++;
elseif(str[i]==32)
space++;
else
others++;
}
69.从键盘输入一行字符,统计出输入的字符个数(注:
不要使用strlun函数编程)。
#include
voidmain()
{ intalphabet=0,i=0;
charstr[100];
printf("请输入一个字符串\n");
gets(str);
for(i=0;str[i]!
='\0';i++)
++alphabet;
printf("有%d个字母\n",alphabet);
}
27.将20个整数放到一维数组中,输出该数组的最大值和最小值。
#include
voidmain()
{
inti,j,min,max,a[21];
printf("请输入数据:
\n");
for(i=1;i<=20;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=1;i<=19;i++)
{
min=i;
for(j=2;j<=19;j++)
if(a[min]>a[j]);
a[min]=a[j];
}
for(i=1;i<=19;i++)
{
max=i;
for(j=2;j<=19;j++)
if(a[max] a[max]=a[j];
}
printf("最大数为:
%d\n",a[max]);
printf("最小数为:
%d\n",a[min]);
}
42.编程序,输入4个整数,按由小到大的顺序输出。
#include
#defineN4
voidmain()
{
inta[N],t,i,j;
printf("输入四个整数:
\n");
for(i=0;i scanf("%d",&a[i]);
printf("\n");
for(i=0;i {
for(j=0;j if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
printf("排序后:
\n");
for(i=0;i printf("%d\n",a[i]);
}
93.编一函数使用冒泡法对若干个整数按从小到大的顺序排序,主函数中输入若干个整数到一个一维数组中,调用排序函数,将其排序,最后将原数组和排好序的数组输出。
#include
#defineN10
voidmain()
{
inta[N],i,j,temp;
printf("请输入10个整数:
\n");
for(i=0;i scanf("%d",&a[i]);
printf("\n");
printf("原始数据为:
\n");
for(i=0;i printf("%d",a[i]);
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 printf("%d",a[i]);
printf("\n");
}
30.编写一个程序,将两个字符串连接起来,不要使用strcat函数。
#include
voidmain()
{
charstr1[20],str2[20];
inti=0,j=0;
printf("请输入字符串1:
\n");
scanf("%s",str1);
printf("请输入字符串2:
\n");
scanf("%s",str2);
while(str1[i]!
='\0')
i++;
while(str2[j]!
='\0')
str1[i++]=str2[j++];
str1[i]='\0';
printf("合并之后的字符串为:
%s\n",str1);
}
99.编写一个函数将给定的两个字符串连接成一个字符串:
格式为:
strcat(ch1,ch2);
功能:
将ch2复制到ch1的后面;
主函数中输入两个字符串,调用该子函数,求出连接之后的字符串,将两个原字符串及连接之后的结果串输出。
#include
#include
voidmain()
{
charstr1[20],str2[8];
gets(str1);
gets(str2);
strcat(str1,str2);
printf("%s\n",str1);
}
102.编程计算:
1*2*3+3*4*5+……+99*100*101的值。
#include
voidmain()
{
inti,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);
}
31.编写一个程序,将字符数组a中的全部字符复制到字符数组b中。
不要使用strcpy函数。
#include
#include
voidmain()
{
chara[40],b[40];
inti;
printf("请输入a:
\n");
scanf("%s",a);
for(i=0;i<=strlen(a);i++)
b[i]=a[i];
printf("b:
%s\n",b);
}
96.编写一个函数将给定字符串复制到另一个字符串中去,主函数中输入一个字符串,调用该子函数,复制出另一字符串,将两个串输出。
#include
#include
voidmain()
{
voidcopystr(char*,char*,int);
intm;
charstr1[20],str2[20];
printf("\ninputstring:
");
gets(str1);
printf("whichcharacterthatbegintocopy?
");
scanf("%d",&m);
if(strlen(str1) printf("inputerror!
");
else
{
copystr(str1,str2,m);
printf("result:
%s\n",str2);
}
}
voidcopystr(char*p1,char*p2,intm)
{
intn;
n=0;
while(n {
n++;
p1++;
}
while(*p1!
='\0')
{
*p2=*p1;
p1++;
p2++;
}
*p2='\0';
}
95.编写一个函数求给定字符串长度,主函数中输入一个字符串,调用该子函数,求出该字符串的长度,输出。
#include
voidmain()
{
intlength(char*p);
intlen;
charstr[20];
printf("inputstring:
");
scanf("%s",str);
len=length(str);
printf("Thelengthofstringis%d.\n",len);
}
intlength(char*p)
{
intn;
n=0;
while(*p!
='\0')
{
n++;
p++;
}
return(n);
}
104.编写一个程序,使输入的一个字符串按反序存放在一字符数组中,然后输出。
要求:
(1)在主调函数中输入字符串;
(2)写函数完成由主调函数传递来的字符串按反序存放;
(3)在主调函数中输出结果。
#include
#include
voidmain()
{
voidinverse(charstr[]);
charstr[100];
printf("输入字符串:
\n");
gets(str);
inverse(str);
printf("%s\n",str);
}
voidinverse(charstr[])
{chart;
inti,j;
for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
29.将字符数组str1种下标为偶数的元素赋给另一字符数组str2,并输出str1和str2。
#include
#include
#defineN10
voidmain()
{
inti,n;
charstr1[N],str2[N];
gets(str1);
for(n=0;n {
i=2*n;
str2[n]=str1[i];
}
puts(str1);
puts(str2);
}
32.编写一个程序,找出3个字符串中的最大者,将它输出。
#include
#include
voidmain()
{
charstring[20];
charstr[3][20];
inti;
for(i=0;i<3;i++)
gets(str[i]);
if(strcmp(str[0],str[1])>0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[2],string)>0)
strcpy(string,str[2]);
printf("最大的字符串是:
\n%s\n",string);
}
36.输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,若能,计算面积。
#include
#include
voidmain()
{
floata,b,c,area;
doubles;
printf("Pleaseenterthreesidesofatriangle:
\n");
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2.0;
area=sqrt(s*(s-a)*(s-b)*(s-c));
if(a+b printf("Theycan'tformatriangle.\n");
else
printf("Theareaofthetriangleis:
%f\n",area);
}
#include
#defineN10