c语言基本程序.docx

上传人:b****9 文档编号:23415219 上传时间:2023-05-16 格式:DOCX 页数:24 大小:26.04KB
下载 相关 举报
c语言基本程序.docx_第1页
第1页 / 共24页
c语言基本程序.docx_第2页
第2页 / 共24页
c语言基本程序.docx_第3页
第3页 / 共24页
c语言基本程序.docx_第4页
第4页 / 共24页
c语言基本程序.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

c语言基本程序.docx

《c语言基本程序.docx》由会员分享,可在线阅读,更多相关《c语言基本程序.docx(24页珍藏版)》请在冰豆网上搜索。

c语言基本程序.docx

c语言基本程序

全国计算机等级考试二级C考试大纲

基本要求

1.熟悉VisualC++6.0集成开发环境。

2.掌握结构化程序设计的方法,具有良好的程序设计风格。

3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。

4.在VisualC++6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。

考试内容

一、C语言程序的结构

1.程序的构成,main函数和其他函数。

2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。

3.源程序的书写格式。

4.C语言的风格。

二、数据类型及其运算

1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。

2.C运算符的种类、运算优先级和结合性。

3.不同类型数据间的转换与运算。

4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。

三、基本语句

1.表达式语句,空语句,复合语句。

2.输入输出函数的调用,正确输入数据并正确设计输出格式。

四、选择结构程序设计

1.用if语句实现选择结构。

2.用switch语句实现多分支选择结构。

3.选择结构的嵌套。

五、循环结构程序设计

1.for循环结构。

2.while和do-while循环结构。

3.continue语句break语句。

4.循环的嵌套。

六、数组的定义和引用

1.一维数组和二维数组的定义、初始化和数组元素的引用。

2.字符串与字符数组。

七、函数

1.库函数的正确调用。

2.函数的定义方法。

3.函数的类型和返回值。

4.形式参数与实在参数,参数值的传递。

5.函数的正确调用,嵌套调用,递归调用。

6.局部变量和全局变量。

7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。

八、编译预处理

1.宏定义和调用(不带参数的宏,带参数的宏)。

2.“文件包含”处理。

九、指针

1.地址与指针变量的概念,地址运算符与间址运算符。

2.一维。

二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。

通过指针引用以上各类型数据。

3.用指针作函数参数。

4.返回地址值的函数。

5.指针数组,指向指针的指针。

十、结构体(即“结构”)与共同体(即:

“联合”)

1.用typedef说明一个新类型。

2.结构体和共用体类型数据的定义和成员的引用。

3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。

十一、位运算

1.位运算符的含义和使用。

2.简单的位运算。

十二、文件操作

只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。

1.文件类型指针(FILE类型指针)。

2.文件的打开与关闭(fopen,fclose)。

3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。

C语言重点程序总结

一、累加:

用c语言实现1+2+3+4+5+6+7+8+9+10的累加

方法1:

#include

main()

