当前位置:文档之家› C语言13道题目

C语言13道题目

C语言13道题目
C语言13道题目

这十三个题目我用的编译器是Microsoft Visual Studio中编译的所以在任何一个后面都加了两行getchar();如果你用的编译器是VC++6.0;后面两行getchar();完全可以不加。其中绿颜色的全为注释部分。

1、编写程序,分行输出一个三位数的每一个数字,即分三行输出个位数字、十

位数字、百位数字

#include"stdio.h" /*头文件*/

void main() /*主函数*/

{

int b,x,y,z; /*定义三个变量b(b用来存输入的一个三位数),x(百位数),y (十位数),z(个位数)*/

scanf("%d",&b); /*从键盘输入一个三数存入变量b*/

x=b/100; /*用这个三位数除以100(两个整型相除得到还是一个整型,只会取整数部分)从而得到百位数*/

y=b%100/10; /*用这个三位数对100取余(取余所得的余数)用这个余数除以10(两个整型相除得到还是一个整型,只会取整数部分)从而得到十位数*/

z=b%10; /*用这个三位数对10取余(取余所得的余数)从而得到个位数*/

printf("个位为%d\n",z); /*输出个数上的数字*/

printf("十位为%d\n",y); /*输出十数上的数字*/

printf("百位为%d\n",x); /*输出百数上的数字*/

getchar();

getchar();

}

2、鸡与兔共100只,鸡的脚数比兔的脚数少28.问鸡与兔各几只?

#include"stdio.h" /*头文件*/

void main() /*主函数*/

{

int x; /*定义变量x(鸡的数量为x)*/

for(x=0;x<=100;x++) /*循环(x的值可以从0取到100)*/

{

if(x+(100-x)==100 && 4*(100-x)-2*x==28) /*判断鸡兔的总数和要达到100;还有判断鸡的脚要比兔的脚少28只,要两个要求同时满足时才执行下面的输出语句*/

{

printf("鸡的只数为%d\n兔子的只数为%d\n",x,100-x);/*要上面条件满足时才输出鸡都数量级兔子的数量(因为鸡的数量是x,所以兔的数量就为100-x)*/

}

}

getchar();

getchar();

}

3、有30个人在饭馆吃饭,其中有男人、女人、小孩,每个男人花3块钱,女

人花2块钱,小孩花1块钱,一共50块钱,问男人、女人和小孩各多少人?

(男人、女人、小孩都存在)

#include"stdio.h" /*头文件*/

void main() /*主函数*/

{

int X,Y,Z; /*定义变量X,Y,Z(男人数量为X,女人的数量为Y,小孩的数量为Z)*/

for(X=1;X<=15;X++) /*循环体(X的值可以从1取到16,因为前提因素是男人、女人、小孩都存在的,所以至少存在1个,而后面的条件是共只有50元,小孩、女人至少有1人存在就用了3元,而乘下的都是男人为37元,从而循环只能取1至16了,)*/

{

for(Y=1;Y<=23;Y++) /*循环体(Y的值可以从1取到23,因为前提因素是男人、女人、小孩都存在的,所以至少存在1个,而后面的条件是共只有50元,小孩、男人至少有1人存在就用了4元,而乘下的都是男人为46元,从而循环只能取1至23了,)*/

{

Z=30-X-Y; /*从上面的循环体内得出了男人及女人的数量,总人数是30人,得知小孩就为30减去男人再减去女人*/

if(3*X+2*Y+1*Z==50) /*判断总钱数是否等于50元*/ printf("男人%d,女人%d,小孩%d\n",X,Y,Z); /*输出每一次满足条件的结果*/

}

}

getchar();

getchar();

}

4、编写函数求n的阶乘n!(利用循环和递归两种方法)

函数原型为:long factn(int n)

循环方法:

#include"stdio.h" /*头文件*/

void main() /*主函数*/

{

long d=factn(5); /*对自定义函数的调用*/

printf("%d\n",d); /*输出调用所得的到结果*/

getchar();

getchar();

}

long factn(int n) /*对自定义函数的说明*/

{

long result=1; /*定义一个长整型变量result并赋初始值为1*/

int i; /*定义一个整型变量i用来控制循环体的初始值*/

for (i=1; i<=n;i++) /*循环体(用n来控制阶乘的循环次数)*/

{

result=result*i; /*将result乘以i的值赋给result*/

}

return result;

}

递归方法:这个方法不解释,自己都被搞晕了。

#include"stdio.h"

void main()

{

long d=factn(5);

printf("%d\n",d);

getchar();

getchar();

}

long factn(int n)

{

if(n==1)

{

return 1;

}

else

{

return n*factn(n-1);

}

}

