西北师范大学期末考试c语言复习笔记(代码部分)

更新时间:2023-07-20 18:53:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

C语言复习整理

1、 素数:求1——200的所有素数。

#include<stdio.h>

#include<math.h>

void main()

{

int i,j,leap;

for(i=2;i<=100;i++)

{

leap=1;

for(j=2;j<=sqrt(i);j++)

if(i%j==0)

leap=0;

if(leap==1)

printf("%4d",i);

}

printf("\n");

}

2、 输入一个年份,判断是否为闰年。

#include<stdio.h>

void main()

{

int year;

printf("请输入年份:");scanf("%d",&year);

if((year%4==0&&year%100!=0)||year%400==0)

printf("%d年是闰年.\n",year);

}

3、 画出各种三角形图案。(这是用循环嵌套完成的,也可以用二维数组来输出更加直接简

单,但是耗费系统资源较多。)

#include<stdio.h>

void main()

{int i,j;

for(i=1;i<6;i++)

{

for(j=1;j<30-i;j++)

printf(" ");

for(j=1;j<=2*i-1;j++)

printf("*");

printf("\n");

}

}

4、 多项式求和问题

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

① 2+22+222+…+2…2

# include<stdio.h>

void main()

{

int s,sum,n,i;

printf("请输入n的值:");scanf("%d",&n);

sum=0;s=0;

for(i=1;i<=n;i++)

{

s=s+2;

sum=sum+s;

}

printf("sum=%d\n",sum);

}

② 求1!+2!+…+n!

# include<stdio.h>

int jc(int n)

{

int i,s=1;

for(i=1;i<=n;i++)

s=s*i;

return(s);

}

void main()

{

int s,sum,n,i;

printf("请输入n的值:");scanf("%d",&n);

sum=0;s=1;

for(i=1;i<=n;i++)

{

sum=sum+jc(i);

}

printf("sum=%d\n",sum);

}

5、猴子摘桃

# include<stdio.h>

void main()

{

int i,sum=1;

for(i=1;i<10;i++)

sum=(sum+1)*2;

printf("sum=%d\n",sum);

}

5、 百钱百鸡

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

#include<stdio.h>

void main()

{

int x,y,z,j=0;

printf("Folleing are possible plans to buy 100 fowls with 100 Yuan.\n");

for(x=0;x<=20;x++) /*外层循环控制鸡翁数*/

for(y=0;y<=33;y++) /*内层循环控制鸡母数y在0~33变化*/

{

z=100-x-y; /*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/

if(z%3==0&&5*x+3*y+z/3==100)

/*验证取z值的合理性及得到一组解的合理性*/

printf("%2d:cock=%2d hen=%2d chicken=%2d\n",++j,x,y,z);

}

}

6、 打渔晒网

#include<stdio.h>

int main()

{

int a[12]={0,31,28,31,30,31,30,31,31,30,31,30},d,m,i,n=0,c,b;

printf("请输入月、日:");scanf("%d,%d",&m,&d);

switch(m)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:if(d>31)

return(0);

case 2:if(d>28)

return(0);

case 4:

case 6:

case 9:

case 11:if(d>30)

return(0);

}

for(i=1;i<=m;i++)

{

n=n+a[i-1];

}

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

c=(n+d-1)%5;b=(n+d-1)%7;

if(c<=2)

printf("打鱼\n");

else

printf("晒网\n");

switch(b)

{

case 0:printf("星期日\n");break;

case 1:printf("星期一\n");break;

case 2:printf("星期二\n");break;

case 3:printf("星期三\n");break;

case 4:printf("星期四\n");break;

case 5:printf("星期五\n");break;

case 6:printf("星期六\n");break;

}

return(0);

}

7、 利用面积法和随机数概率近似求出圆周率π。

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

void main()

{

int i,m,n;

float x,y,pi;

m=0;n=0;

srand(time(0));

for(i=0;i<=32767;i++)

{

x=rand()/32767.0;

y=rand()/32767.0;

n++;

if(x*x+y*y<=1)

m++;

}

pi=4.0*m/n;

printf("%f\n",pi);

}

8、 解方程

① 迭代法 迭代法开平方:求平方根的迭代公式:x1=1/2*(x0+a/x0)

#include<stdio.h> #include<math.h>

void main()

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

{

double a,x0,x1; printf("Input a:\n"); scanf("%lf",&a);//为什么在VC6.0中不能写成“scanf("%f",&a);”? if(a<0)

printf("Error!\n");

else

{

x0=a/2;

x1=(x0+a/x0)/2;

do

{

x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x0-x1)>=1e-6);

} printf("Result:\n");

printf("sqrt(%g)=%g\n",a,x1);

}

9、解方程

牛顿迭代法求方程的根2x^5+4x^2+3x-6=0 在1附近的根

# include<stdio.h>

# include<math.h>

void main()

{

float x1,x,f1,d1;

x1=1;

do

{

f1=2*pow(x1,5)+4*x1*x1+3*x1-6;

d1=10*pow(x1,4)+8*x1+3;

x=x1-f1/d1;

x1=x; }

while (fabs(f1)>1e-6);

printf("x=%f\n",x);

}

用二分法求方程2x^5+4x^2+3x-6=0在(0,1)上的根

# include<stdio.h>

# include<math.h>

void main()

