c语言复习纲要.docx
《c语言复习纲要.docx》由会员分享,可在线阅读,更多相关《c语言复习纲要.docx(17页珍藏版)》请在冰豆网上搜索。
c语言复习纲要
2013程序设计复习
考试题型
判断、单选、读程序写结果、程序填空、编程题
一、绪论
1.C程序的基本结构
一个main函数和若干个其他函数构成
2.C程序的运行步骤(两种集成开发环境)
编辑、编译、连接、运行
3.保留字、标识符
保留字(32个):
系统规定,有特定含义,不能用作其他用途
标识符:
由字母或下划线开头,字母、下划线和数字构成
二、顺序结构
1.常量
整型常量12301230x123123L
字符常量‘a’
转义字符常量‘\t’‘\n’‘\\’‘\123’‘\x1a’
字符串常量“12345”
实型常量123.451.5e-31.5e5
符号常量#define...
2.变量
intlongshortunsignedcharfloatdouble
指针变量、枚举变量
例:
enumcolor{red,yellow,blue,white,black};
enumcolorx,y,z;
x=red;y=blue;
构造类型的变量:
数组、结构、联合
3.表达式
算术表达式(+-*/%++--)
(-b+sqrt(b*b-4*a*c))/(2*a)
关系表达式(<<=>>===!
=)
A+b>=c
逻辑表达式(!
&&||)
a&&b&&c
A||B||C
例1:
设有以下程序段
intx=2,y=2,z=0,a;
a=++x||++y&&z++;
printf(“%d,%d,%d\n”,x,y,z);
执行后输出的结果是:
3,2,0
2.以下程序的输出结果是__1__。
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
条件表达式(?
:
)
Max=x>y?
x:
y
逗号表达式,
A=(3+x,x+7,x+y+z);
位运算表达式(&|^~<<>>)
C=a^b
赋值表达式=
x=(1+2)*3/8/4;
复合赋值表达式(+=-=*=/=%=&=|=^=~=<<=>>=)
X+=yw&=zt*=x+y
4.输入输出函数
Ch=getch()输入字符,不在屏幕显示
Ch=getchar()输入字符,在屏幕显示
gets(ch)输入字符串,在屏幕显示
scanf(“格式控制”,地址列表)任意类型数据输入
putchar(ch)输出字符
puts(ch)输出字符串
printf(“格式控制”,变量列表)任意类型数据输出
输出格式如下:
%d%md%-md
%o%x%u%ld%hd
%c%s%f%e%lf%le
三、分支结构
1.if(e)s;
scanf(“%d”,&x);
if(x>=0)printf(“x=%d\n”,x);
2.if(e)s1;elses2;
if(x>=0)y=x;elsey=-x;
printf(“y=%d\n”,y);
3.if的嵌套
输入成绩,输出等级
scanf(“%f”,&x);
if(x>=90)y=’A’
elseif(x>=80)y=’B’;
elseif(x>=70)y=’C’;
elseif(x>=60)y=’D’;
elsey=’E;
printf(“y=%c\n”,y);
也可以改成下面形式:
if(x>=60)
if(x>=70)
if(x>=80)
if(x>=90)y=’A’;
elsey=’B’;
elsey=’C’;
elsey=’D’;
elsey=’E’;
4.switch结构(注意使用break与不使用break的区别)
k=x/10;
switch(k)
{caes9:
case10:
y=’A’;break;
case8:
y=’B’;break;
case7:
y=’C’;break;
case6:
y=’D’;break;
default:
y=’E’;
有以下程序
{inti;
for(i=0;i<4;i++)
switch(i)
{case0:
printf("%d",i);
case2:
程序运行后的输出结果是_0001223___。
5.break(退出switch语句)
四、循环结构
1.while(e)s;
2.for(e1;e2;e3)s;
求s=1-1/2+1/3-1/4+1/5-1/6+…前10项之和
{floats=0,t;
intI,p=1;
For(i=1;i<=10;i++)
{t=1.0*p/i;
S=s+t;
p=-p;
printf(“s=%f\n”,s);
3.doswhile(e)
break(提前结束本循环)
continue(提前结束本次循环,继续下一次循环)
goto(无条件转向)
4.循环嵌套
例1:
#include
{intk=1,m=2,i,j;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
k++;
k=k-j;
m=i+j;
printf("m=%d\n",k);
结果为:
m=1
五、函数与宏定义
1.函数定义
类型函数名(形参及类型说明)
{局部变量及类型说明;
语句;
Return表达式;}
2.函数声明类型函数名(形参及类型说明);
3.函数调用
变量名=函数名(实际参数);
函数名(实际参数);
4.函数返回值return
求指定范围内的素数
intisprime(intx);
voidmain()
{
inti;
for(i=10;i<=20;i++)
if(isprime(i))
printf(“%d“,i);
intisprime(intx)
for(i=2;iif(x%i==0)return0;return1;}结果:11,13,17,195.局部变量和全局变量全局变量:函数外定义,有效范围从定义位置开始到原文件结束局部变量:函数内定义,有效范围从定义位置开始到该函数结束6.变量的存储类别全局变量:externstatic局部变量:autoregisterstatic7.函数的递归和嵌套例,求组合数c(m,n)#includeintjiechen(intn){inti;if(n==0||n==1)i=1;elsei=n*jiechen(n-1);returni;}intcmn(intm,intn){returnjiechen(m)/(jiechen(n)*jiechen(m-n)) ;}main(){intm,n,t;scanf(\“ %d%d ”,&m,&n) ;t=cmn(m,n) ;printf(“%d\n”,t) ;}8.预处理宏定义:#define文件包含:#include六、数组1.一维数组的定义和使用inta[10];2.一维数组的初始化floatb[6]={1,2,3,4,5,6};3.一维数组应用(冒泡排序、选择排序)例1:实参与形参中:单向值传递和双向地址传递举例#include"stdio.h"voidaaa(inta[2],intb,int*c);main(){intw[2]={10,20},x=30,y=40,*z=&y;aaa(w,x,z);printf("%d%d%d%d\n",w[0],w[1],x,y);}voidaaa(inta[2],intb,int*c){a[0]++;a[1]++;b++;(*c)++;}结果:11213041例2:用数组产生一批随机数并排序//冒泡排序#include#include#includevoidran(inta[],intn){intjsrand(time(NULL));for(i=0;ia[i]=rand()%1000;}voidbubsort(inta[],intn){intj,i,k;for(i=0;ifor(j=n-1;j>=i+1;j++)if(a[j]{k=a[j];a[j]=a[j-1];a[j-1]=k;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//冒泡排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}//选择排序#include#include#includevoidran(inta[],intn){intjsrand(time(NULL));for(i=0;ia[i]=rand()%1000;}voidbubsort(inta[],intn){intj,i,k,t;for(i=0;i{k=i;for(j=i+1;jif(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
if(x%i==0)
return0;
return1;
结果:
11,13,17,19
5.局部变量和全局变量
全局变量:
函数外定义,有效范围从定义位置开始到原文件结束
局部变量:
函数内定义,有效范围从定义位置开始到该函数结束
6.变量的存储类别
externstatic局部变量:
autoregisterstatic
7.函数的递归和嵌套
例,求组合数c(m,n)
intjiechen(intn)
if(n==0||n==1)i=1;
elsei=n*jiechen(n-1);
returni;
intcmn(intm,intn)
{returnjiechen(m)/(jiechen(n)*jiechen(m-n)) ;}
{intm,n,t;
scanf(\“ %d%d ”,&m,&n) ;
t=cmn(m,n) ;
printf(“%d\n”,t) ;
8.预处理
宏定义:
#define
文件包含:
六、数组
1.一维数组的定义和使用
inta[10];
2.一维数组的初始化
floatb[6]={1,2,3,4,5,6};
3.一维数组应用(冒泡排序、选择排序)
实参与形参中:
单向值传递和双向地址传递举例
#include"stdio.h"
voidaaa(inta[2],intb,int*c);
{intw[2]={10,20},x=30,y=40,*z=&y;
aaa(w,x,z);
printf("%d%d%d%d\n",w[0],w[1],x,y);
voidaaa(inta[2],intb,int*c)
{a[0]++;a[1]++;b++;(*c)++;}
11213041
例2:
用数组产生一批随机数并排序
//冒泡排序
voidran(inta[],intn)
{intj
srand(time(NULL));
for(i=0;ia[i]=rand()%1000;}voidbubsort(inta[],intn){intj,i,k;for(i=0;ifor(j=n-1;j>=i+1;j++)if(a[j]{k=a[j];a[j]=a[j-1];a[j-1]=k;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//冒泡排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}//选择排序#include#include#includevoidran(inta[],intn){intjsrand(time(NULL));for(i=0;ia[i]=rand()%1000;}voidbubsort(inta[],intn){intj,i,k,t;for(i=0;i{k=i;for(j=i+1;jif(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
a[i]=rand()%1000;
voidbubsort(inta[],intn)
{intj,i,k;
for(i=0;ifor(j=n-1;j>=i+1;j++)if(a[j]{k=a[j];a[j]=a[j-1];a[j-1]=k;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//冒泡排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}//选择排序#include#include#includevoidran(inta[],intn){intjsrand(time(NULL));for(i=0;ia[i]=rand()%1000;}voidbubsort(inta[],intn){intj,i,k,t;for(i=0;i{k=i;for(j=i+1;jif(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
for(j=n-1;j>=i+1;j++)
if(a[j]{k=a[j];a[j]=a[j-1];a[j-1]=k;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//冒泡排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}//选择排序#include#include#includevoidran(inta[],intn){intjsrand(time(NULL));for(i=0;ia[i]=rand()%1000;}voidbubsort(inta[],intn){intj,i,k,t;for(i=0;i{k=i;for(j=i+1;jif(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
{k=a[j];a[j]=a[j-1];a[j-1]=k;}
{inta[20],k ;
ran(a,20) ;//产生20个随机数
bubsort(a,20) ;//冒泡排序
for(k=0;k<20;k++)//输出排序后的结果
printf(“%d“,a[k]);
//选择排序
for(i=0;ia[i]=rand()%1000;}voidbubsort(inta[],intn){intj,i,k,t;for(i=0;i{k=i;for(j=i+1;jif(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
{intj,i,k,t;
for(i=0;i{k=i;for(j=i+1;jif(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
{k=i;
for(j=i+1;jif(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
if(a[j]{t=a[i];a[i]=a[k];a[k]=t;}}main(){inta[20],k ;ran(a,20) ;//产生20个随机数bubsort(a,20) ;//选择排序for(k=0;k<20;k++)//输出排序后的结果printf(“%d“,a[k]);}4.多维数组的定义和使用intx[3][4];例如,输出x及x的转置5.多维数组的初始化intx[3][4]={{1},{2},{3}};例3:矩阵的转置#includemain(){inta[4][3],i,j,b[3][4];for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",a[i][j]);printf("\n");}}6.字符数组的定义和使用chara[10];7.字符数组的初始化chary[5]={‘a’,’b’,’c’,’d’};charz[5]= “abcd “;8.字符数组和字符串的关系chara[30];inti;scanf(“%s”,a)或gets(a)或for(i=0;i<30;i++)scanf(“%c”,&a[i])9.字符串的标准函数getsputsstrlenstrcpystrcmp举例10.数组名作函数中的形参双向传地址七、指针1.变量的指针intj,*p=&j2.一维数组的指针以下语句执行完成之后的结果是:12inta[5]={1,2,3,4,5},*p=a,b;b=*p++;printf(“%d%d\n”,b,*p);3.指针数组int*p[n];4.指向具有n个元素的一维数组指针int(*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct类型名{类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化下述程序的输出结果是 ( ) 。#includevoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6例1:定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。structstu{charname[20];floats[3];floataver;};main(){structstua[5];inti,j;floats;for(i=0;i<5;i++){scanf(“%s”,a[i].name);s=0;for(j=0;j<3;j++){scanf(“%f”,&a[i].s[j]);s=s+a[i].s[j];}a[i].aver=s/3;}for(i=0;i<5;i++){printf(“%s“,a[i].name);for(j=0;j<3;j++)printf(“%f“,a[i].s[j]);printf(“%f\n”,a[i].aver);}}4.结构类型的指针structstus,*p=&s;(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).averp->namep->s[0]p->s[1]p->s[2]p->aver5.联合类型例1、下面的运行结果是:20,x#includestructn_c{intx;charc;};voidfunc(structn_cb){b.x=15;b.c='A';}voidmain(){structn_ca={20,'x'};func(a);printf("%d,%c\n",a.x,a.c);}九、文件1.文件的基本概念2.文件的打开方式wrawbrbabw+wb+3.文本文件的读写#include#includevoidmain(){FILE*fp;charch;fp=fopen(“aaa.txt”,”w”);if(fp==NULL)exit(0);while((ch=getchar())!=’\n’)fputc(ch,fp);fclose(fp);}一十、位运算(略)分析运行结果1.#include#defineN4voidfun();main(){inti;for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
{t=a[i];a[i]=a[k];a[k]=t;}
bubsort(a,20) ;//选择排序
4.多维数组的定义和使用
intx[3][4];
例如,输出x及x的转置
5.多维数组的初始化
intx[3][4]={{1},{2},{3}};
例3:
矩阵的转置
{inta[4][3],i,j,b[3][4];
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(j=0;j<4;j++)
b[i][j]=a[j][i];
printf("%d",a[i][j]);
printf("\n");
6.字符数组的定义和使用
chara[10];
7.字符数组的初始化
chary[5]={‘a’,’b’,’c’,’d’};
charz[5]= “abcd “;
8.字符数组和字符串的关系
chara[30];inti;
scanf(“%s”,a)或gets(a)
或for(i=0;i<30;i++)scanf(“%c”,&a[i])
9.字符串的标准函数
getsputsstrlenstrcpystrcmp
举例
10.数组名作函数中的形参双向传地址
七、指针
1.变量的指针intj,*p=&j
2.一维数组的指针
以下语句执行完成之后的结果是:
12
inta[5]={1,2,3,4,5},*p=a,b;
b=*p++;
printf(“%d%d\n”,b,*p);
3.指针数组int*p[n];
4.指向具有n个元素的一维数组指针int(*p)[n];
5.指针作函数中形参双向传地址
八、构造类型
1.结构类型定义
struct类型名
{类型分量名;
…
};
2.结构体的嵌套
3.结构类型变量的定义和使用、初始化
下述程序的输出结果是 ( ) 。
{structcomplex
{intx;
inty;
}cnum[2]={1,3,2,7};
printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);
A、0B、1C、3D、6
定义一个学生结构体,包含:
姓名、三门课成绩、三门课平均成绩。
从键盘输入5个学生的数据,求出每个学生的平均成绩,最后输出5个人的信息。
structstu
{charname[20];
floats[3];
floataver;
{structstua[5];
inti,j;
floats;
for(i=0;i<5;i++)
{scanf(“%s”,a[i].name);
s=0;
{scanf(“%f”,&a[i].s[j]);
s=s+a[i].s[j];}
a[i].aver=s/3;
{printf(“%s“,a[i].name);
printf(“%f“,a[i].s[j]);
printf(“%f\n”,a[i].aver);
4.结构类型的指针
structstus,*p=&s;
(*p).name(*p).s[0](*p).s[1](*p).s[2](*p).aver
p->namep->s[0]p->s[1]p->s[2]p->aver
5.联合类型
例1、下面的运行结果是:
20,x
structn_c
charc;
voidfunc(structn_cb)
{b.x=15;
b.c='A';
{structn_ca={20,'x'};
func(a);
printf("%d,%c\n",a.x,a.c);
九、文件
1.文件的基本概念
2.文件的打开方式wrawbrbabw+wb+
3.文本文件的读写
FILE*fp;
charch;
fp=fopen(“aaa.txt”,”w”);
if(fp==NULL)exit(0);
while((ch=getchar())!
=’\n’)
fputc(ch,fp);
fclose(fp);
一十、位运算
(略)
分析运行结果
1.
#defineN4
voidfun();
for(i=1;ifun();}voidfun(){staticinta;intb=3;printf("(%d,%d)\n",a+=2,a*b);}运行结果:(2,0)(4,6)(6,12)2.#includemain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={10,9,8,7,6,5,4,3,2,1};inti,j;for(i=0,j=9;i<10&&j>0;i+=5,j-=5)printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);}运行结果a[1]*b[1]=1a[6]*b[6]=36
fun();
voidfun()
{staticinta;
intb=3;
printf("(%d,%d)\n",a+=2,a*b);
运行结果:
(2,0)
(4,6)
(6,12)
2.
{inta[10]={1,2,3,4,5,6,7,8,9,10};
intb[10]={10,9,8,7,6,5,4,3,2,1};
for(i=0,j=9;i<10&&j>0;i+=5,j-=5)
printf("a[%d]*b[%d]=%d\n",a[i],b[j],a[i]*b[j]);
运行结果
a[1]*b[1]=1
a[6]*b[6]=36
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1