5、编写程序,实现从键盘输入两个整数,输出它们的加、减、乘、除、取余5

种算术运算结果

#include /*头文件*/

void main() /*主函数*/

{

int a,b; /* 定义两个整型变量a(a同是是加、减、乘、除数及取

余的数)与b(同时是被加、减、乘、除数及取余的数) */

printf("请输入两个数:\n"); /* 提示用户要输入两个数 */

scanf("%d%d",&a,&b); /* 接收用户要键盘输入的两个数,分别存入a与b中 */

printf("a + b = %d\n",a + b); /* 输出a+b的结果 */

printf("a - b = %d\n",a - b); /* 输出a-b的结果 */

printf("a * b = %d\n",a * b); /* 输出a*b的结果 */

printf("a / b = %.3f\n",(float)a/(float)b); /* 输出a/b的结果(此处a除以b的结果有可能是个小数,所以数据类型在强置转换成浮点型)*/ printf("a %% b = %d\n",a % b); /* 输出a%%(求余)b的结果 */

getchar();

getchar();

}

6、给出一个百分制成绩,要求输出成绩等级'A','B','C','D','E',90分以上为

'A',80~89分为'B',70~79分为‘C’,60~69分为'D',60分以下为‘E’。(用if和switch分别实现)

用if方法:

#include"stdio.h" /*头文件*/

int main() /*主函数*/

{

int score; /*定义整型变量score*/

printf("输入成绩:"); /*提示用“输入成绩”*/

scanf("%d", &score); /*从键盘上输入一个数并且存在变量score里面*/ if(score<=100&&score>=0) /*判断输入的这个数是否在0~100之间*/

{

if(score>=90) /*判断输入的数是否大于或等于90*/ printf("你的成绩等级为A\n"); /*如果上面条件成立就输出“你的成绩等级为A”*/

else if(score>=80) /*判断输入的数是否大于或等于80并且是小于90的*/

printf("你的成绩等级为B\n"); /*如果上面条件成立就输出“你的成绩等级为B”*/

else if(score>=70) /*判断输入的数是否大于或等于70并且是小于80的*/

printf("你的成绩等级为C\n");/*如果上面条件成立就输出“你的成绩等级为C”*/

else if(score>=60) /*判断输入的数是否大于或等于60并且是小于70的*/

printf("你的成绩等级为D\n");/*如果上面条件成立就输出“你的成绩等级为D”*/

else /*判断输入的数是否小于60 */

printf("你的成绩等级为E\n"); /*如果上面条件成立就输出“你的成绩等级为E”*/

}

else /*这个else与最上面的if语句(判断成绩是否在于0~100之间的)配套,判断输入的数是否在100以外或者是在0以下*/

printf("哥你输入的数字有误\n"); /*如果上面条件成立就提示你输出

有误*/

getcahr()

getcahr;

}

用switch方法:

#include /*头文件*/

int main() /*主函数*/

{

double grade; /*定义符点型变量(因为成绩有可以带小数的),用来存放输入的成绩*/

int int_grade; /*定义整型变量,用来存将double型转成int型的变量*/

printf("your score:"); /*提示用“your score”*/

scanf("%d,\n",&grade); /*从键盘上输入一个数并且存在变量score里面*/

int_grade=(int)grade; /*将符点型数grade强制转换成整型并赋值

给变量int_grade*/

if( grade<=100&&grade>=0) /*判断输入的这个数是否在0~100之间*/ switch(int_grade/10) /*switch语句后面可以带一个表达式,也可是int型数据,也可以是char型,(后面用int_grade/10两个整型相除得到的还是一个整型)因为成绩的关系都是10的倍数*/

{

case 10:

case 9: printf("you score:A\n"); /*如果上面表达式得到的结果是10和9,就都输出“you score:A”*/

break; /*如果上面语句执行完就,结束switch语句*/ case 8: printf("you score:B\n"); /*如果上面表达式得到的结果是8,就都输出“you score:B”*/

break; /*如果上面语句执行完就,结束switch语句*/ case7: printf("you score:C\n"); /*如果上面表达式得到的结果是7,就都输出“you score:C”*/

break; /*如果上面语句执行完就,结束switch语句*/ case 6: printf("you score:D\n"); /*如果上面表达式得到的结果是6,就都输出“you score:D”*/

break; /*如果上面语句执行完就,结束switch语句*/ case 5:

case 4:

case 3:

case 2:

case 1:

case 0: printf("you score:E\n"); /*如果上面表达式得到的结果是5,4,3,2,1,就都输出“you score:E”*/

break; /*如果上面语句执行完就,结束switch语句*/

}

else/*这个else与最上面的if语句(判断成绩是否在于0~100之间的)配套,判断输入的数是否在100以外或者是在0以下*/

printf("哥你输入有误啊!"); /*如果上面条件成立就提示你输出有误*/

getchar();

getchar();

}

