学习C语言几个月以来写的一些小程序
Hello World
#include <stdio.h>
void main()
{
printf("\n\n\n\n Hello World\n");
}
大写字母变小写
#include<stdio.h>
void main()
{
char A;
printf("请输入一个大写字母:");
scanf("%c",&A);
A=A+32;
printf("其对应的小写字母为:");
printf("%c\n",A);
}
折半查找
#include<stdio.h>
int a[10];
int n;
void paixu(void) //排序函数
{
int i,j,k;
printf("排序前: ");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n"); //输出排序前排列
printf("排序后: ");
for (i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
k=a[i];a[i]=a[j];a[j]=k; //排序
}
}
printf("%d\t",a[i]); //输出排序后排列
}
printf("\n");
}
int search()
{
int low=0,high=9,mid;
while(low<=high)
{
mid=(low+high)/2;
if(n>a[mid])
low=mid+1;
if(n<a[mid])
high=mid-1;
if(n==a[mid])
return(mid+1);
}
return -1;
}
void main()
{
int x,i;
printf("请输入十个整数:");
for(i=0;i<10;i++)scanf("%d",&a[i]);
paixu();
printf("请输您要查找的数:");
scanf("%d",&n);
x=search();
if(x==-1)
printf("NO FOUND");
else printf("该数为第%d个数",x);
printf("\n");
}
三角形,知三边求面积
#include <stdio.h>
#include <math.h>
void main()
{
double a, b, c,l, x,s;
printf("请输入三角形三边长度(按a,b,c格式)");
scanf("%lf,%lf,%lf",&a,&b,&c);
l=(a+b+c)/2;
x=l*(l-a)*(l-b)*(l-c);
s=sqrt(x);
printf("该三角形面积为(保留6位小数):\n");
printf("%lf\n",s);
}
水仙花数查找(1000以内)
#include<stdio.h>
#include<math.h>
#define N 1000
int n=1;
int main()
{
while(n<=N)
{
unsigned int m=0,i=0,a[10],j,k;
k=n;
while(k>0)
{
a[i]=k%10;
k=k/10;
i++;
}
for(j=0;j<i;j++)
m=m+pow(a[j],3);
if(n==m)
printf("%d\t",n);
n++;
}
printf("\n");
return 0;
}
素数查找(1000以内)
#include <stdio.h>
#define N 1000
int n=1;
int find(unsigned int sushu) //查找函数
{
int i;
for(i=2;i<sushu;i++)
{
if((sushu%i)==0) //==运算高于%运算
break;
}
if(sushu==i)
{
printf("%d\t",sushu);
n++;
}
return(sushu);
}
int main(void)
{
unsigned int sushu=2;
printf("1000以内的素数有:\n%d\t",sushu); //第一个素数不适用查找规则
while(sushu<=N)
{
find(++sushu);
if((n%5)==0&&(n!=0)) //==运算高于%运算
{
printf("\n");
n=0;
}
}
printf("\n");
return 0;
}
完全数判断`
#include<stdio.h>
int find(int wanquan)
{
int i,sum=0;
for(i=1;i<wanquan;i++)
{
if((wanquan%i)==0)
sum=sum+i;
}
if(sum==wanquan)
return wanquan;
else return 0;
}
int main()
{
int wanquan,good,i;
printf("请输入一个正数n:");
scanf("%d",&wanquan);
printf("n以内的完全数有:");
printf("\n");
for(i=1;i<=wanquan;i++)
{
good=find(i);
if(good)
printf("%d\t",good);
}
printf("\n");
return 0;
}
字符串比较
#include <stdio.h>
#include <string.h>
char a[20],b[20],c[20],d[20],e[20],f[20];
void paixu(void)
{
printf("排序前:%s %s %s %s %s\n",a,b,c,d,e);
printf("排序后:");
char i,j;
char *p[6];
p[0]=a;p[1]=b;p[2]=c;p[3]=d;p[4]=e;p[5]=f;
for (i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if((strcmp(p[i],p[j]))>0)
{
p[5]=p[i];
p[i]=p[j];
p[j]=p[5];
}
}
printf("%s ",p[i]);
}
printf("\n");
}
int main(void)
{
printf("请输入五个单词:");
scanf("%s%s%s%s%s",a,b,c,d,e);
paixu();
return 0;
}
十进制与二进制转化
#include <stdio.h>
#include <math.h>
int tentotwo(int n) //十进制转化为二进制,n为main传递,键盘输入的数
{
int t,y,i;
i=0;
y=0;
while (n) //n当n为零时循环结束
{
t=n%2; //取二进制位对应数
n=n/2;
y=y+t*pow(10,i); //将对应二进制位数放在对应“十进制位”
i++;
}
printf("其对应二进制数为:%d\n",y);
return(0);
} //十进制转换二进制函数结束
int twototen(int n) //二进制转化十进制,n为main传递,键盘输入的数
{
int t,y,i;
y=0;
for(i=0;n>0;i++) //n小于等于零结束,即已经计算到最高位为0
{
t=n%10;
n=n/10;
y=y+t*pow(2,i); //将对应二进制数加权变为十进制
}
printf("其对应十进制数为:%d\n",y);
return(0);
} //二进制转化十进制函数结束
void main() //主函数
{int x ,n;
printf("1.十进制转化为二进制 2.二进制转化为十进制 0.退出\n请选择1,2,0\n");
scanf("%d",&x);
if(x==1) //if判断进入十进制转换二进制
{
printf("请输入一个十进制数:");
scanf("%d",&n); //输入需要转换的数
tentotwo(n);
}
else if(x==2) //if判断进入二进制转化十进制
{printf("请输入一个二进制数:");
scanf("%d",&n); //输入需要转换数
twototen(n);
}
else if(x==0) //选择结束
printf("再见\n");
else printf("错误\n"); //不在选择范围内
}
对10个数排序和查找
#include <stdio.h>
int s[10]; //定义全局数组
void paixu(void) //排序函数
{
int i,j,k;
printf("排序前: ");
for(i=0;i<10;i++)
printf("%d\t",s[i]);
printf("\n"); //输出排序前排列
printf("排序后: ");
for (i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(s[i]<s[j])
{
k=s[i];s[i]=s[j];s[j]=k; //找到最大的数依次往后排列
}
}
printf("%d\t",s[i]); //输出排序后排列
}
printf("\n");
}
void chazhao(void)
{
int i,x,j;
printf("请输入要查找的数:");
scanf("%d",&x);
i=0;
while(x!=s[i]&&i<10)
{
i++;
} //判断数列是否存在要查找的数
if(i==10)
printf("数据中无查找的数");
if(i<10)
{
printf("找到了数据%d。",x);
printf(" ");
j=i+1; //数组第一个数下标为0,加一
printf("下标是:%d\n",j);
}
}
void main(void)
{
int x,i;
printf("请输入十个整数:");
for(i=0;i<10;i++)scanf("%d",&s[i]); //录入10个数
printf("1.排序 2.查找 0.退出\n请选择1,2,0\n");
scanf("%d",&x); //选择操作
if(x==1)
paixu(); //进入排序函数
else if(x==2)
chazhao(); //进入查找函数
else if(x==0)
printf("再见\n"); //退出
else printf("错误\n");
}
5个学生成绩管理
5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生的数据,分别输出每个学生的数据(包括学号、姓名、3门课成绩、平均分数)。
#include <stdio.h>
struct
{
float number;
char name[20];
float score[3];
float aver;
}student[5]; //定义五个结构体
void shuru() //输入函数
{
int i,k;
float sum;
for(i=0;i<5;i++)
{
sum=0;
printf("请输入第%d名学生的学号和姓名\n",i+1); //输入姓名,学号
scanf("%f%s",&student[i].number,student[i].name);
printf("请输入该名学生的三门课的成绩\n");
for(k=0;k<3;k++) //输入三科成绩
{
scanf("%f",&student[i].score[k]);
sum=sum+student[i].score[k];
}
student[i].aver = sum/3; //算平均分
}
}
void shuchu() //输出函数
{
int i,k;
for(i=0;i<5;i++)
{
printf("第%d名学生的学号:.%-20.0f\n",i+1,student[i].number);
printf("姓名为:%s\n",student[i].name);
printf("三门课成绩:\n");
for(k=0;k<3;k++)
{
printf("%.1f\t",student[i].score[k]);
}
printf("\n");
printf("平均分:%.2f\n",student[i].aver);
}
}
void main() //主函数
{
shuru(); //调用输入函数
shuchu(); //调用输出函数
}