10道经典的C语言例题(含参考程序)
1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。
c语言经典题目 c语言经典题目期末考试
#include
#include
int main()
{int bai_wei,shi_wei,ge_wei,i,sum=0;
for(i=100;i<1000;i++)
{bai_wei=i/100;
shi_wei=(i%100)/10;
ge_wei=i%10;
if(i==pow(bai_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))
{printf("%d ",i);
sum++;
if(sum%5==0)
printf(" ");
}}
printf(" ");
return 0;
}2.请输入任意两个整数x和y,求其公约数和小公倍数。
#include
int main()
{int x,y,min,max,i;
printf("请输入任意两个整数:");
scanf("%d%d",&x,&y);
min=x>y?y:x;
max=x>y?x:y;
for(i=min;i>0;i--)
if(x%i==0&&y%i==0)
{printf("这两个整数的公约数为:%d ",i);
break;
}for(i=max;i<=xy;i++)
if(i%x==0&&i%y==0)
{printf("这两个整数的小公倍数为:%d ",i);
break;
}return 0;
}3.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include
#include
#define N 50
int main()
{int sum1=0,sum2=0,sum3=0,sum4,i=0;
char str[N];
printf("请输入一串字符串:");
scanf("%s",str);
for(i=0;i
{if((str[i]>='a'&&str[i]='A'&&str[i]<='Z'))
sum1++;
if(str[i]==' ')
sum2++;
if(str[i]>='0'&&str[i]<='9')
sum3++;
}sum4=strlen(str)-sum1-sum2-sum3;
printf("英文字母的个数:%d ",sum1);
printf("空格的个数:%d ",sum2);
printf("数字的个数:%d ",sum3);
printf("其他符号的个数:%d ",sum4);
return 0;
}4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
#include
#include
int main()
{int a,n,s=0,i,x=0,y=0;
printf("请输入整数a的值:");
scanf("%d",&a);
printf("请输入相加的个数n:");
scanf("%d",&n);
for(i=0;i
{x=y+2pow(10,i);
y=x;
s=s+x;
}printf("s=%d ",s);
return 0;
}5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。
#include
int main()
{int sum=0,i,j;
printf("在1000以内的完数有:");
for(i=2;i<=1000;i++)
{for(j=1;j
if(i%j==0)
sum=sum+j;
if(sum==i)
printf("%d ",i);
sum=0;
}printf(" ");
return 0;
}6.输入一个不多于5位的正整数,要求:1、求它是几位数;2、逆序打印出个位数字。
#include
int pows(int a,int n)
{int sum=1,i;
for(i=0;i
sum=suma;
return sum;
}int main()
{int n,i,k,x;
printf("n=");
scanf("%d",&n);
for(i=1;i<6;i++)
if(n/pows(10,i)==0)
{printf("%d ",i);
k=i;
break;
}for(i=0;i
{x=n/pows(10,i)%10;
printf("%d",x);
}printf(" ");
return 0;
}7.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
int main()
{int n,a[5],i=0;
printf("请输入一个5位数:");
scanf("%d",&n);
while(n!=0)
{a[i]=n%10;
n=n/10;
i++;
}if(a[0]==a[4]&&a[1]==a[3])
printf("这个数是回文数 ");
else
printf("这个数不是回文数 ");
return 0;
}8.利用递归算法,将所输入的5个字符,以相反顺序打印出来。
#include
void digui(char a[],int n)
{if(n==1)
printf("%c",a[0]);
else
{printf("%c",a[n-1]);
digui(a,n-1);
}}
int main()
{char str[5];
printf("请输入5个字符:");
scanf("%s",str);
digui(str,5);
printf(" ");
return 0;
}9.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…球出这个序列的前20项之和。
#include
int main()
{int i,a=1,b=1;
float sum=0.0;
for(i=1;i<=20;i++)
{sum=sum+(float)(a+i)/b;
b=a+i;
a=i;
}printf("sum=%f ",sum);
return 0;
}10.利用递归算法求5!。
#include
int digui(int n)
{if(n==1)
return 1;
else
return ndigui(n-1);
}int main()
{int n,sum;
printf("n:");
scanf("%d",&n);
sum=digui(n);
printf("sum=%d ",sum);
return 0;
}
C语言经典面试题8个学生必收录
C语言经典面试题8个必收录
1、请编写一个C函数,该函数给出一个字节中被置1的位的个数。
2、请编写一个C 函数,该函数将给定的一个字符串转换成整数。
3、请编写一个C函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。
4、写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
5、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
6、怎么判断链表中有环?
7、请编写一个C函数,该函数将一个字符串逆序。如果字符串是const的,必须要重新申请内存去保存输出结果,如果不是,则可以使用以下方法
8、编写strcpy 函数已知strcpy 函数的原型是 char strcpy(char strDestconstcharstrSrc);其中strDest是目的字符串strSrc是源字符串。
经典C语言面试算法题
经典C语言面试算法题
1.写一个函数,它的原形是int continumax(char outputstr,char intputstr)
功能:
在字符串中找出连续长的数字串,并把这个串的长度返回,并把这个长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回
9,outputstr所指的值为123456789。
#include
#include
#include
int FindMax_NumStr(char outputstr,char inputstr)
{char in = inputstr,out = outputstr,temp;
char final;
int count = 0;
int maxlen = 0;
int i;
while(in!='\0')
{if(in > 47 && in < 58)
{for(temp = in;in> 47 && in <58;in++)
count++;
}else
in++;
if(maxlen < count)
{maxlen = count;
count = 0;
final = temp;
}}
for(i =0;i
{out = final;
out++;
final++;
}out = '\0';
return maxlen;
}void main(void)
{char input[]="abc123def123456eec123456789dd";
char output[50] = {0};
int maxlen;
maxlen = FindMax_NumStr(output,input);
printf("the str %s
printf("the maxlen is %d
}2.求1000!的未尾有几个0;
求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的'数的个数n3,能被625整除的数的个数n4.1000!末尾的零的个数=n1+n2+n3+n4;
只要是末尾是5的数它乘以一个偶数就会出现一个0,而末尾是0的数乘以任何数也都会出现0
而末尾是0的如果是一个0肯定能被5整除,两个0肯定能被25整数,以此类推3个0就能被5的三次方整除,也就是125
1000!就是1-1000数的相乘,能被5整除的所有数分别乘以一个偶数就会出现这些个的0,而例如100,既能被5整除,也能被25整除,所以就是两个0
1000,既能被5,25,也能被125整除,所以算三个0
例如是10!=12345678910,里面有两个数能被5整除,就是10和5,而
5随便乘以一个偶数就出现一个0,而10乘以其它数也会出现一个0,所以10!会有两个0
#include
#define NUM 1000
int find5(int num)
{int ret = 0;
while(num%5==0)
{num/=5;
ret++;
}return ret;
}int main(void)
{int result = 0;
int i;
for(i=5;i<=NUM;i+=5)
result +=find5(i);
printf("the total zero number is %d
return 0;
}3。编写一个 C 函数,该函数在一个字符串中找到可能的长的子字符串,且该字符串是由同一字符组成的。
char search(char cpSource, char ch)
{char cpTemp=NULL, cpDest=NULL;
int iTemp, iCount=0;
while(cpSource)
{if(cpSource == ch)
{iTemp = 0;
cpTemp = cpSource;
while(cpSource == ch)
++iTemp, ++cpSource;
if(iTemp > iCount)
iCount = iTemp, cpDest = cpTemp;
if(!cpSource)
break;
}++cpSource;
}return cpDest;
};
急求教:C语言的一个经典例题
#include
#include
int
main(void)
{double
a,b,c;
double
x1,x2,x3,y1,y2,y3;
double
cosa,sina,square;
printf("请输入第一个点\n");
scanf("%lf,%lf",&x1,&y1);
printf("请输入第二个点\n");
scanf("%lf,%lf",&x2,&y2);
printf("请输入第三个点\n");
scanf("%lf,%lf",&x3,&y3);
/
注意:
对于double类型来说
当用scanf给double类型赋值时
转换说明符应该是%lf,
或者%lf
而不是%f,
而是用printf给double
类型输出时,
则可以是用%f作为转换
说明符,
不过因此会缺失精度.
也就是类型反向提升
(类型降级)
所以为了准确度考虑,
建议是用%lf
/
a=sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2));
b=sqrt((x1-x3)(x1-x3)+(y1-y3)(y1-y3));
c=sqrt((x3-x2)(x3-x2)+(y3-y2)(y3-y2));
cosa
=(bb+cc-aa)/(2bc);
sina
=sqrt(1-cosacosa);
square
=bcsina/2;
/
此处三角形面积公式为s
=bcsina/2
/
/
而不是absina/2,
这点是值得注意的
/
printf("三角形的面积为:%.2lf\n",
square);
/
square的类型是double,
因此使用%lf输出
/
return
0;
}/
程序测试,
粗体
代表输入
/
请输入第一个点
0,0
请输入第二个点
3,0
请输入第三个点
3,4
三角形的面积为:6.00
#include
void
mian()
{float
s,s1;
printf("输入原始知工资道数");
csanf("%f",&s);
if(s<=500)
s1=s;
else
s1=s/100;
switch(s)
{case
5:
s1=500+(s-500)0.05;
break;
case
10:
s1=500+(1000-500)0.05+(s-1000)0.08;
break;
case
20:
s1=500+(1000-500)0.05+(2000-1000)0.08+(s-2000)0.1;
break;
default:
s1=500+(1000-500)0.05+(2000-1000)0.08+(3000-2000)0.1+(s-3000)0.15;
break;
}printf("实发工专资数是属:%f",s1);
}
#include
void mian()
{float s,s1;
printf("输入原始工资数");
csanf("%f",&s);
if(s<=500)
s1=s;
else
s1=s/100;
switch(s)
{case 5:
s1=500+(s-500)0.05; break;
case 10:
s1=500+(1000-500)0.05+(s-1000)0.08;
break;
case 20:
s1=500+(1000-500)0.05+(2000-1000)0.08+(s-2000)0.1;
break;
default:
s1=500+(1000-500)0.05+(2000-1000)0.08+(3000-2000)0.1+(s-3000)0.15;
break;
}printf("实发工资数是:%f",s1);
}
速阅C语言经典考题
C语言经典题目
1、有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
3、用号输出字母C的图案。
4、输出99口诀。
5、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
6、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
7、求1+2!+3!+...+20!的和。
8、练习函数调用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。