7、共有1000瓶汽水,每喝完一瓶得到一个空瓶子,每3个空瓶子又能换1瓶

汽水,喝掉以后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩多少个空瓶子?

#include"stdio.h" /*头文件*/

void main() /*主函数*/

{

int x=1000,y=0,z=0; /*定义变量X,Y,Z(之前汽水数量为X并赋初值为1000,空瓶子的数量为Y,喝掉汽水的总数量为Z)*/

while(x>0) /*当X大于0时进行循环*/

{

x--; /*当每一次喝掉一瓶汽水就从X中减去1*/

y++; /*当每一次喝掉一瓶汽水,空瓶子就加1*/

z++; /*当每一次喝掉一瓶汽水,喝掉汽水的总数量就加1*/

if(y==3) /*如果空瓶子的数量达到3个时,就可以用3个空瓶子去换一瓶汽水*/

{

x++; /*用3个空瓶子去换一瓶汽水,所以汽水的数量又得加1*/

y=0; /*当用3个空瓶子换了汽水之后,空瓶子的数量就为0了*/ }

}

printf("共%d,空%d\n",z,y); /*输出共喝了多少瓶汽水及最后乘多少个空瓶子*/

getchar();

getchar();

}

8、每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元买100只鸡,

请问有哪些可能?

(每种鸡的数量都可以为0)

#include /*头文件*/

void main() /*主函数*/

{

int x=0,y=0,z=0; /* 定义三个变量x(公鸡),y(母鸡),z(小鸡);并且每个都赋初值为0 */

for(x=0;x<=25;x++) /* X的初值为0,可是X的最大值只能到25(因为公鸡是4元,25只就100元,)所以只能在这个范围内取值,X的值累加*/ {

for(y=0;y<=33;y++) /* Y的初值为0,可是Y的最大值只能到33(因为母鸡是3元,33只就99元,)所以只能在这个范围内取值,Y的值累加*/

{

z=100-x-y; /* 前面确定的X与Y的取值范围,后面Z 就等于总数减去前面两项,所得到的*/

if(4*x+3*y+0.5*z==100) /* 前面三个循环确定了X,Y,Z值的范围,如果表达式成立,则运行下列输出结果*/

printf("母鸡数为%d:公鸡数为%d:小鸡数为%d:\n",x,y,z);/* 输

出每一次满足条件的结果。 */

}

}

getchar();

getchar();

}

9、输出9*9乘法表

#include"stdio.h"/*头文件*/

void main() /*主函数*/

