作者导语:
欢迎各位阅读本文。本文阅读难度设置为:中-->低-->高。阅读过程如有疑问欢迎咨询。
QQ:835588741
1.下面这个是最近写的一个可以把十进制转换成1-16进制的一个进制转换器代码。
#define N 100
void main(void)
{
int c=0,i,j,k,a[N];
long num;
char A,B,C,D,E,F;
printf("please input the number of you want to conversion\n"); /*输入要转换的十进制数*/
scanf("%ld",&num);
printf("\nplease input the number of scale\n"); /*输入要转换成几进制的数1-16*/
scanf("%d",&k);
for(j=0;j<N;j++)
{
a[j]=num%k; /*取余数赋值给数组a的成员*/
num=num/k; /*对数值num求商数,使其在下次循环时有一个新的值*/
if(num<k) /*当所要num的值小于要转换的进制数时跳出循环*/
continue;
c++; /*利用一个变量来计数,使下面输出数组进程可以有一个明确输出位数范围*/
}
for(i=c+1;i>=0;i--) /*倒输数组a,原理是数学的“除n取倒余法”*/
{
if(a[i]==10) /*十六进制中以字母ABCDEF代替9以上数字,所以在满足条件时输出字母代替10、11、12等数字*/
{printf("%c",65);}
else if(a[i]==11)
{printf("%c",66);}
else if(a[i]==12)
{printf("%c",67);}
else if(a[i]==13)
{printf("%c",68);}
else if(a[i]==14)
{printf("%c",69);}
else if(a[i]==15)
{printf("%c",70);}
else
printf("%d",a[i]); /*若没有大于9的数字,则按整形数据输出*/
}
getch();
}
2.此程序可以求出输入的一个五位以内的数是几位数,并且给出每一位的数字分别是多少。
void main()
{
long int num;
int x1,x2,x3,x4,x5;
scanf("%ld",&num);
x5=num/10000%10; /*分解出输入数的万位,以下的分别是千百十个位*/
x4=num/1000%10;
x3=num/100%10;
x2=num/10%10;
x1=num%10;
if(x5!=0)
{
printf("It is a fine numbers' number!\n");
printf("%d,%d,%d,%d,%d",x5,x4,x3,x2,x1); /*输出是几位数,并每一位的数字*/
}
else if(x4!=0)
{
printf("It is a four numbers' number!\n");
printf("%d,%d,%d,%d",x4,x3,x2,x1);
}
else if(x3!=0)
{
printf("It is a three numbers' number!\n");
printf("%d,%d,%d",x3,x2,x1);
}
else if(x2!=0)
{
printf("It is a two numbers' number!\n");
printf("%d,%d",x2,x1);
}
else if(x1!=0)
{
printf("It is a one numbers' number!\n");
printf("%d",x1);
}
getch();
}
3.对输入字符串,分别求出其中有多少数字、字母、空格、符号等。
#include"stdio.h"
void main()
{
int qita=0,english=0,space=0,number=0,i,j;
for(;(i=getchar())!='\n';i++) /*for循环语句*/
{
if(('a'<=i&&i<='z')||('A'<=i&&i<='Z')) /*判断是否大小写的字母*/
english++;
else if('0'<=i&&i<='9') /*判断是否数字*/
number++;
else if(i==' ') /*判断是否空格*/
space++;
else
qita++; /*若既非字母也非数字或空格,则其他(qita)的数量自增1*/
}
printf("english=%d,space=%d,number=%d,qita=%d"
,english,space,number,qita);
getch();
}
4.输入一自然数n,求组成n3的n个连续奇数。
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,n,sum,count;
clrscr();
printf("\n an integer here please:");
scanf("%d",&n);
printf("\n");
i=(int)floor(sqrt((float)n));
if(i%2==0)
i++;
i=1;
for(;i<=n*n*n;i+=2)
{
sum=0;
count=0;
for(j=i;j<=n*n*n;j+=2)
{
sum=sum+j;
count++;
if((n*n*n==sum)&&(count==n))
break;
}
if((sum==n*n*n)&&(count==n))
break;
}
printf("i=%d,j=%d\n\n",i,j);
printf("%d*%d*%d=",n,n,n);
while(n-->1) { printf("%d+",i); i+=2; }
for(;i<j;i+=2)
printf("%d+",i);
printf("%d",i);
getch();
}
5.switch分支结构的四则运算计算器代码:
void main()
{
float num1,num2;
char ch;
printf("please input number of you want to do:\n\n\n\n\n");
scanf("%f%c%f",&num1,&ch,&num2);
switch(ch) /****利用switch语句简洁明了地把加减乘除四个运算包含其中****/
{
case '+':printf("%0.2f%c%0.2f=%0.2f",num1,ch,num2,num1+num2);break;
case '-':printf("%0.2f%c%0.2f=%0.2f",num1,ch,num2,num1-num2);break;
case '*':printf("%0.2f%c%0.2f=%0.2f",num1,ch,num2,num1*num2);break;
case '/':printf("%0.2f%c%0.2f=%0.2f",num1,ch,num2,num1/num2);break;
case '%':printf("%0.2f%c%0.2f=%0.2f",num1,ch,num2,num1%num2);break; /**新增加的求余数的运算**/16进制转换器计算器
default:printf("error!!!please input ones again!");
}
getch();
}
6.函数调用和if语句主导的四则运算计算器代码。
这是个四则运算计算器代码
float sum(float x1,float x2) /*加的算法函数*/
{float k;
k=x1+x2;
return k;
}
float ji(float x3,float x4) /*乘的算法函数*/
{
float y;
y=x3*x4;
return y;
}
float shang(float x5,float x6) /*除的算法函数*/
{
float x;
x=x5/x6;
return x;
}
float cha(float x7,float x8) /*差的算法函数*/
{
float f;
f=x7-x8;
return f;
}
void main()
{float a,b,jieguo;
char ch;
printf("\nPlease input two numbers,and input one fo'+,-,*,/'between the two numbers\n");
scanf("%f%c%f",&a,&ch,&b);
if(ch=='+') /*****输入的字符若为‘+’则执行加法运算函数****/
jieguo=sum(a,b);
else if(ch=='-')
jieguo=cha(a,b);
else if(ch=='*')
jieguo=ji(a,b);
else if(ch=='/')
jieguo=shang(a,b);
printf("result=%f",jieguo);
getch();
}
7.这个是奖金计算系统,输入利润,然后给出该利润所获得的奖金:
void main()
{long int li;
float ji;
printf("please input the number of bonus:\n");
scanf("%ld",&li); /****输入您每月所获得的工资****/
if(li<=100000)
ji=li*0.1; /****如果所得工资少于10万元,则奖金为工资的10%****/
else if(100000<li<=200000)
ji=(li-100000)*0.075+100000*0.1;
else if(200000<li<=400000)
ji=100000*0.1+100000*0.075+(li-200000)*0.05;
else if(400000<li<=600000)
ji=100000*0
.
1+100000*0.075+200000*0.05+(li-400000)*0.03;
else if(600000<li<=1000000)
ji=100000*0.1+100000*0.075+200000*0.05+400000*0.03+(li-600000)*0.015;
else if(li>1000000)
ji=100000*0.1+100000*0.075+200000*0.05+400000*0.03+(li-600000)*0.015+(li-1000000)*0.001;
printf("%f",ji);
getch();
}
8.这个是统计投票的系统,可在源代码中自定义竞选的人。
#include<string.h>
struct person
{
char name[20];
int count;
}leader[3]={{"zhou",0},{"wu",0},{"zheng",0}}; /**这个结构体定义了参加选举的人员的信息,名字和票数总计***/
void main()
{
char leader_name[20];
int i,j;
printf("please input the name of leader:(zhou,wu,zheng)\n\n");
for(i=1;i<=10;i++)
{
scanf("%s",&leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0) /**strcmp是个比较两个字符串的函数,两个字符串若果相同,返回值为0**/
leader[j].count++;
}
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
getch();
}
9.求解一元二次方程ax2+bx+c=0,有实根则输出实根,无则输出无实根.
#include<math.h>
void main()
{
float x1,x2;
int result,a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
result=pow(b,2)-4*a*c; /*根据数学中判定二元一次方程是否有解及解地个数的公式:x=b*b-4*a*c。 */
if(result>=0)
{
x1=(-b-sqrt(pow(b,2)-4*a*c))/(2*a); /*数学中的求解公式*/
x2=(-b+sqrt(pow(b,2)-4*a*c))/(2*a);
printf("x1=%f,x2=%f",x1,x2);
}
else
printf("Null!!!");
getch();
}
10.求11--999之间的所有回文数,并将其以WeiWen为名字,后缀为txt格式,保存到C盘。
#include<stdio.h>
void main()
{
int n,m1,m2,m3,re,i,a[100];
FILE*fp;
fp=fopen("c:\\","w+");
for(n=11;n<=999;n++)
{
re=n/100;
if(re==0)
{
m1=n%10;
m2=n/10%10;
if(m1==m2)
printf("%d\t",n);
fputc(n,fp);
}
else if(re>0)
{
m1=n%10;
m2=n/10%10;
m3=n/100%10;
if(m1==m3)
printf("%d\t",n);
fputc(n,fp);
}
else
printf("input error!");
}
fclose(fp);
getch();
}
阅读提示:
以下11--22题为初等容易题目,有较强能力者可跳至23题开始阅读。
11.本程序是出租车计费系统,输入行驶里程,该程序输出费用.
void main(void)
{
float cost,distance;
scanf("%f",&distance);
printf("result:");
if(distance==3||distance<3)
cost=4;
else if(distance>3||distance<20)
cost=4+(distance-3)*1.4;
else if(distance>20||distance==20)
cost=4+17*1.4+(distance-20)*1.0;
printf("%f",cost);
getch();
}
12.输入一对坐标值,判断它代表的点属于哪个象限?
void main()
{int x,y;
scanf("%d,%d",&x,&y); /*象限判别原理:x轴和y轴的正负值,同正则为第一象限,同负则为第三象限,如还有不懂者可先画出四个象限的分布图*/
if(x>0&&y>0)
printf("It is first");
else if(x<0&&y<0)
printf("It is third");
else if(x>0&&y<0)
printf("It is fourth");
else if(x<0&&y>0)
printf("It is second")
;
getch();
}
13.一张百元人民币兑换成50,20,10,5,2,1元的零票,其中以上各种都必须至少有一张。求总共有多少中兑换方法,并输出兑换明细。
void main()
{
int a,b,c,d;
for(a=1;a<=2;a++)
for(b=1;b<=3;b++)
for(c=1;c<=7;c++)
for(d=1;d<=13;d++)
{
if(50+20+10*a+5*b+2*c+1*d==100) /**一张百元RMB,要兑换以上零票至少各一张,则不可能出现两张50和20,故而只设四个变量**/
printf("result are these:50+20+%d+%d+%d+%d=100\n\n",a*10,b*5,c*2,d*1);
}
getch();
}
14.设A,B,C为三个非零正整数,计算并输出下列不定方程组的解地个数以及满足所有此条件的A,B,C。A+B+c=13,A-C=5.
void main()
{
int a,b,c; /**课本中为大写字母A,B,C,但出于变量和常量的书写习惯,此程序以小写代替**/
for(a=1;a<=11;a++)
for(b=1;b<=11;b++)
for(c=1;c<=11;c++)
{if(a+b+c==13&&a-c=5)
printf("%d,%d,%d",a,b,c);
getch();
}
15.求圆周率PI,PI/4=1-1/3+1/5-1/7+....直到某项的绝对值小于1e-5.
void main()
{
double pi=0,PI;
int i=1,a=1,b=1,c,d;
for(d=1;fabs(a)<1.0e-5;d++) /**执行for循环,直到不满足循环条件"a的绝对值<1e-5"时终止程序**/
{
if(d%2==0) /**此处if语句的作用为,时每隔偶数的加数a=i/b中i的值为负数**/
i=-1;
b+=2;
a=i/b;
pi=pi+a;
PI=pi/4;
}
printf("%d",PI);
getch();
}
16.求s=a+aa+aaa+......的前n项和,其中a为0-9间的数字,n由键盘输入,为1-9间的数字。
#include<math.h>
#define a 2
void main()
{
int n,s,q=11;
printf("s=a+aa+aaa+...+a*pow(q,(n-1))\n");
printf("please input the number of n(1-9):");
scanf("%d",&n);
s=(a*(1-pow(q,n)))/(1-q); /******本程序的核心公式,亦即等比数列的前n项和公式*****/
printf("result is:%d",s);
getch();
}
17.这个是判断是否为闰年的程序代码,任意输入一个数字(当然,不能超过int的定义范围)。
void main()
{
int year;
system("cls");
printf("plaese input the year:\n");
scanf("%d",&year);
if(year%4==0&&year%100==0&&year%400==0) /**这是这个函数的核心所在,用于判断是否为闰年**/
printf("%d,is a leap year",year);
else printf("Is not leap year!");
getch();
}
18.下面让学者接触一下数组的应用。求用数组输出斐波拉契数列。所谓斐波拉契数列即:1,2,3,5,13,21,N。即第三项等于前两项之和。
#define N 20
void main(void)
{
long int i,a[N]={1,2};
clrscr();
printf("%ld\t%ld\t",a[0],a[1]);
for(i=2;i<N;i++) /*第一、二两项已经给出,所以i的初值从2开始*/
a[i]=a[i-1]+a[i-2]; /*即为第三项等于前两项之和的程序语言的表述*/
for(i=2;i<N;i++)
printf("%ld\t",a[i]);
getch();
}
大家不妨再想一下假如题目改为输出前N项,并求出前N项之和呢?没错,相信很多读者应该已经想到了。
#define N 20
void main(void)
{
long int i,
a[N]={1,2},sum=0;
clrscr();
printf("%ld\t%ld\t",a[0],a[1]);
for(i=2;i<N;i++)
a[i]=a[i-1]+a[i-2];
for(i=2;i<N;i++)
printf("%ld\t",a[i]);
printf("\n\tthis is sum:");
for(i=0;i<N;i++) /*很简单,只需在开头多定义一个变量,再假如这个for语句OK了*/
sum=sum+a[i];
printf("%d",sum);
getch();
}
19.大家先想想在升国旗时如果有一个小朋友迟到了,怎么把他插入一个已经排好队的队伍里呢?
(当然是要按身高排列,不能随便胡乱个位置就插队)
#include<conio.h>
#define N 7
void main(void)
{
int x[N]={-6,-5,2,15,27,49},i,k,a;
clrscr();
for(i=0;i<N-1;i++)
printf("%d ",x[i]);
printf("\nplease input the number of you wang to put in:");
scanf("%d",&a);
x[N-1]=a;
for(i=0;i<N;i++)
printf("%d ",x[i]);
getch();
}
20.已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
void main()
{
int a,b,c,nu1,num2;
for(a=1;a<10;a++)
for(b=1;b<10;b++)
for(c=1;c<10;c++)
if(a*100+b*10+c+c*100+b*10+a==1333)
printf("a=%d,b=%d,c=%d\n",a,b,c);
getch();
}
21.一辆卡车违犯交通规则,撞人逃跑。现场三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在让你帮忙根据以上线索,编程,输出肇事车号。
#include<math.h>
#include<stdio.h>
void main()
{
int a,b,c,d;
for(a=0;a<10;a++)
for(b=0;b<10;b++)
for(c=32;c<=99;c++)
if(1100*a+11*b==c*c)
printf("%d",c*c);
getch();
}
22.中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何? 编程,输出所有可能的购买方案。
void main()
{
int x1,x2,x3;
for(x1=0;x1<=20;x1++)
for(x2=0;x2<=33;x2++)
for(x3=0;x3<=300;x3++)
if(x1+x2+x3==100&&x1*5+x2*3+x3/3==100)
printf("chenking=%d\then=%d\tchild=%d\tsum=%d\t\n",x1,x2,x3,x1+x2+x3);
getch();
}
23.相信通过这21个例题的练习大家应该已经对C语言有了比较深的理解,下面将投放几个小型项目类题目。题目:某班有5个学生,三门课。分别编写3个函数实现以下要求:
(1) 求各门课的平均分;
(2) 出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;
(3) 出三门课平均成绩在85-90分的学生,并输出其学号和姓名
#include<string.h>
void main(void)
{
int i,j,elect,num,count,average_score;
struct student /*设定一个学生信息的结构,包含内容三个学科和总分、平均分*/
{
int yuwen;
int yingyu;
int shuxue;
int count;
float average_score;
}stu[5]={{78,45,76,0,0},{65,78,90,0,0},{29,46,63,0,0},{34,98,59,0,0},{80,90,9
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论