{

inti,sum=0;

printf("实现1+2+……+10的累加:

\n");

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

sum=sum+i;

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

}

方法2:

#include

main()

{

inti,sum;

sum=0;

i=1;

printf("实现1+2+……+10的累加:

\n");

while(i<=10)

{

sum=sum+i;

i=i+1;

}

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

}

二、累乘:

用c语言实现1*2*3*4*5*6*7*8*9*10的累乘:

方法1:

#include

main()

{

inti=0,sum=1;

printf("实现1*2*3*4*5*6*7*8*9*10的累乘:

\n");

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

{

sum*=i;

}

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

}

方法2:

#include

main()

{

inti,sum;

sum=1;i=1;

printf("实现1*2*3*4*5*6*7*8*9*10的累乘:

\n");

while(i<=10)

{

sum=sum*i;

i=i+1;

}

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

}

三、求阶乘:

方法1:

利用定义

#include

main()

{

inti,n;

longf=1;

printf("输入一个数求其阶乘:

\n");

scanf("%d",&n);

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

f=f*i;

printf("%d!

=%ld\n",n,f);

}

方法2:

利用递推关系

#include

longfact(intn)

{longs;

if(n<=1)

s=1;

else

s=n*fact(n-1);

returns;}

main()

{intnum;

printf("输入一个数求其阶乘:

\n");

scanf("%d",&num);

printf("%d!

=%ld\n",num,fact(num));

}

方法3:

#include

longfact(intn)

{staticlongf=1;

f=f*n;

returnf;

}

main()

{inti;

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

printf("%d!

=%ld\n",i,fact(i));

}

四、整数的各位分离:

1、#include

main()

{

inta[10],n,i=0;

printf("请输入一个数:

\n");

scanf("%d",&n);

while(n!

=0)

{

a[i++]=n%10;n/=10;

}

for(i--;i>=0;i--)

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

printf("\n");

}

2、#include

main()

{

intx;

chara,b,c;

printf("请输入一个三位整数:

");

scanf("%d",&x);

a=x/100;

b=x/10-10*a;

c=x-100*a-10*b;

printf("%2d%2d%2d\n",c,b,a);

}

五、整数的逆序输出:

#include

#include"string.h"

main()

{

charstr[100];

ints,i,n;

printf("请输入一个数:

");

scanf("%d",&s);

for(i=0;s>0;i++)

{

n=s%10;

s=(s-n)/10;

str[i]=n+48;

}

str[i]='\0';

puts(str);

}

六、数组元素逆置

下列给定程序中,函数fun的功能是:

逆置数组元素中的值。

例如:

若a所指数组中的数据为:

1、2、3、4、5、6、7、8、9,则逆置后依次为:

9、8、7、6、5、4、3、2、1。

形参n给出数组中数据的个数。

#include

fun(inta[],intn)

{inti,t;

for(i=0;i

{

t=a[i];

a[i]=a[n-1-i];

a[n-i-1]=t;

}

}

main()

{intb[9]={1,2,3,4,5,6,7,8,9},i;

printf("\nTheoriginaldata:

\n");

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

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

printf("\n");

fun(b,9);

printf("\nThedataafterinvert:

\n");

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

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

printf("\n");

}

七、判断某数为素数:

1、输入一个数判断其是否为素数

#include

fun(intn)

{

inti;

for(i=2;i

if(n%i==0)

{

printf("%d不是素数!

\n",n);

break;

}

if(i==n-1)

printf("%d是素数!

\n",n);

}

main()

{

intn;

printf("输入一个数判断其是否为素数:

\n");

scanf("%d",&n);

fun(n);

}

2、输出100~200之间的素数:

#include

#include

main()

{

intm,leap=1,h=0,k,i;

printf("输出100~200之间的素数:

\n");

for(m=101;m<=200;m++)

{

k=(int)sqrt(m+1);

for(i=2;i

if(m%i==0)

{

leap=0;

break;

}

if(leap)

{

printf("%-4d",m);

h++;

if(h%10==0)

printf("\n");

}

leap=1;

}

printf("\ntotalis%d",h);

printf("\n");

}

八、冒泡法排序:

1、#include

main()

{

inta[10],i,j,b;

printf("输入10个数并由大到小输出:

\n");

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

{

scanf("%d",&a[i]);

}

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

{

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

{

if(a[i]

{

b=a[i];

a[i]=a[i+1];

a[i+1]=b;

}

}

}

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

{

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

}

printf("\n");

}

2、10个数由小到大排序

#include

main()

{

inta[10];//定义一个数组既它的元素为10

inti,j,temp;//定义3个变量

printf("输入10个整数:

\n\a");

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

scanf("%d",&a[i]);//依次输入10个整数

for(i=0;i<9;i++)//进行9轮排序

{

for(j=0;j<9-i;j++)//每轮进行9-i次交换

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

{

temp=a[j];

a[j]=a[j+1];//大的沉底,小的上浮

a[j+1]=temp;

}

}

printf("排序结果:

\n");

for(i=0;i<10;i++)//依次输出排序结果

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

}

3、冒泡法排序的实质过程<输入5个数由小到大排序>

#include

#include

PrintArray(inta[],intn)//输出排序每一步的结果

{

inti;

for(i=0;i

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

printf("\n");

}

BubbleSort(inta[],intn)//冒泡排序函数

{

inti,j,tmp;//tmp为中间变量

intflag;//标志变量,如果为0,说明不再交换顺序,排序结束

intcount=0;//记录交换次数

printf("initialsorting:

");

PrintArray(a,n);//输出排序前的序列

for(i=0;i

{

flag=0;//初始值为0

for(j=i+1;j

{if(a[i]>a[j])//如果前面的数比后面的数大,进行交换

{

tmp=a[i];

a[i]=a[j];

a[j]=tmp;

flag=1;//如果发生交换,标识变量设为1

}}

count++;//记录已经发生的排序次数

printf("after%dsorting:

",count);

PrintArray(a,n);//输出第count次的排序结果

if(flag==0)//没进行一次排序,flag都清0,若交换再发生,则排序完成

{

return;

}}}

main()//主函数

{

int*a,n=5,i=0;

a=(int*)malloc(n*sizeof(int));//为5个待排序的整型数开辟储存空间

for(i=0;i

scanf("%d",&a[i]);//输入待排序数

BubbleSort(a,n);//调用排序函数进行排序

free(a);//排序结束,释放储存空间

}

九、求最大公约数和最小公倍数:

原理:

输入两个正整数m和n,求其最大公约数和最小公倍数.<1>用辗转相除法求最大公约数算法描述:

m对n求余为a,若a不等于0,则m<-n,n<-a,继续求余,否则n为最大公约数<2>最小公倍数=两个数的积/最大公约数

方法1:

利用辗转相除法

#include

intgcd(inta,intb)//最大公约数

{

if(a

elseif(b==0)returna;

elsereturngcd(b,a%b);

}

intlcm(inta,intb)

{

returna*b/gcd(a,b);

}

main()

{

inta,b;

printf("输入两个正整数,求其最大公约数和最小公倍数:

\n");

scanf("%d%d",&a,&b);

printf("最大公约数:

%d\n",gcd(a,b));

printf("最小公倍数:

%d\n",lcm(a,b));

}

方法2:

#include

main()

{

intm,n;intm_cup,n_cup,res;

printf("输入两个正整数,求其最大公约数和最小公倍数:

\n");

scanf("%d%d",&m,&n);

if(m>0&&n>0)

{

m_cup=m;

n_cup=n;

res=m_cup%n_cup;

while(res!

=0)

{

m_cup=n_cup;

n_cup=res;

res=m_cup%n_cup;

}

printf("最大公约数:

%d\n",n_cup);

printf("最小公倍数:

%d\n",m*n/n_cup);

}

elseprintf("Error!

\n");

}

方法3:

求三个数的最大公约数与最小公倍数

#include

gcd(inta,intb)

{

if(b==0)returna;

elsereturngcd(b,a%b);

}

main()

{

inta,b,c,g,l;

printf("输入三个正整数,求其最大公约数和最小公倍数:

\n");

scanf("%d%d%d",&a,&b,&c);

g=gcd(gcd(a,b),c);

l=(a/g)*(b/g)*c;

printf("最大公约数:

%d\n最小公倍数:

%d\n",g,l);

}

十、比较大小:

1、比较两个数的大小:

#include

main()

{

inta,b;

printf("请输入两个数:

\n");

scanf("%d%d",&a,&b);

if(a>b)

{printf("%d>%d\n",a,b);}

else

{printf("%d<%d\n",a,b);}

}

或者:

#include

main()

{

intmax,a,b;

printf("请输入两个整数:

");

scanf("%d%d",&a,&b);

max=a>b?

a:

b;

printf("最大值为%d\n",max);

}

或者:

#include

intmax(intx,inty)

{intz;if(x>y)z=x;

elsez=y;return(z);}

main()

{intx,y,n;

intmax(intx,inty);

printf("求两树中的较大者:

");

printf("请输入两个整数:

");

scanf("%d%d",&x,&y);

n=max(x,y);

printf("最大值为%d\n",max);

}

2、比较三个数的大小:

#include

main()

{

inta,b,c,max;

printf("请输入三个数:

\n");

scanf("%d%d%d",&a,&b,&c);

max=(c>((a>b)?

a:

b))?

c:

((a>b)?

a:

b);

printf("最大数为%d\n",max);

}

十一、九九乘法表:

1、下三角常见形式

#include

main()

{

inti,j;

printf("输出九九乘法表:

\n\n");

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

{

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

printf("%d*%d=%d\t",i,j,i*j);

printf("\n");

}

}

2、完整形式

#include

main()

{

inti,j;

printf("输出九九乘法表:

\n\n");

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

{

for(j=1;j<=9;j++)

printf("%d*%d=%2d",i,j,i*j);

printf("\n");

}

}

12、四阶矩阵转置:

#include

#definen14

#definen24

inta[n1][n2],b[n2][n1];

main()

{

inta[n1][n2],b[n2][n1];

inti,j;

printf("请输入一个%d行%d列的矩阵:

\n",n1,n2);

for(i=0;i

for(j=0;j

scanf("%d",*(a+i)+j);//使用元素a[i][j]的地址

printf("转置后的矩阵为:

\n");

for(i=0;i

{

for(j=0;j

{

*(*(b+i)+j)=*(*(a+j)+i);//b[i][j]=a[j][i]

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

}

printf("\n");

}

}

13、统计输入字符串中大小写字母,数字,空格和其他字符的个数:

#include

#include

main()

{

charsen[100];

unsignedinti;

intspace,A,a,num,other;

space=A=a=num=other=0;

printf("输入字符串:

\n");

gets(sen);

for(i=0;i

{

if(sen[i]>'A'&&sen[i]<'Z')

A++;

elseif(sen[i]>'a'&&sen[i]<'z')

a++;

elseif(sen[i]>='0'&&sen[i]<='9')

num++;

elseif(sen[i]=='')

space++;

else

other++;

}

printf("该字符串共有%d个字符\n\n\t大写字母%d个\n\t小写字母%d个\n\t数字%d个\n\t空格%d个\n\t其他字符%d个\n\n",strlen(sen),A,a,num,space,other);

}

14、斐波那契数列:

1、一般方式:

输出斐波那契数列

#include

main()

{

longintf1,f2;

inti;f1=1;f2=1;

printf("输出斐波那契数列:

\n");

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

{printf("%12ld%12ld",f1,f2);

if(i%2==0)

printf("\n");

f1=f1+f2;

f2=f2+f1;

}printf("\n");

}

2、输出前n(n<11)项斐波那契数列

#include

main()

{

inti,sum,n,f[11]={0,1,1};

printf("请输入一个数n:

");

scanf("%d",&n);

printf("前n项斐波那契数列为:

\n");

printf("%6d%6d",f[1],f[2]);

sum=f[1]+f[2];

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

{

f[i]=f[i-1]+f[i-2];

printf("%6d",f[i]);

sum+=f[i];

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1