{

int i,j,result; /*定义三个变量i(用来控制行数),j(用来控制列

数),result(用来存乘积)*/

for (i=1;i<=9;i++) /*给i赋初始值为1,当i小等于9时,i递增*/

{ for(j=1;j<=i;j++) /*给j赋初始值为1,当j小等于i时,j递增;j的循环次数由i来决定*/

{

result=i*j; /*当i与j每一次进行取值时,把其值相乘得到的结果赋给result*/

printf("%d*%d=%-3d",i,j,result);/*将i乘j的值按左对齐,占3位的形式输出*/

}

printf("\n"); /*当每执行完一次内循环之后就输出一个换行*/

getchar();

getchar();

}

10、设计一个程序,从键盘输入3个整数,输出其中不大不小的那个数,输

出宽度为五位。

#include /*头文件*/

void main() /*主函数*/

{

int X(int x,int y,int z); /*对X函数的声明*/

int a,b,c,d; /*定义三个整型变量a,b,c,d*/

printf("请输入三个值\n"); /*提示用户从键盘输入三个数*/

scanf("%d%d%d",&a,&b,&c); /*从键盘输入三个数分别存入a,b,c中*/ d=X(a,b,c); /*对X函数的调用*/

printf("中间值为%5d\n",d); /*输出调用函数后的结果,所得到的中间那个数*/

getchar();

getchar();

}

int X(int x,int y,int z) /*定义X函数*/

{

int m; /*定义一个整型变量m*/

if (x

else if(x>y&&x>z&&y>z)m=y; /*当x大于y而且x又要大于z和y又要大于z 时,则y就为当中值*/

else if(x>y&&x

else if(xz&&y>z)m=x; /*当x小于y而且x又要大于z和y又要大于z 时,则x就为当中值*/

else if(xz)m=z; /*当x小于y而且x又要小于z和y又要大于z 时,则z就为当中值*/

else if(x>y&&x>z&&y

return (m); /*将得到的结果返回出去*/

}

11、编程求1+3+5+7+……95+97+99的和

#include /*头文件*/

int main() /*主函数*/

int i,m=0; /*定义两个变量i(用来控制加数的循环),m(用来得到最后的累加和)*/

for(i=1;i<100;i=i+2) /* i的初值为1,当i小于100时;i累计加2 */

m=m+i; /* 将100以内的的奇数和累加起来 */

printf("m=%d\n",m); /* 将得到最后的结果输出 */

getchar();

getchar0;

}

12、输出100-200之间,能被3整除但不能被7整除的数

#include /*头文件*/

int main() /*主函数*/

{

int n,j=0; /* 定义两个变量n(用来控制循环),j(用来控制每行输出的个数及数量) */

for(n=100;n<=200;n++) /* 变量n的初值为100,终值为200,在这个数之间判断能被3整除但不能被7整除的每一个数,每次判断一个数之后累加 */ {

if(n%3==0&&n%7!=0) /* 如果这个数能被3整除,但不能被7整除 */

{

printf("n=%-8d",n); /* 则按左对齐,占8个宽度,输出这个数 */

j++; /* 每次输出一个数之后,j的值就加1 */

if(j%5==0) /* 当j等于5或是5的倍数时(就是当j对5取余等于0时) */

printf("\n"); /* 则输出换行 */

}

}

printf("个数=%d\n",j); /* 输出总共有多少个数 */

getchar();

getchar();

}

13、有100匹马,驼100担货,大马担3担,中马担2担,两匹小马担一担,

共有多少种驼法。

#include"stdio.h" /*头文件*/

void main() /*主函数*/

{

int X,Y,Z; /* 定义三个变量X(表示大马),Y(表示中马),Z(表示小马) */

for(X=0;X<=33;X++) /* X的初值为0,可是X的最大值只能到33

(因为一匹大马担3担,33匹就是99担,总数才100担,)所以只能在这个范围内取值,X的值累加*/

{

for(Y=0;Y<=50;Y++) /*Y的初值为0,可是Y的最大值只能到50(因为一匹中马担2担,50匹就是100担,总数才100担,)所以只能在这个范围内取值,Y的值累加*/

{

Z=100-X-Y; /* 前面确定的X与Y的取值范围,后面Z就等于总数减去前面两项,所得到的*/

{

if(3*X+2*Y+0.5*Z==100) /* 前面三个循环确定了X,Y,Z值的范围,如果表达式成立,则运行下列输出结果*/

printf("大马%d,中马%d,小马%d\n",X,Y,Z); /* 将每一次符合条件的结果输出来*/

}

}

}

getchar();

getchar();

}

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

大学经典C语言编程试题

1.输入两个正整数,m和n,求其最大公约数和最小公倍数。 #include<> void main() { int hcf(int,int); /*函数声明*/ int lcd(int,int,int); /*函数声明*/ int u,v,h,l; printf("Please inputtwo numbers:\n"); scanf("%d,%d",&u,&v); h=hcf(u,v); printf("",h); l=lcd(u,v,h); printf("",l); } int hcf(int u,int v) { int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v;v=r;} return(v); } int lcd(int u,int v,int h) { return(u*v/h); } 2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。#include<> int letter,digit,space,others; void main() { void count(char[]); char text[80]; printf("Please inputstring:\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);

经典练习C语言编程的题目及答案整理

1.逆序输出正三位数 #include int main() { int input,output= 0; scanf("%d",&input); while(input != 0) { output = output*10 + input%10; input /= 10; } printf("%d\n",output); return 0; } 2.百元找零函数 #include int main() { int amount=100; int price=0; printf("请输入金额(元)"); scanf("%d",&price); printf("请输入票面"); scanf("%d",&amount); int change=amount-price; printf("找您%d元。\n",change); return 0; } 3.求平均数 #include int main() { int a,b; scanf("%d %d",&a,&b);

double c=(a+b)/2.0; /* scanf("%d",&amount); 这是注释,我随便放的,没意义 int change=amount-price;*/ printf("%d和%d的平均值是%f\n",a,b,c); return 0; } 4.写出程序的输出: int i=1; switch ( i/3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); } 正确答案是:zeroonetwo。 5.水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 13 + 53+33。本题要求编写程序,计算所有N位水仙花数。 输入格式: 输入在一行中给出一个正整数N(3<=N<=7)。 输出格式: 按递增顺序输出所有N位水仙花数,每个数字占一行。 输入样例: 3 输出样例: 153 370 371 407

c语言数组典型试题设计含答案

一.选择题(2*20) 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题2】以下对一维整型数组a 的正确说明是。 A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n]; 【题3】若有说明:int a[10];则对a 数组元素的正确引用是。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题5】以下能对一维数组a 进行正确初始化的语句是。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题6】以下对二维数组a 的正确说明是。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 【题7】若有说明:int a[3][4];则对a 数组元素的正确引用是。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题9】以下能对二维数组a 进行正确初始化的语句是。 A)int a[2][]={{1,0,1},{5,2,3}}; B)int a[][3]={{1,2,3},{4,5,6}}; C)int a[2][4]={{1,2,3},{4,5},{6}}; D)int a[][3]={{1,0,1},{},{1,1}}; 【题10】以下不能对二维数组a 进行正确初始化的语句是。 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6};

