C语言必背18个经典程序
b: ' n
for(1=0i<4:1++)
print(%o6dbliljI
printf("n")
6、/编程打印直角杨辉三角形*
Hint ij a[[6]
for(i=0;i<=5;i+-)
falli=l; a[ol
for(i-2;i<=5+-)
for(=l<=i-1;++)
i][]-a[i-1]j]+a[i-1-1];
for(i0;i<=5;i+-)
{fory-0j<-1j++)
printf("%c4d"a[iI])
7、通过键盘输入3名学生4门课程的成绩,
分别求每个学玍的平均成绩和每门课程的平均成绩。
要求所有成绩均放入个4行5列的数组中,输入吋同人数据间用空格,不同人月同车
其中最后一列和最后一行分别以每个学生的平均成绩、每门课程的平均成绩及班级总平均分。
include <stdio. h>
include<stdlib.h>
i float a[4][5]
1,J
for(i=0;<3i++)
or
canf(%f", &allin;
for(-0i<3i++)
i sum1=0;
suml+=alJc
ail[4]=sum 1/4
or(=0j<j++)
for(i10;<3;i++
sum2+=aillil
a]]=sum2/3;
f"%6.2f,aj):
8、完善程序,实现将输入的字符串反序输出
如输入
输出
共 include< string. h>
printf"Enter a st
(i=0=-1ck2i++j-)
i cl-cli ci-cljj: c lil-cl; j
指针法
har t:
半
j);(+)-t:}
I FILE*Ip
f((fr-fopen("p9 2out","W")--NUL L)
i printf"cannot open the filen);
ntt
n");
invert(str)
printf("n%s”,str)
fclose(fp):
9、下面程序的功能是从字数组s中删除存放在c中的字符。
maino
i char s[8o
printf("nEntcr a string: )
printf("eNter a character: "
forgj=k=0; s[!=10:j++)
if(sl]!
skI
10、编写一个 void sort intx,ntn)实现将x数组中的n个数据从大到小
排序。n及数组元素在主函数中输入。将结果显小在屏幕上并输出到文件p91out中
include<stdio. h
void sort(int*x, int n)
int i j k
for(i-0
k-i
i(xj」xk」)kj
IFILE
fp=fopen(p9 1.out", w")
printf("Input 10 numbers: ")
for(i=0: 1<10: 1++)
scan
forp<at 10: p++)
fprintf(fp, %d",p):i
fp)
11、已知数组a中的元素己按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍
然曰小到大顺序排列*
{ int arlo0.12,1720228,30
a0为工作单元,从a1开始存放数据
nt x, ij=6:
/j为元素个数
scanf("%od", &x
从最后一个单元开始
while(a[]>x)
{ai+]ij:i-;}/将比x大的数往后移动一个位置
a[++i]
j++;
插入x后元素总个数增加*
for(i=l i<=j: i++)printf("%8d, a[i]
printi(\n")
12、∧编写函数 replace( chars, char cl, char c2)实现将s所指向的字符串中所有字符cl用c2替换,字符串、字符c和c2
均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件pl02.out中
include<stdio h>
replace(char s, char cl, char c2)
i while(sl-\O')
ing
i FILE fp:
har str[100]. a, b;
if(fp-fopen(pl0 2out"," W)=NULL
i printf("cannot open the filein":
i(0)
gets(stI
tf("Enter
scanf(%oc.oc .&a, &
rinf("%s'n", str);
fprintf(fp, %os\n", str);
eplace(str, a, b):
printf("The new string is----%oStn", str);
fprintf(fp. " The new string is----os'n"str)
lose(fp)
13、在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置
不存在则返回-1。
Char sI[6-
32[5}-"i"
printf("%dk
syste
int search( char sll, char s21)
fint i-0j, len-strlen(s2)
if(s1[i-j]=s2[]) break
ifli=len )return 1
else i-+
eturn -I
14、用指针变量输出结构体数组元素。*
struct student
Int num
Int
stu[5={{1001,ihua"F",18},1002, liuxing",M,19},{1003," huanghe",F,19},{1004," fengshou",F,19},{1005," Wangming
8};
printf("Num tName\t\Sex\t")
体月指针变量输出结构体数组元素。*
ps<stu+5 ps++)
printf("%d\t%-10s'tit%c\t%od\t'n ps->num, ps>name
ex, ps->age);
月数组卜标法输出结构体效组元素学号和年龄。*
for(-0;<5i+)
printf("%dt%dtn".stu[i]. num, stu l]. age)
5、建立一个有三个结点的简单链表:*
并 define null0
struct student
int num
char name
struct student * next
void maino
struct student a, b, c, head, "p
anum=1001; a namc="ihua";aage=1l8:/对结点成员进行赋值/
b nLIm=1002; bname="liuxing; bage=
c num=1003; c name="huangke, cage=18
head-&a
建立链表,a为头结点*
anext=&b
b next-&c
C next=NULL-
/输出链表
printf(%5d, %oS,%3dnp->num, p->name, p->age)
while(p!-NUL L);
16、*输入一个字符串,判断其是合为回文。回文字符串是指从左到右读和从右到左读完全相可的字符串。
include <stdio h>
include<string. h>
n
i char s[ 100:
Int 11, n
printi"'输入字符串:mn");
n=strl
j: i++ j--)
if(s[i]=sui]) break;
if(>=j) printf("是回文串n")
nt("不是回文串n");
17、冒泡排序,从小到大,排序后结果输出到屏幕及文什myf2out
include<stdio.h>
void fun(int a l,int n)
1:i
for(=0j≤ij+
if(al]aj+lt=aj; all=a[j+1; aj+1]=t: j
main()
{inta[10-12,45,78,964,10,48,246},n-10
FILE f
if((f-fopcn("myf2 out",W))==NULL)
printf("open file myf2 out failed!\n")
fun(a,10)
10:i++)
tf(%04d, ai]);
94d",a[ij]);
18、编写函数 counteR,利用公式
≈l+-+×二+-×-×-+
计算π凶近似值,当某一项的值小于103时,认为达到精度要求,请完善图数。将结果显示在屏暮上并输出到文件p73.ut
double countpi(double eps)
/eps为允许误差*
hile(ter
temp temp m/(2 m-1);
return(2s);
main
(FILEp;
ps=le-5, pI;
if((fp=fopen(p7 3out,W )==NULL)
i printf("cannot open the filen")
it(0);
pl-%0
fprintf(fp, pi-%1f\n" pi);
fclose(fp);