C语言程序设计大赛题目
- 格式:doc
- 大小:19.50 KB
- 文档页数:8
水仙花#include <stdio.h>void main(){int a,b,c,i;for( i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;if(a*a*a+b*b*b+c*c*c==i){printf("\n");}}}【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:#include "stdio.h"#include "conio.h"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);}getch();}【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1 0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:#include "stdio.h"#include "conio.h"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;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);getch();}【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
一、选择题(共30分,每小题2分)试题1在下面的函数声明语句中,存在着语法错误的是()。
选择一项:a. AA(int a, int b)b. AA(int, int)“c.AAfint a; int b)d.AA(int a, int)试题2在下面的保留字中,不能作为函数的返回值类型的是()。
选择一项:a. void° b.int'* c.enumd.long试题3假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为()<•选择一项:r a.lr b.2& c.4r d.8试题4假定a为一个数组名,在下面的表达式中,存在语法错误的是()o选择一项:'aa[i]b. *a+ +}return s;}计算出l+x+x2+...+x n的值并返回。
试题37int SG(int x) ( //x为大于等于2的整数int i=2;while(i*i<=x) (if(x%i ==O) break;i++;)if(i*i<=x) return 0; else return 1;}判断x是否为一个质数(素数),若是则返回1,否则返回0。
试题38int WB(int a[]z int n, int x) (for(int i=0;i<n;i + +)if(a[i] ==x) return 1;return 0;)从数组a[n]中顺序查找值为x的元素,若查找成功则返回1,否则返回0。
试题39int fun(int m, int n) (int c=0;static int b=2;if(m<b || n<b) return m*n;else if(m%b==0 && n%b==0) {c=b; return c*fun(m/b,n/b);}else (b++; return fun(m,n);})一个递归函数过程,求出两个自然数m和n的最小公倍数。
经典C语言程序设计100例【程序1】题目:有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;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
C语言课程设计参考题目C语言课程设计参考题目一、基本要求题目1、一司机出车祸后驾车逃离现场,第一位目击者记得车牌号前两位数字相同,且后两位数字也相同;第二位目击者是一位数学家,他看出车牌号是四位完全平方数。
试编程推算肇事车的车牌号。
2、有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。
直到最后只剩下一个人为止。
问此人原来的位置是多少号。
3、编写一个程序,求3X4数组的转置矩阵。
要求在main函数里读数,在change 函数里把矩阵转置。
4、编写函数,求取两个整数m,n的最大公约数和最小公倍数。
5、用指向指针的方法对n个整数排序并输出。
要求将排序单独写成一个函数。
N 个整数在主函数中输入。
最后在主函数中输出。
6、有n个学生,每个学生的数据包括学号、姓名、年龄和两科成绩。
请编程用结构类型的数据处理方式实现如下目标:(1)在main 函数中输入原始数据;(2)在count 函数中输出各学生的总分和平均分;(3)输出总分最高的学生;(4)编写sort函数将各学生的数据按总分降序输出。
7、编写求子串函数substr(s,n1,n2),在串s中从n1位置开始取n2个字符的子串8、文件加密程序:将待加密文件以二进制打开,读入32个字节,分别与口令异或,在将4、5、6三个字分别与0xaaaa异或,即完成加密,执行第二次就解密9、编写字串str1 中找出所有小写字母转成大写字母,大写字母转成小写字母后,结果依次存入字符数组 str2 中,str1 不变仍为原字串的程序。
例如,字符串str1 为 "91A2BC. a1bc",调用函数 fun 后,字符数组str2将存入"91a2bc. A1BC",str1仍然是"91A2BC. a1bc"。
10、编写一个将某个范围在-32768~32767之间的整数转换为R进制(R=2,5,8,16)的通用程序。
计算机等级考试二级C语言程序设计专项训练题——多项式求值在计算机等级考试二级C语言程序设计试题中,多项式求值是一个重要的考点,有关多项式求值的试题在历年考试试卷的程序填空题和程序设计题中经常出现。
一.示例讲解1.求给定多项式的前n项之和。
这类题目中,给定了需要计算的多项式的项数n,并且各项通常可以用数学式表示出来。
因此,程序通常写成如下循环:for (i=1; i<=n; i++){// 按各项的数学式求出当前第i项// 将第i项累加到多项式和值上}例1 编写函数fun,它的功能是:计算序列 1 + 1/2 + 1/3 + ...的前N项之和。
例如,若n=10,函数值为:2.928968。
#include <stdio.h>double fun(int n){}int main(){printf("%f\n", fun(10));return 0;}解析:直接利用for循环完成累加求和。
编写的fun函数如下:double fun(int n){double s=0;int i;for (i=1;i<=n;i++)s=s+1.0/i; // 注意:不要写成1/ireturn s;}例2 编写函数fun,它的功能是:计算简单交错序列1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
例如,若n=10,函数值为:0.818743。
#include <stdio.h>double fun(int n){}int main(){printf("%f\n", fun(10));return 0;}解析:所求序列的第i项为(−1)i−113∗i−2,若直接用C表达式表示为pow(-1,i-1)/(3*i-1),再进行累加,可以求出结果,但不是一个好的解决方法。
对于这种交错序列的多项式求值,可以引入一个变量t用于表示正负号切换,初始时,t=1,每累加一项后,t=-t,这样t的值在1、-1、1、-1、…序列中变换,正好和交错序列加1项,减1项相符合。
复习题库题号题 目 1. 某铁桶厂应客户要求定做一批铁桶,客户给出了铁桶的规格,高30cm ,半径10cm ,共订做1500个铁桶。
计算出所需的原材料。
2.利用系统库函数实现数学运算,求x y 。
3.从键盘上输入一个小写字母,把它转变为大写字母再输出。
4. 设圆半径r=1.5,圆柱高h=3,求圆柱体积,圆柱底面积,圆柱表面积。
用scanf ()输入数据,输出计算结果。
输出时要有说明,结果取小数点后两位数字。
5.由键盘输入n 的值,编程计算并输出n!的值。
6. 让用户输入一个年份,判断改年份是否是闰年– 被4整除不能被100整除,或者被400整除7. 有一个函数⎪⎩⎪⎨⎧--=11312x x x y ())10()101(1≥<≤<x x x写程序,输入x 的值,输出y 相应的值。
8. 在学生成绩管理中,经常要将成绩的百分制转换成对应的等级制。
90分以上为A 等,80-89为B 等,70-79为C 等,60-69分为D 等,其余为E 等。
编写程序,根据输入的百分制成绩,输出对应的等级。
9. 计算从出生年份(例如1996)到当前年份(例如2014)共经过了多少闰年,输出所有的闰年年份。
10. 从1开始做自然数的累加,当其累加和超过1000的时候,共计累加了多少数?当时的累加和是多少?11.百钱买百鸡问题 12. 计算出自然数SIX 和NINE 满足条件SIX+SIX+SIX=NINE+NINE 的个数CNT,以及所有满足此条件的SIX 与NINE 。
13.求 3—100之间的全部素数14. 图形编程图形编程15. 某歌手大赛,共有10个评委打分,分数采用百分制,去掉一个最高分,去掉一个最低分,然后取平均分,得到歌手的成绩,编程实现。
16.让用户输入10个整数,对10个整数进行降序排列 17.对用户输入的10个整数逆序排列并输出 18. 输出Fibonacci 序列前20项** * ** * * * ** * * * * * ** * * * * * * * ** * * * * * * * * * *19.在一个字符数组中查找一个指定的字符,若数组中含有该字符,则输出该字符在数组中第一次出现的位置,否则输出-1.20.写一个函数,求sn=a+aa+aaa+aaaa+aaaaa.....的值,a的值n的值均由用户指定。
经典C语言程序设计100例1-10【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
【程序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,求应发放奖金总【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
【程序6】题目:用*号输出字母C的图案。
【程序7】题目:输出特殊图案,请在c环境中运行,看一看,V ery Beautiful!【程序8】题目:输出9*9口诀。
【程序9】题目:要求输出国际象棋棋盘。
【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
经典C语言程序设计100例11-20【程序11】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?【程序12】题目:判断101-200之间有多少个素数,并输出所有素数。
【程序13】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
【程序14】题目:将一个正整数分解质因数。
题号:16功能:编写函数fun求1!+2!+3!+ ……+n!的和,在main函数中由键盘输入n值,并输出运算结果。
请编写fun函数。
例如:若n值为5,则结果为153。
#include<stdio.h>float fun(int n){/**********Program**********//********** End **********/}main(){int i,n;long int result;scanf("%d",&n);result=fun(n);printf("%ld\n",result);yzj();}yzj(){FILE *IN,*OUT;int i;int iIN;long int iOUT;IN=fopen("in.dat","r");if(IN==NULL){printf("Please V erify The Currernt Dir..It May Be Changed"); }OUT=fopen("out.dat","w");if(OUT==NULL){printf("Please V erify The Current Dir.. It May Be Changed");}for(i=0;i<10;i++){fscanf(IN,"%d",&iIN);iOUT=fun(iIN);fprintf(OUT,"%ld\n",iOUT);}fclose(IN);fclose(OUT);}答案:----------------------int i;float f=1,s=0;for(i=1;i<=n;i++){f=f*i;s=s+f;}return s;----------------------显示序号:156题号:22功能:从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main函数中输出。
……………………………………………………………最新资料推
荐…………………………………………………
1.角谷猜想
日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无
能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为
偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面
的法则继续演算,若干次后得到的结果必然为1。请编程验证。
*问题分析与算法设计
本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。
题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙
述直接进行证。
*程序说明与注释
#include
int main()
{
int n,count=0;
printf("Please enter number:");
scanf("%d",&n); /*输入任一整数*/
do{
if(n%2)
{
n=n*3+1; /*若为奇数,n乘3加1*/
printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);
}
……………………………………………………………最新资料推
荐…………………………………………………
else
{
n/=2; /*若为偶数n除以2*/
printf("[%d]: %d/2=%d\n",++count,2*n,n);
}
}while(n!=1); /*n不等于1则继续以上过程*/
}
2.四方定理
数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平
方和就可以表示。
请编程证此定理。
*问题分析与算法设计
本题是一个定理,我们不去证明它而是编程序验证。
对四个变量采用试探的方法进行计算,满足要求时输出计算结果。
#include
#include
int main()
{
int number,i,j,k,l;
printf("Please enter a number=");
scanf("%d",&number); /*输入整数*/
……………………………………………………………最新资料推
荐…………………………………………………
for(i=1;i
for(j=0;j<=i;j++)
for(k=0;k<=j;k++)
for(l=0;l<=k;l++)
if(number==i*i+j*j+k*k+l*l) /*若满足定理要求则输出结果*/
{
printf(" %d=%d*%d+%d*%d+%d*%d+%d*%d\n",num
ber,i,i,j,j,k,k,l,l);
exit(0);
}
}
3.验证尼科彻斯定理,即:任何一个整数的立方都可以写成一串连续
奇数的和
#include
int main()
{
int a,b,c,d;
printf("Please enter a number:");
scanf("%d",&a); /*输入整数*/
b=a*a*a; /*求整数的三次方*/
……………………………………………………………最新资料推
荐…………………………………………………
printf("%d*%d*%d=%d=",a,a,a,b);
for(d=0,c=0;c2*/
{
d+=a*a-a+1+c*2; /*求数列的前a项的和*/
printf(c?"+%d":"%d",a*a-a+1+c*2);
}
if(d==b)printf(" Y\n"); /*若条件满足则输出“Y”*/
else printf(" N\n"); /*否则输出“N”*/
}
4.自动发牌
一副扑克有52张牌,打桥牌时应将牌分给四个人。请设计一个程序
完成自动发牌的工作。要求:黑桃用S(Spaces)表示;红桃用
H(Hearts)表示;方块用D(Diamonds)表示;梅花用C(Clubs)表
示
问题分析与算法设计
按照打桥牌的规定,每人应当有13张牌。在人工发牌时,先进行洗
牌,然后将洗好的牌按一定的顺序发给每一个人。为了便于计算机模
拟,可将人工方式的发牌过程加以修改:先确定好发牌顺序:1、2、
3、4;将52张牌顺序编号:黑桃2对应数字0,红桃2对应数字1,
……………………………………………………………最新资料推
荐…………………………………………………
方块2对应数字2,梅花2对应数字3,黑桃3对应数字4,红桃3
对应数字5,…然后从52 张牌中随机的为每个人抽牌。
这里采用C语言库函数的随机函数,生成0到51之间的共52个随
机数,以产生洗牌后发牌的效果。
#include
#include
int comp(const void *j,const void *i);
void p(int b[],char n[]);
int main(void)
{
static char n[]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
int a[53],b1[13],b2[13],b3[13],b4[13];
int b11=0,b22=0,b33=0,b44=0,t=1,m,flag,i;
while(t<=52) /*控制发52张牌*/
{
m=rand()%52; /*产生0到51之间的随机数*/
for(flag=1,i=1;i<=t&&flag;i++)/*查找新产生的随机数是否已
经存在*/
if(m==a[i]) flag=0; /*flag=1:产生的是新的随机数flag=0:新
产生的随机数已经存在*/
……………………………………………………………最新资料推
荐…………………………………………………
if(flag)
{
a[t++]=m; /*如果产生了新的随机数,则存入数组*/
if(t%4==0) b1[b11++]=a[t-1]; /*根据t的模值,判断当前*/
else if(t%4==1) b2[b22++]=a[t-1]; /*的牌应存入哪个数组
中*/
else if(t%4==2) b3[b33++]=a[t-1];
else if(t%4==3) b4[b44++]=a[t-1];
}
}
qsort(b1,13,sizeof(int),comp); /*将每个人的牌进行排序*/
qsort(b2,13,sizeof(int),comp);
qsort(b3,13,sizeof(int),comp);
qsort(b4,13,sizeof(int),comp);
p(b1,n); p(b2,n); p(b3,n); p(b4,n); /*分别打印每个人的牌*/
return 0;
}
void p(int b[],char n[])
{
……………………………………………………………最新资料推
荐…………………………………………………
int i;
printf("\n\006 "); /*打印黑桃标记*/
for(i=0;i<13;i++) /*将数组中的值转换为相应的花色*/
if(b[i]/13==0) printf("%c ",n[b[i]%13]); /*该花色对应的牌
*/
printf("\n\003 "); /*打印红桃标记*/
for(i=0;i<13;i++)
if((b[i]/13)==1) printf("%c ",n[b[i]%13]);
printf("\n\004 "); /*打印方块标记*/
for(i=0;i<13;i++)
if(b[i]/13==2) printf("%c ",n[b[i]%13]);
printf("\n\005 "); /*打印梅花标记*/
for(i=0;i<13;i++)
if(b[i]/13==3||b[i]/13==4) printf("%c ",n[b[i]%13]);
printf("\n");
}
int comp(const void *j,const void *i) /*qsort调用的排序函数
*/
{
return(*(int*)i-*(int*)j);
……………………………………………………………最新资料推
荐…………………………………………………
}