c语言经典面试题

C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10;

c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对

C语言经典题目

C语言经典题目 一、舍罕王的失算——不可忽视的和与积 1 舍罕王的失算 ,,,,,,,,,,,,,,,,,,,, 2 分数不等式 3 阶乘与阶乘和数 4 综合高精度计算 5 个人所得税计算 6 大奖赛现场统分 7 图形点扫描 二、勾股数——古老文明的精华 8 最大公约数与最小公倍数 9 水仙花数 10 勾股数 ,,,,,,,,,,,,,,,,,,,,,, 11 完全数 12 相亲数 13 守形数 三、素数——上帝用来描写宇宙的文字 14 素数 15 乌兰现象 16 孪生素数 .17 梅森尼数 18 金蝉素数 19 素数多项式 20 等差素数列 21 验证歌德巴赫猜想

22 合数世纪探求 四、桥本分数式——优美的智慧 23 逆序乘积式 24 巧妙的三组平方 25 完美和式 26 完美乘积式 27 完美综合运算式 28 桥本分数式 29 埃及分数式 五、斐波那契序列——递推的学问 30 分数序列 31 斐波那契序列与卢卡斯序列 32 幂序列 33 双关系递推数列 34 基于2x+3y的递推数列 35 汉诺塔问题 36 猴子吃桃 37 猴子爬山 38 购票排队 *39 神秘的数组 六、韩信点兵——远古的神机妙算 40 破解数字魔术 41 鸡兔同笼与羊犬鸡兔问题 42 百鸡问题 43 韩信点兵 44 整币兑零 *45 解佩尔方程 七、泊松分酒——奇妙的分解 46 分解质因数 47 积最大的整数分解 48 整数的拆分

49 整数的分划 50 泊松分酒 *51 西瓜分堆 *52 水手分椰子 *53 矩形的优化剪切 八、角谷猜想——精巧的转化 54 分数化小数 55 数制转换 56 角谷猜想 57 黑洞数495与6174 58 回文数 九、幻方——古今中外的数阵奇葩 59 杨辉三角 60 数字三角形 61 折叠方阵与旋转方阵 *62 幻方 *63 三阶素数方阵 64 可逆素数方阵 十、插入乘号——决策的最优化 65 删除中的最值问题 *66 最长公共子序列 67 古尺神奇 68 数码珠串 *69 数阵中的最优路径 *70 插入乘号问题 71 智能甲虫的安全点 72 点的覆盖圆 十一、尾数前移——运算模拟的典范 73 均位奇观探索 74 多少个1能被2009整除 75 01串积问题 76 连写数整除问题

(完整版)C语言100个经典题目

C语言程序设计习题 授课对象:信息奥赛辅导成员 授课时间: 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数 为多少? __________________________________________________________________ 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21…. ___________________________________________________________________ 程序源代码: main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf(“%12ld %12ld”,f1,f2); if(i%2==0) printf(“\n”);/*控制输出,每行四个*/ f1=f1+f2;/*前两个月加起来赋值给第三个月*/ f2=f1+f2;/*前两个月加起来赋值给第三个月*/ } } 上题还可用一维数组处理,you try! 题目:判断101-200之间有多少个素数,并输出所有素数。 __________________________________________________________________ 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 ___________________________________________________________________ 程序源代码: #include “math.h” main() { int m,i,k,h=0,leap=1;

C语言经典面试题目集锦

