1. 首页 > 电脑手机 >

c语言经典题目 c语言经典题目期末考试

10道经典的C语言例题(含参考程序)

1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。

c语言经典题目 c语言经典题目期末考试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 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息