北邮在线:C语言必背18个经典程序
1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/
#include “stdio.h”
main()
{int i,j,result;
for(i=1;i<10;i++)
{for(j=1;j<10;j++)
{
result=i*j;
printf(“%d*%d=%-3d”,i,j,result);/*-3d表示左对齐,占3位*/
}
printf(“\n”);/*每一行后换行*/
}
}
2、/*古典问题:有一对兔子,从出生后第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; /*前两个月加起来赋值给第三个月*/
}
}
3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。*/
#include “math.h”
main()
{
intm,i,k,h=0,leap=1;
printf(“\n”);
for(m=101;m<=200;m++)
{k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;}
if(leap) /*内循环结束后,leap依然为1,则m是素数*/
{printf(“%-4d”,m);h++;
if(h%10==0)
printf(“\n”);
}
leap=1;
}
printf(“\nThetotal is %d”,h);
}
4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数。*/
main()
{
static int k[10];
inti,j,n,s;
for(j=2;j<1000;j++)
{
n=-1;
s=j;
for(i=1;i{if((j%i)==0)
{ n++;
s=s-i;
k[n]=i;
}
}
if(s==0)
{printf(“%d is a wanshu: “,j);
for(i=0;iprintf(“%d,”,k[i]);
printf(“%d\n”,k[n]);
}
}
}
5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,
请在空白处完善程序。*/
main()
{ int a[4][4],b[4][4],i,j; /*a存放原始数组数据,b存放旋转后数组数据*/
printf(“input 16 numbers: “);/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ scanf(“%d”,&a[i][j]);
b[3-j][i]=a[i][j];
}
printf(“arrayb:\n”);
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
printf(“%6d”,b[i][j]);
printf(“\n”);
}
}
6、/*编程打印直角杨辉三角形*/
main()
{int i,j,a[6][6];
for(i=0;i<=5;i++)
{a[i][i]=1;a[i][0]=1;}
for(i=2;i<=5;i++)
for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<=5;i++)
{for(j=0;j<=i;j++)
printf(“%4d”,a[i][j]);
printf(“\n”);}
}
7、/*通过键盘输入3名学生4门课程的成绩,
分别求每个学生的平均成绩和每门课程的平均成绩。
要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车
其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/
#include
#include
main()
{ float a[4][5],sum1,sum2;
inti,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf(“%f”,&a[i][j]);
for(i=0;i<3;i++)
{sum1=0;
for(j=0;j<4;j++)
sum1+=a[i][j];
a[i][4]=sum1/4;
}
for(j=0;j<5;j++)
{ sum2=0;
for(i=0;i<3;i++)
sum2+=a[i][j];
a[3][j]=sum2/3;
}

for(i=0;i<4;i++)
{ for(j=0;j<5;j++)
printf(“%6.2f”,a[i][j]);
printf(“\n”);
}
}
8、/*完善程序,实现将输入的字符串反序输出,
如输入windows 输出swodniw。*/
#include
main()
{ char c[200],c1;
int i,j,k;
printf(“Enter a string: “);
scanf(“%s”,c);
k=strlen(c);
for (i=0,j=k-1;i{ c1=c[i];c[i]=c[j];c[j]=c1; }
printf(“%s\n”,c);
}
指针法:
void invert(char *s)
{int i,j,k;
char t;
k=strlen(s);
for(i=0,j=k-1;i{ t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; }
}
main()
{FILE *fp;
char str[200],*p,i,j;
if((fp=fopen(“p9_2.out”,”w”))==NULL)
{ printf(“cannot open thefile\n”);
exit(0);
}
printf(“input str:\n”);
gets(str);
printf(“\n%s”,str);
fprintf(fp,“%s”,str);
invert(str);
printf(“\n%s”,str);
fprintf(fp,“\n%s”,str);
fclose(fp);
}
9、/*下面程序的功能是从字符数组s中删除存放在c中的字符。*/
#include
main()
{ char s[80],c;
int j,k;
printf(“\nEnter a string: “);
gets(s);
printf(“\nEnter a character: “);
c=getchar( );
for(j=k=0;s[j]!= ‘\0’;j++)
if(s[j]!=c)
s[k++]=s[j];
s[k]=’\0’;
printf(“\n%s”,s);
}
10、/*编写一个voidsort(int *x,int n)实现将x数组中的n个数据从大到小
排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9_1.out中*/
#include
void sort(int *x,int n)
{
int i,j,k,t;
for(i=0;i{
k=i;
for(j=i+1;jif(x[j]>x[k]) k=j;
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
void main()
{FILE *fp;
int *p,i,a[10];
fp=fopen(“p9_1.out”,”w”);
p=a;
printf(“Input 10 numbers:”);
for(i=0;i<10;i++)
scanf(“%d”,p++);
p=a;
sort(p,10);
for(;p{ printf(“%d “,*p);
fprintf(fp,”%d “,*p); }
system(“pause”);
fclose(fp);
}
11、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列*/
main()
{ inta[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从a[1]开始存放数据*/
int x , i, j=6; /*j为元素个数*/
printf(“Enter a number: “);
scanf(“%d”,&x);
a[0]=x;
i=j; /*从最后一个单元开始*/
while(a[i]>x)
{ a[i+1]=a[i]; i–; } /*将比x大的数往后移动一个位置*/
a[++i]=x;
j++; /*插入x后元素总个数增加*/
for(i=1;i<=j;i++) printf(“%8d”,a[i]);
printf(“\n”);
}
12、/*编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件p10_2.out中*/
#include
replace(char*s,char c1,char c2)
{while(*s!=’\0’)
{ if(*s==c1)
*s=c2;
s++;
}
}
main()
{ FILE *fp;
char str[100],a,b;
if((fp=fopen(“p10_2.out”,”w”))==NULL)
{ printf(“cannot open thefile\n”);
exit(0); }
printf(“Enter a string:\n”);
gets(str);
printf(“Enter a&&b:\n”);
scanf(“%c,%c”,&a,&b);
printf(“%s\n”,str);
fprintf(fp,”%s\n”,str);
replace(str,a,b);
printf(“Thenew string is—-%s\n”,str);
fprintf(fp,”Thenew string is—-%s\n”,str);
fclose(fp);
}
13、/*在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置
,不存在则返回-1。*/
main()
{chars1[6]=”thisis”;char s2[5]=”is”;
printf(“%d\n”,search(s1,s2));
system(“pause”);
}
int search(chars1[],char s2[])
{inti=0,j,len=strlen(s2);
while(s1[i]){
for(j=0;jif(s1[i+j]!=s2[j]) break;
if(j>=len)return i;
else i++;
}
return -1;
}
14、/*用指针变量输出结构体数组元素。*/
struct student
{
int num;
char *name;
char sex;
int age;
}stu[5]={{1001,”lihua”,’F’,18},{1002,”liuxing”,’M’,19},{1003,”huangke”,’F’,19},{1004,”fengshou”,’F’,19},{1005,”Wangming”,’M’,18}};
main()
{int i;
struct student *ps;
printf(“Num \tName\t\t\tSex\tAge\t\n”);
/*用指针变量输出结构体数组元素。*/
for(ps=stu;psprintf(“%d\t%-10s\t\t%c\t%d\t\n”,ps->num,ps->name,ps->sex,ps->age);
/*用数组下标法输出结构体数组元素学号和年龄。*/
for(i=0;i<5;i++)
printf(“%d\t%d\t\n”,stu[i].num,stu[i].age);
}
15、/*建立一个有三个结点的简单链表:*/
#define NULL 0
struct student
{
int num;
char *name;
int age ;
struct student*next;
};
void main()
{
struct studenta,b,c,*head,*p;
a.num=1001;a.name=”lihua”; a.age=18; /* 对结点成员进行赋值 */
b.num=1002;b.name=”liuxing”; b.age=19;
c.num=1003;c.name=”huangke”; c.age=18;
head=&a; /* 建立链表,a为头结点 */
a.next=&b;
b.next=&c;
c.next=NULL;
p=head; /* 输出链表 */
do{
printf(“%5d,%s,%3d\n”,p->num,p->name,p->age);
p=p->next;
}while(p!=NULL);
}
16、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。*/
#include
#include
#include
main()
{ char s[100];
int i,j,n;
printf(“输入字符串:\n”);
gets(s);
n=strlen(s);
for(i=0,j=n-1;iif(s[i]!=s[j]) break;
if(i>=j) printf(“是回文串\n”);
else printf(“不是回文串\n”);
}
17、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件myf2.out*/
#include
void fun(inta[],int n)
{int i,j,t;
for(i=0;i<=n-1;i++)
for(j=0;jif(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
main()
{inta[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;
FILE *f;
if((f=fopen(“myf2.out”,”w”))==NULL)
printf(“open file myf2.outfailed!\n”);
fun(a,10);
for(i=0;i<10;i++)
{printf(“%4d”,a[i]);
fprintf(f,”%4d”,a[i]);
}
fclose(f);
}
18、编写函数countpi,利用公式
计算π的近似值,当某一项的值小于10-5时,认为达到精度要求,请完善函数。将结果显示在屏幕上并输出到文件p7_3.out中。
#include
doublecountpi(double eps) /*eps为允许误差*/
{
int m=1;
double temp=1.0,s=0;
while(temp>=eps)
{ s+=temp;
temp=temp*m/(2*m+1);
m++;
}
return(2*s);
}
main()
{FILE *fp;
double eps=1e-5,pi;
if((fp=fopen(“p7_3.out”,”w”))==NULL)
{ printf(“cannot open thefile\n”);
exit(0);
}
pi= countpi(eps);
printf(“pi=%lf\n”,pi);
fprintf(fp,”pi=%lf\n”,pi);
fclose(fp);
}

之前在美国很红的一首英文小诗,给最近迷茫的你
作者:佚名

纽约时间比加州时间早三个小时,
New York is 3 hours ahead of California,

但加州时间并没有变慢。
but it does not make California slow.

有人22岁就毕业了,
Someone graduated at the age of 22,

但等了五年才找到好的工作!
but waited 5 years before securing a good job!

有人25岁就当上CEO,
Someone became a CEO at 25,

却在50岁去世。
and died at 50.

也有人迟到50岁才当上CEO,
While another became a CEO at 50,

然后活到90岁。
and lived to 90 years.

有人依然单身,
Someone is still single,

同时也有人已婚。
while someone else got married.

欧巴马55岁就退休,
Obama retires at 55,

川普70岁才开始当总统。
but Trump starts at 70.

世上每个人本来就有自己的发展时区。
Absolutely everyone in this world works based on their Time Zone.

身边有些人看似走在你前面,
People around you might seem to go ahead of you,

也有人看似走在你后面。
some might seem to be behind you.

但其实每个人在自己的时区有自己的步程。
But everyone is running their own RACE, in their own TIME.

不用嫉妒或嘲笑他们。
Don’t envy them or mock them.

他们都在自己的时区里,你也是!
They are in their TIME ZONE, and you are in yours!

生命就是等待正确的行动时机。
Life is about waiting for the right moment to act.

所以,放轻松。
So, RELAX.

你没有落后。
You’re not LATE.

你没有领先。
You’re not EARLY.

在命运为你安排的属于自己的时区里,一切都准时。
You are very much ON TIME, and in your TIME ZONE Destiny set up for you. https://t.cn/RU1bnOB

之前在美国很红的一首英文小诗,给最近迷茫的你
作者:佚名

纽约时间比加州时间早三个小时,
New York is 3 hours ahead of California,

但加州时间并没有变慢。
but it does not make California slow.

有人22岁就毕业了,
Someone graduated at the age of 22,

但等了五年才找到好的工作!
but waited 5 years before securing a good job!

有人25岁就当上CEO,
Someone became a CEO at 25,

却在50岁去世。
and died at 50.

也有人迟到50岁才当上CEO,
While another became a CEO at 50,

然后活到90岁。
and lived to 90 years.

有人依然单身,
Someone is still single,

同时也有人已婚。
while someone else got married.

欧巴马55岁就退休,
Obama retires at 55,

川普70岁才开始当总统。
but Trump starts at 70.

世上每个人本来就有自己的发展时区。
Absolutely everyone in this world works based on their Time Zone.

身边有些人看似走在你前面,
People around you might seem to go ahead of you,

也有人看似走在你后面。
some might seem to be behind you.

但其实每个人在自己的时区有自己的步程。
But everyone is running their own RACE, in their own TIME.

不用嫉妒或嘲笑他们。
Don’t envy them or mock them.

他们都在自己的时区里,你也是!
They are in their TIME ZONE, and you are in yours!

生命就是等待正确的行动时机。
Life is about waiting for the right moment to act.

所以,放轻松。
So, RELAX.

你没有落后。
You’re not LATE.

你没有领先。
You’re not EARLY.

在命运为你安排的属于自己的时区里,一切都准时。
You are very much ON TIME, and in your TIME ZONE Destiny set up for you.


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 谢谢各位仙女[舔屏][舔屏][舔屏]【求助】大家好~求助各位姐妹帮忙选码AD家的虞美人之夏,我身高 160体重 111腰围 70胸围 88肩宽 38臂长 56
  • 我以为这个菜的翻身之后会记得当年自己被喷的伤痛,对后面的人好一些。后来,配了海染套的心海,咸鱼翻身,由玩家的观赏鱼,变成提瓦特的第一奶妈,人称海后。
  • 快结局突然来个和本子斗法,写得很鬼扯又很尬,甚至有莫名其妙的原则性问题,摸不着头脑.jpg建议一般作者不要写这种贴近现实的东西,你露怯我也尴尬。作为出轨文,不够
  • 说着说着,我又想过生日了[失望]突然想到今天晚上看到食堂有一对小情侣过生日,他们一定很幸福吧,好羡慕他们呀,因为他们有蛋糕可以吃一边聊天一边打字,不知不觉打了快
  • 人的本性是争强好胜,不愿意宽恕体量别人:“凡有血气,必有争心,人之好胜,谁不如我”但是只有善于恕人,才能为自己创造一个顺遂的人际环境。独善其身,并不是明哲保身,
  • 《朱元璋说》雪压枝头低 虽低不着泥 一朝红日出 依旧与天齐把咽不下的东西咽下,是一种胸怀​把不想做的事做好,是一种能力​把看不顺眼的人看顺眼,是一种修为​把要骂
  • 这本陆游传记写的很好,从他生在乱世中开始讲起,讲到和表妹唐婉的心碎爱情,与恩师曾几的师生之情,出入仕途时的心情,被降职的经历,还有他的乡间生活、避世归隐……一直
  • 锐不可当的宝宝名字: 睿棋、宇棋、智贤、健瀚、祥林、文标 健德、乾元、棋弘、柏新、桦佑、彬霖 蔚楷、本宇、树笙、康锋、奕烜、茂乐 乔生、真杰、高超、景赐、东中
  • 丁丁与埃尔热.特别感谢讲解的小志愿者们,如果不是她们,或许我就稀里糊涂的看完都不知道自己看的顺序看错了[允悲][允悲]感谢他们很有耐心的解疑答惑。太可惜了真的[
  • 然而,该航班却于起飞约五六个小时后返航,机长称:“由于中国入境政策临时发生变化,航班上所有人的健康码不被认证。然而,该航班却于起飞约五六个小时后返航,机长称:“
  • ”卢迪说,最后用了多少电费,街道办会进行公示,公示完以后,办事处给补贴,“只要是我们辖区的居民,我们就有责任有义务(负责)。不过,宋先生提供了一段业主们和满中桐
  • (此处艾特我们柔柔女神……手动狗头)唉……其实佩索阿也是一个孤独的人吧……分离出一个又一个人格,让自己隐藏在所有人格的背面,把所有的敏感不安,歇斯底里都藏了起来
  • 电影讲述的事非常的接地气,其实都发生在我们身边,每个人不是天生强者,但我们不能认输,更不能输给自已,一次的失败不等于永远,成功也不是必然的,希望看到这部电影的学
  • 当消费者遇到网购纠纷起诉时,如果双方对管辖没有明确约定,对于网购的买卖合同,可以选择到买受人(即针对消费者反映的网购“付款不发货”问题,丛台区人民法院法官张剑介
  • 是由于果酸直达皮肤的真里皮层把潜伏的痘痘和白头诱发出来,白头是痘痘产生的根源,1天不铲除,就会随时诱发成可怕的痘痘,果酸对大的、红肿的痘痘格外有效,果酸换肤美容
  • 《楞严经》轮回是中自取流转 (第二十四段) 【佛言:如是!即时如来,于大众中,屈五轮指,屈已复开,开已又屈,谓阿难言:汝今何见?阿难言:我见如来,百宝轮掌,众中
  • ▶ 润肺白菜汤在秋季肺燥时,可用大白菜煮一道汤,大白菜100克、豆腐皮50克、红枣10枚,加入适量的水炖汤,煮熟调味即可。2.莲藕:生津解渴开胃莲藕煮熟后,性平
  • ”   在遭遇拥挤踩踏时还应注意以下几个方面:不要推搡、奔跑,不要试图超过别人,和周围的人保持步调一致,尽量拉起绊倒的人。”她建议,个子比较矮小的人,遇到人潮时
  • 装成册子,今归奉琩盦中,仁斋好收藏名迹,时一展玩,意甚自得也。装成册子,今归奉琩盦中,仁斋好收藏名迹,时一展玩,意甚自得也。
  • #sky光遇黑市[超话]#来来来,都来看看这个人我真无语,评论抽几个(2r) 我就想问,如果号主跟我说的价格是1k,我跟代出说的是1.2k,那我能拿到那200差