1.前言 2.声明和初始化 2.1我如何决定使用那种整数类型? 2.264位机上的64位类型是什么样的? 2.3怎样定义和声明全局变量和函数最好? 2.4extern在函数声明中是什么意思? 2.5关键字auto到底有什么用途? 2.6我似乎不能成功定义一个链表。我试过typedef struct{char*item;NODEPTR next;}*NODEPTR;但是编译器报了错误信息。难道在C语言中一个结构不能包含指向自己的指针吗? 2.7怎样建立和理解非常复杂的声明?例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 2.8函数只定义了一次,调用了一次,但编译器提示非法重定义了。 2.9main()的正确定义是什么?void main()正确吗? 2.10对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为``零",它可否作为空指针或浮点零? 2.11代码int f(){char a[]="Hello,world!";}不能编译。 2.12这样的初始化有什么问题?char*p=malloc(10);编译器提示``非法初始式"云云。 2.13以下的初始化有什么区别?char a[]="string literal";char*p="string literal";当我向p[i]赋值的时候,我的程序崩溃了。 2.14我总算弄清除函数指针的声明方法了,但怎样才能初始化呢? 3.结构、联合和枚举 3.1声明struct x1{...};和typedef struct{...}x2;有什么不同? 3.2为什么struct x{...};x thestruct;不对? 3.3一个结构可以包含指向自己的指针吗? 3.4在C语言中实现抽象数据类型什么方法最好? 3.5在C中是否有模拟继承等面向对象程序设计特性的好方法? 3.6我遇到这样声明结构的代码:struct name{int namelen;char namestr[1];};然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素。这样合法和可移植吗? 3.7是否有自动比较结构的方法? 3.8如何向接受结构参数的函数传入常数值? 3.9怎样从/向数据文件读/写结构? 3.10我的编译器在结构中留下了空洞,这导致空间浪费而且无法与外部数据文件进行"二进制"读写。能否关掉填充,或者控制结构域的对齐方式? 3.11为什么sizeof返回的值大于结构的期望值,是不是尾部有填充? 3.12如何确定域在结构中的字节偏移? 3.13怎样在运行时用名字访问结构中的域? 3.14程序运行正确,但退出时却``core dump''了,怎么回事? 3.15可以初始化一个联合吗?

C语言经典算法题目及答案

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) printf("%d,%d,%d\n",i,j,k); } } ============================================================== 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03;

C语言经典题目

C语言经典问题50题 1.歌星大奖赛选手最后得分统计 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现选手最后得分。 2.求最大数 求一个正整数(如666666)的约数中最大的三位数是多少? 3.高次方数的尾数 如求13的13次方的最后三位数。 4.借书方案知多少 小张有五本新书,要借给A,B,C三位朋友,若每人每次只能借一本,则可以有多少种不同的借法? 5.在屏幕上显示杨辉三角形(六行杨辉三角形如下) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 6.该存入银行多少钱 假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中的每年年底取出1000元,到第五年时刚好取完,请算出他现在应存入银行多少钱。 7.怎样存钱利息最多 假设银行整存整取存款不同期限的月息利率分别为: 0.63% 期限=1年 0.66% 期限=2年 0.69% 期限=3年 0.75% 期限=5年 0.84% 期限=8年 利息=本金*月息利率*12*存款年限。 现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。 8.请问他们合伙至少捕了多少条鱼? A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。请问他们合伙至少捕了多少条鱼?

c语言试题及答案