{

float x1,x2,x,y1,y;

x1=0;x2=1;

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

y1=2*pow(x1,5)+4*x1*x1+3*x1-6;

do

{

x=(x1+x2)/2;

y=2*pow(x,5)+4*x*x+3*x-6;

if(y*y1<0)

x2=x;

else

{x1=x;

y1=y;

}

}

while (fabs(y)>1e-6);

printf("x=%f\n",x);

}

弦截法

9、 排序

冒泡排序法(随即产生10个正整数,并按照从大到小的顺序排序)

# include<stdio.h>

# include<stdlib.h>

# include<time.h>

void main()

{

int a[10],i,j;

srand(time(0));

printf("原序列为:\n");

for(i=0;i<10;i++)

{

a[i]=rand()%100;

printf("%4d",a[i]);

}

putchar('\n');

for(i=0;i<8;i++)

for(j=0;j<9-i;j++)

if(a[j]<a[j+1])

{

a[j]+=a[j+1];

a[j+1]=a[j]-a[j+1];

a[j]=a[j]-a[j+1];

}

printf(“排序后的数列为:\n”);

for(i=0;i<10;i++)

printf("%4d",a[i]);

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

putchar('\n');

}

选择排序法

# include<stdio.h>

# include<stdlib.h>

# include<time.h>

void main()

{

int a[10],i,j,p;

printf("排序前:\n");

srand(time(0));

for(i=0;i<10;i++)

{

a[i]=rand()%100;

printf("%4d",a[i]);

}

for(i=0;i<10;i++)

{

p=i;

for(j=1+i;j<10;j++)

if(a[j]>a[p])

p=j;

if(p!=i)

{

a[i]+=a[p];

a[p]=a[i]-a[p];

a[i]-=a[p];

}

}

putchar('\n');

printf("排序后\n");

for(i=0;i<10;i++)

printf("%4d",a[i]);

}

10、 魔方数

#include <stdio.h>

void main()

{

int a[15][15],i,j,k,n;

printf("请输入一个正整数:");

scanf("%d",&n);

for(i=0;i<n;i++)

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

for(j=0;j<n;j++)

a[i][j]=0;

j=n/2;

a[0][j]=1;

for(k=2;k<=n*n;k++)

{ i=i-1;

j=j+1;

if((i<0)&&(j>n-1))

{

i=i+2;

j=j-1;

}

else

{ if(i<0)

i=n-1;

if(j>n-1)

j=0;

}

if(a[i][j]==0)

a[i][j]=k;

else

{ i=i+2;

j=j-1;

a[i][j]=k;

}

}

for(i=0;i<n;i++)

{ for(j=0;j<n;j++)

printf("%5d",a[i][j]);

printf("\n\n");

}

}

11、 打擂台算法

选猴王

# include<stdio.h>

void main()

{

int a[30],i,s,n;

for(i=0;i<30;i++)

a[i]=1;

i=0;s=0;n=30;

while (n>1)

{

s+=a[i];

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

if(s%3==0&&a[i]==1)

{

a[i]=0;

n--;

}

i++;

if(i==30)

i=0;

}

for(i=0;i<30;i++)

if(a[i]==1)

printf("猴王是:%d\n",i);

}

12、 关于字符串的统计问题(统计出一行字符串中包含多少大写字母、小写字母、数字、

空格等。)

# include<stdio.h>

void main ()

{

char string[20],i;

int a,b,c,d,j;

gets(string);

a=0;b=0;c=0;d=0;

for(j=0;(i=string[j])!='\0';j++)

{

if(i>='a'&&i<='z')

a++;

if(i>='A'&&i<='Z')

b++;

if(i>='0'&&i<='9')

c++;

if(i==' ')

d++;

}

printf("小写字母的个数为:%d\n",a);

printf("大写字母的个数为:%d\n",b);

printf("数字的个数为:%d\n",c);

printf("空格的个数为:%d\n",d);

}

13、 汉诺塔问题

# include<stdio.h>

void hanoi(int n,char a,char b,char c)

{

if(n==1)

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

printf("%c-->%c\n",a,c); else

{

hanoi (n-1,a,c,b);

printf("%c-->%c\n",a,c); hanoi (n-1,b,a,c);

}

}

void main()

{

hanoi (3,'A','B','C');

}

14、 xdx 用梯形法求定积分 s= 0e12

# include<stdio.h>

# include<math.h>

double f(double x)

{

double y;

y=exp(-x*x);

return (y);

}

double txf(double a,double b,int n) {

double h,s,p=0,x;

int i;

h=(b-a)/n;

s=h*(f(a)+f(b))/2;

for(i=1;i<n;i++)

{

x=a+i*h;

p=p+f(x);

s=s+p*h;

}

return s;

}

void main()

{

double a=0,b=1,s;

int n;

s=txf(a,b,1000);

printf("s=%lf\n",s);

}

15、 递归输出三角形

这是我整理的关于c语言期末考试的重要笔记,主要是代码部分。

# include<stdio.h>

void fac(int n)

{

int i;

for(i=1;i<=n;i++)

printf("*");

printf("\n");

if(n>0)

fac(n-1);

}

void main()

{

int n;

printf("请输入n:");scanf("%d",&n); fac(n);

}

本文来源:https://www.bwwdw.com/article/r731.html

Top