c语言试题及答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1、以下正确的说法是(B) (A)用户若需要调用标准库函数,调用前必须重新定义 (B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C)系统根本不允许用户重新定义标准库函数 (D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是(A) (A)doublefun(intx,inty) (B)doublefun(intx;inty) (C)doublefun(intx,inty); (D)doublefun(intx,y); 3、以下正确的函数形式是(D) (A)doublefun(intx,inty){z=x+y;returnz;} (B)fun(intx,y){intz;returnz;} (C)fun(x,y){intx,y;doublez;z=x+y;returnz;} (D)doublefun(intx,inty){doublez;z=x+y;returnz;} 4、以下正确的说法是(A ) 在C语言中 (A)实参和与其对应的形参各占用独立的存储单元 (B)实参和与其对应的形参共占用一个存储单元

(C)只有当实参和与其对应的形参同名时才共占用存储单元 (D)形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是(A) 该函数 (A)没有返回值 (B)返回若干个系统默认值 (C)能返回一个用户所希望的函数值 (D)返回一个不确定的值 6、以下不正确的说法是(B) C语言规定 (A)实参可以是常量、变量和表达式 (B)形参可以是常量、变量和表达式 (C)实参可以为任意类型 (D)形参应与其对应的实参类型一致 7、以下正确的说法是(C) (A)定义函数时,形参的类型说明可以放在函数体内 (B)return后边的值不能为表达式 (C)如果函数值的类型与返回值类型不一致,以函数值类型为准 (D)如果形参与实参的类型不一致,以实参类型为准

C语言经典题目

1003 我们知道,高中会考是按等级来的。90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E。 编写一个程序,对输入的一个百分制的成绩t,将其转换成对应的等级。 Input 输入数据有多组,每组占一行,由一个整数组成. Output 对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。 Sample Input 56 67 100 123 Sample Output E D A Score is error! 1005 已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个, 这叫做数组的距离。 Input 第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。 第二行有m个元素,为数组f[]。 第三行有n个元素,为数组g[]。Output 数组的最短距离 Sample Input 5 5 1 2 3 4 5 6 7 8 9 10 Sample Output 1 1038 居然有假币!!! 事情是这样的,现在猪肉涨了,但是 农民的工资却不见涨啊,没钱怎么买 猪肉啊。渊子这就去买猪肉,结果找 来的零钱中有假币!!!可惜渊子一 不小心把它混进了一堆真币里面去了。现在知道假币的重量比真币的质量要轻。给你一个天平,请用最快的时间 把那个可恶的假币找出来。 Input

1≤n≤230,输入0结束程序。 Output 最少要称几次一定能把那个假币找出来。 Sample Input 3 12 Sample Output 1 3 Hint 示例1中共有3枚硬币,所以任意取2个放天平上称量一下。 因为假币的重量比较轻。 1 如果天平不平衡,则较轻的那枚就 是假币。 2 如果天平平衡,则说明这两枚硬币 都是真的,而剩下那枚是假币 1044 一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天 以后,他将会得到多少只兔子。 Input 测试数据包括多组,每组一行,为整数n(1≤n≤90)。 输入以0结束。 Output 对应输出第n天有几只兔子(假设没有兔子死亡现象)。 Sample Input 1 2 Sample Output 1 2 Hint 数据类型可以用64位整数:__int64 详细信息请参 见:https://www.doczj.com/doc/068993593.html,/Help/Code.ht ml 1045 Description 给出一串字符,要求统计出里面的字母、数字、空格以及其他字符的个数。字母:A, B, ..., Z、a, b, ..., z组成 数字:0, 1, ..., 9 空格:" "(不包括引号) 剩下的可打印字符全为其他字符。 Input

最新版c语言经典习题100例(最全面)

C语言习题100例(最新整理版) 习题目录:(按住Ctrl点击可以快速跳转到对应页面) 【程序1】 (5) 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? (5) 【程序2】 (6) 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成 1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? (6) 【程序3】 (7) 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? (7) 【程序4】 (7) 题目:输入某年某月某日,判断这一天是这一年的第几天? (7) 【程序5】 (8) 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 (8) 【程序6】 (9) 题目:用*号输出字母C的图案。 (9) 【程序7】 (9) 题目:输出特殊图案,请在c环境中运行,看一看,VeryBeautiful! (9) 【程序8】 (9) 题目:输出9*9口诀。 (9) 【程序9】 (10) 题目:要求输出国际象棋棋盘。 (10) 【程序10】 (10) 题目:打印楼梯,同时在楼梯上方打印两个笑脸。 (10) 【程序11】 (11) 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? (11) 【程序12】 (11) 题目:判断101-200之间有多少个素数,并输出所有素数。 (11) 【程序13】 (12) 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 (12) 【程序14】 (12) 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 (12) 【程序15】 (13) 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 (13) 【程序16】 (13) 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 (13) 【程序17】 (14) 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 (14) 【程序18】 (14)

C语言的十个经典题目

C语言的十个经典题目 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { inti,j,k; printf("\n"); for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000)

C语言经典例题100道

经典C源程序100例 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } ============================================================== 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03;

c语言精彩试题100道

1.按下述格式,从键盘输入一个整数加法表达式:操作数1+操作数2,然后计算并输 出表达式的计算结果,形式如下:操作数1+操作数2=计算结果。(课本62) 2.输入两个整形数并打印,如果用户不慎输入了非法字符,那么程序提示“输入数据 类型错误”。(课本68页) 3.已知三角形的三边长a,b,c,要求编写程序,从键盘输入a,b,c的值,计算并 输出三角形的面积(注意不存在的情况)。(第三章习题) 4.编程从键盘输入圆的半径r,计算并输出圆的周长和面积。(第三章习题) 5.任意从键盘输入一个三位整数,要求正确分离它的个位,十位和百位数,并分别在 屏幕上输出。(课本82) 6.写一个函数实现统计一个输入的整形数的位数。 7.编程计算方程ax*x+bx+c=0的根,a,b,c由键盘输入,只是用主函数来实现。(课 本83页,但需综合考虑) 8.编写三个函数,分别在b*b-4*a*c大于0、小于0、等于0时进行调用,并输出结果, 在主函数中读入a、b、c的值。 9.从键盘输入你和你朋友的年龄,编程判断谁的年龄大,并打印最大者的年龄。(课 本86页) 10.从键盘输入一个年份,判断该年是否是闰年,并输出结果。 11.判断某人是否属于肥胖体型。根据身高与体重因素,医务工作者经广泛的调查分析 给出了以下按“体指数”对肥胖程度的划分:体指数t=w/h*h(w为体重,单位为kg,h为身高,单位为m)。当t<18时,为低体重;当t介于18和25之间时,为正常体重;当t介于25和27之间时,为超重体重;当t≧27时,为肥胖。编程从键盘输入你的身高h和体重w,根据上式,判断体重类型。(课本89) 12.利用switch语句将百分制成绩转化为五分制成绩。(课本97) 13.利用switch语句将五分制成绩转换成对应分数围并输出。 14.编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运 算符op 操作数2 计算表达式的值,指定的运算符为加减乘除。(课本98) 15.利用时间函数编写一个猜数程序。(课本106) 16.编程实现计算n的阶乘。(课本107) 17.利用函数递归实现计算n!。 18.利用π/4=1-1/3+1/5-1/7……计算π的值直到最后一项的绝对值小于0.0001为止, 要求统计总共累加了多少项。(课本112) 19.编程输出正三角格式的九九乘法表。(课本118) 20.编程输出下三角格式的九九乘法表。 21.从键盘任意输入一个正整数,编程判断它是否是素数,若是素数,输出“YES”, 否则输出“NO!”。(课本127) 22.编写一个程序实现输出1—100之间所有素数。 23.编写一个程序实现输出任意指定m、n之间的所有素数。 24.读入一个年份和月份,打印出该月有多少天(考虑闰年),用switch语句编程。(课 本159)(主要是设定一个标志,考虑闰年) 25.打印所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该 数本身。(例159=1*1*1+3*3*3+5*5*5)(课本159) 26.鸡兔同笼,共有98个头,386只脚,编程求鸡兔各多少只。(课本160) 27.用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问 共有几种兑换方案?并输出每种方案。(课本160)

c语言经典试题

目录: A类: 1.用冒泡方法对十个数据排序(数组实现) 2、编写一个简单计算器程序,要求能够完成两个数的+,-,*,/四种运算。输出运算式及运算结果。(switch) 3、输出2000——2500年每一年是否闰年 4、斐波那契数列 5、打印出100~999之间的所有水仙花数 6、输入一个数n,输入n行的m,n两个数,并输出每行的最大公约数最大公约数 7.求1!+2!+3!+……+20!,将结果输出。 8.给出年、月、日,计算该日是该年的第几天。 9.编写一个程序,将两个字符串连接起来,不要使用strcat函数。 10.将一个4*3的矩阵转置,并将原矩阵和求出的转置矩阵按原矩阵的形式分别输出。 11.编函数isprime判断正整m是否为素数;如果是素数,返回正整数1,否则返回0;主函数中调用isprime,找出2到1000之间的所有素数。 12.有一行文字,要求删去其中的某个字符,此行文字和要删的字符均由键盘输入,分别输出原文字和删除之后的文字(注:原文字中的所有和要删除字符相同的字符完全删除)。 13.打印如图所示的杨辉三角,要求打印出n行,n由键盘输入。 14.求∏值,精度为10-5:∏/4≈1-1/3+1/5-1/7+…… 15.编写一个函数求给定字符串长度,主函数中输入一个字符串,调用该子函数,求出该字符串的长度,输出。 16.编写一个函数将给定字符串复制到另一个字符串中去,主函数中输入一个字符串,调用该子函数,复制出另一字符串,将两个串输出。 17.编写一个函数将给定字符串中的大写字母转换成小写字母,主函数中输入一个字符串,调用该子函数,进行转换,将原字符串及转换后的字符串输出。 18.写一个判断素数的函数,在主函数中调用素数的判断函数,求出2到1000之间的素数的累加和,将结果输出,请编程。 19.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。 20.输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一: 21.建立学生信息系统 B类 1、求1+2+3+……….+100。(循环) 2、求1*2*3*……….*10。(循环) 3、输入两个数,输出其中最大数 4、输入十个数字,逆序输出。(数组实现) 5、输入两个数,交换他们的值并输出。(元素交换) 6、输出9*9乘法表。(双层循环) 7、输入一行字符,将所有的小写字母转换成大写字母,大写字母转换成小写字母,其余字符不变。输出转变后的这行字符。 8、输入学生成绩,输出学生成绩和判断的学生成绩等级ABCDE(switch) 9、求闰年(if) 10、输入两个正整数,m和n,求其最大公约数和最小公倍数。 11.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。

c语言经典笔试题(非常全)

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) <= (B) (A) : (B)) 4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 第三个方案是用goto Loop: ... goto Loop; 5. 用变量a给出下面的定义 a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer ) 答案是: a) int a; // An integer b) int *a; // A pointer to an integer c) int **a; // A pointer to a pointer to an integer d) int a[10]; // An array of 10 integers e) int *a[10]; // An array of 10 pointers to integers f) int (*a)[10]; // A pointer to an array of 10 integers g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer 6. 关键字static的作用是什么?

相关主题
相关文档 最新文档