总结:程序设计基础
说明:总结本学期C语言课程知识要点
目的:温故知新
数据:
是用以描述客观事物的数值、字符,以及一切可以输入到计算机中并由计算机程序加以处理的符号的集合。
程序设计过程: 问题 → 数学模型 → 算法 → 程序 → 测试 → 计算:
C语言特点
1、语言简洁、紧凑,使用方便灵活
2、运算符丰富
3、数据结构丰富,具有现代化语言的各总数据结构
4、具有结构化的控制语句
5、语法限制不太严格,程序设计自由度大
6、C语言允许直接访问物理地址,可实现汇编语言的大部分功能
7、生成目标代码的质量高,程序执行效率高
8、程序可执行性好
C语言程序结构
1.C程序是由函数构成的。一个C源程序至少包含一个主函数(main或主程序)和若干个其它函数(子函数或子程序)
2.一个函数由两部分程序组成:说明部分和函数体
3.一个C程序总是从main函数开始执行,不论main函数放在程序中的什么位置。程序的流程是通过主函数main调用其它子函数,或子函数间的相互调用
4.C程序书写格式自由,一行内可以写多条语句,但每一语句必须用分号(“;”)结束
5.C语言本身没有输入/输出语句,而是用函数完成相应操作
6.可以用/* …,… */或//在程序中做注释
变量
先定义,后引用
变量使用的有效范围
变量的命名规则
数据的基本类型
整形int
字符型char
实型(浮点型)
运算符
0、赋值运算: =
1、算术运算符: + - * / %
2、关系运算符: > < = = >= <= !=
3、逻辑运算符: ! && ||
4、位运算符: << >> - | ^ &
5、赋值运算符: = += -= *= /=
6、条件运算符: ? :
7、逗号运算符: ,
8、指针运算符: * &
9、求字节数运算符: sizeof
10、强制类型转换: (类型)
11、分量运算符: . ->
12、下标运算符: []
13、其他: ()
表达式
算术表达式: <常量、变量>算术运算符<常量、变量>
关系表达式: <算术表达式> 关系运算符<算术表达式>
逻辑表达式; <关系表达式> 逻辑运算符<关系表达式>
赋值表达式: 变量 = 表达式
逗号表达式: 表达式1,表达式2,……,表达式n
条件表达式: 表达式1?表达式2:表达式3
输入/输出
格式输入/输出
printf( 格式控制,输出表列 )
scanf( 格式控制,地址表列 )
文件的格式输入/输出
fprintf(文件变量,格式控制,输出表列)
fscanf(文件变量,格式控制,地址表列 )
格式控制(Format)
整 形 int %d %[-]nd %[-]m.nd
实 型 float %f %[-]m.nf
字符型 char %c %[-]nc
字符串 char c1[MAX] %s %[-]ns
小测试
1 . 设y是int型变量,请写出判断y为奇数的关系表达 if(y%2!=0)
--------------------------------------------------------------------
2. 以下程序运行后的输出结果是__b____
main()
{ char m;
m='B'+32; printf("%c",m);
}
--------------------------------------------------------------------
3. 下列描述中不正确的是___C___。
A:字符型数组中可以存放字符串
B:可以对字符型数组进行整体输入、输出
C:可以对整型数组进行整体输入、输出
D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
--------------------------------------------------------------------
4. 定义数组 float f[]={2.1,8.2,3.6,4.9};float *fp=f;则*++fp等于(8.2):
--------------------------------------------------------------------
5. 假设 int p1 = 200, p2 = 150, x =1150, y = 1150; 则表达式 ( y>x) && ( p1>p2) 的值是:0
--------------------------------------------------------------------
6. C语言中的基本数据类型包括( int )(char )(float )。
--------------------------------------------------------------------
7. 若有float f1=2.7,f2=13.5; float *fp=&f1;*fp/=4; fp=&f2;,则*fp的值是( 13.5)
--------------------------------------------------------------------
8. 假设已经定义一个字符数组arr[10],赋给他的初值(xiaowang)的语句是(char arr[10]=”xiaowang”)
--------------------------------------------------------------------
9. 以下程序的输出结果是 10 10 , 9 1。
main()
{ int x=10,y=10,i;
for(i=0;x>8 ;y=++i)
printf("%d %d ",x--,y);
}
--------------------------------------------------------------------
10 选择填空:输入n和n个实数,找出他们的最大值和最小值,并将最大值和最小值输出到文件c:\abc.txt中。
运行示例:
输入n:5↙
输入实数:4 56.8 78.0 13 -12↙
程序运行结束!
【程序】
#include <stdio.h>
#include <stdlib.h>
void main()
{ double x,a,b;
int i,n;
FILE *p;
if ((p=fopen( 1 A ))==NULL)
{ printf("Open file is fail\n");
exit(0);
}
printf("输入n:");
scanf("%d",&n);
printf("输入实数: ");
scanf("%lf",&x);
2 B
for(i=0; i<n-1;i++){
scanf("%lf",&x);
if(a<x) a=x;
if (b>x) 3 B
}
4 A ;
fclose(p);
}
(1) A、”c:\\abc.txt","w" B、”c:\\abc.txt","r"
C、”c:\\abc.txt","write" D、”c:\\abc.txt","read"
(2) A、a=b=0; B、a=b=x; C、a=0;b=x; D、 a=x;b=0;
(3) A、 x=b; B、b=x; C、a=b; D、 b=a;
(4) A、fprintf(p,"max=%.1f,min=%.1f\n", a,b);
B、fprintf(abc.txt,"max=%.1f,min=%.1f\n", a,b);
C、printf(p,"max=%.1f,min=%.1f\n", a,b);
D、printf(abc.txt,"max=%.1f,min=%.1f\n", a,b);
--------------------------------------------------------------------
11. 选择填空:定义判断整数是否为水仙花数的函数。利用判断水仙花数的函数,求100~1000之间所有的水仙花数。水仙花数是指一个三位数,其各位数字的立方和等于该数本身,如:153=1+125+27
【程序】
#include<stdio.h>
void main()
{ int m;
int flower(int x);
for(m=100;m<1000;m++)
if ( 1 C )
printf("水仙花数:%d\n",m);
}
2 C
{ int a,b,c,s;
a=x%10;
3 D
c=x/100;
s=a*a*a+b*b*b+c*c*c;
if (s==x) 4 D ;
else return 0;
}
(1) A、flower(int m)==1 B、int flower(int m)==1
C、flower(m)==1 D、 flower(x)==1
(2) A、void flower(int x) B、int flower(int x,int s)
C、int flower(int x) D、void flower(int x,int s)
(3) A、 b=x%100%10 B、b=x%10/10 C、b=x/100%10 D、b=x/10%10
(4) A、return x; B、return 0; C、return -1; D、 return 1;
--------------------------------------------------------------------
12 填空:从小到大排序
int main(){
int myarr[10];
(空1)for(int m=0;m<10;m++)
scanf("%d", (空2)&myarr[m] );
Bubble(myarr,11);
int i=0;
for(;i<11;i++){
printf("%d:%d\n",i,myarr[i]);
}
return 0;
}
void Bubble(int myarr[],int len){
int length=len;
int i=0;
int j=0;
for(;i<len;i++){
for(;j<length;j++){
if( (空3)myarr[j]>myarr[j+1] ){
int temp=myarr[j];
(空4)myarr[j]=myarr[j+1];
myarr[j+1]=temp;
}
}
length--;
j=0;
}
}
--------------------------------------------------------------------
13 填空:对输入一个字符串,统计此字符串中字母,数字,空格,和其它符号的个数
int main()
{
int letter=0,num=0,space=0,other=0,i;
char put[1000000];
gets(put);
for(i=0;i<1000000;i++)
{
if(put[i]=='\n' || put[i]==0) /* gets 不保存回车,字符串以'\0'结束 */
break;
else if( put[i]>=’A’&&put[i]<=’z’(空1))
letter++;
else if(put[i]>=0&&put[i]<=9 (空2))
num++;
else if( put[i]==’ ’(空3))
space++;
else
other++;
}
printf("TYPE No.\n");
printf("letter %d\n",letter);
printf("num %d\n",num);
printf("space %d\n",space);
printf("other %d\n",other);
system("pause");
return 0;
}
说明:总结本学期C语言课程知识要点
目的:温故知新
数据:
是用以描述客观事物的数值、字符,以及一切可以输入到计算机中并由计算机程序加以处理的符号的集合。
程序设计过程: 问题 → 数学模型 → 算法 → 程序 → 测试 → 计算:
C语言特点
1、语言简洁、紧凑,使用方便灵活
2、运算符丰富
3、数据结构丰富,具有现代化语言的各总数据结构
4、具有结构化的控制语句
5、语法限制不太严格,程序设计自由度大
6、C语言允许直接访问物理地址,可实现汇编语言的大部分功能
7、生成目标代码的质量高,程序执行效率高
8、程序可执行性好
C语言程序结构
1.C程序是由函数构成的。一个C源程序至少包含一个主函数(main或主程序)和若干个其它函数(子函数或子程序)
2.一个函数由两部分程序组成:说明部分和函数体
3.一个C程序总是从main函数开始执行,不论main函数放在程序中的什么位置。程序的流程是通过主函数main调用其它子函数,或子函数间的相互调用
4.C程序书写格式自由,一行内可以写多条语句,但每一语句必须用分号(“;”)结束
5.C语言本身没有输入/输出语句,而是用函数完成相应操作
6.可以用/* …,… */或//在程序中做注释
变量
先定义,后引用
变量使用的有效范围
变量的命名规则
数据的基本类型
整形int
字符型char
实型(浮点型)
运算符
0、赋值运算: =
1、算术运算符: + - * / %
2、关系运算符: > < = = >= <= !=
3、逻辑运算符: ! && ||
4、位运算符: << >> - | ^ &
5、赋值运算符: = += -= *= /=
6、条件运算符: ? :
7、逗号运算符: ,
8、指针运算符: * &
9、求字节数运算符: sizeof
10、强制类型转换: (类型)
11、分量运算符: . ->
12、下标运算符: []
13、其他: ()
表达式
算术表达式: <常量、变量>算术运算符<常量、变量>
关系表达式: <算术表达式> 关系运算符<算术表达式>
逻辑表达式; <关系表达式> 逻辑运算符<关系表达式>
赋值表达式: 变量 = 表达式
逗号表达式: 表达式1,表达式2,……,表达式n
条件表达式: 表达式1?表达式2:表达式3
输入/输出
格式输入/输出
printf( 格式控制,输出表列 )
scanf( 格式控制,地址表列 )
文件的格式输入/输出
fprintf(文件变量,格式控制,输出表列)
fscanf(文件变量,格式控制,地址表列 )
格式控制(Format)
整 形 int %d %[-]nd %[-]m.nd
实 型 float %f %[-]m.nf
字符型 char %c %[-]nc
字符串 char c1[MAX] %s %[-]ns
小测试
1 . 设y是int型变量,请写出判断y为奇数的关系表达 if(y%2!=0)
--------------------------------------------------------------------
2. 以下程序运行后的输出结果是__b____
main()
{ char m;
m='B'+32; printf("%c",m);
}
--------------------------------------------------------------------
3. 下列描述中不正确的是___C___。
A:字符型数组中可以存放字符串
B:可以对字符型数组进行整体输入、输出
C:可以对整型数组进行整体输入、输出
D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
--------------------------------------------------------------------
4. 定义数组 float f[]={2.1,8.2,3.6,4.9};float *fp=f;则*++fp等于(8.2):
--------------------------------------------------------------------
5. 假设 int p1 = 200, p2 = 150, x =1150, y = 1150; 则表达式 ( y>x) && ( p1>p2) 的值是:0
--------------------------------------------------------------------
6. C语言中的基本数据类型包括( int )(char )(float )。
--------------------------------------------------------------------
7. 若有float f1=2.7,f2=13.5; float *fp=&f1;*fp/=4; fp=&f2;,则*fp的值是( 13.5)
--------------------------------------------------------------------
8. 假设已经定义一个字符数组arr[10],赋给他的初值(xiaowang)的语句是(char arr[10]=”xiaowang”)
--------------------------------------------------------------------
9. 以下程序的输出结果是 10 10 , 9 1。
main()
{ int x=10,y=10,i;
for(i=0;x>8 ;y=++i)
printf("%d %d ",x--,y);
}
--------------------------------------------------------------------
10 选择填空:输入n和n个实数,找出他们的最大值和最小值,并将最大值和最小值输出到文件c:\abc.txt中。
运行示例:
输入n:5↙
输入实数:4 56.8 78.0 13 -12↙
程序运行结束!
【程序】
#include <stdio.h>
#include <stdlib.h>
void main()
{ double x,a,b;
int i,n;
FILE *p;
if ((p=fopen( 1 A ))==NULL)
{ printf("Open file is fail\n");
exit(0);
}
printf("输入n:");
scanf("%d",&n);
printf("输入实数: ");
scanf("%lf",&x);
2 B
for(i=0; i<n-1;i++){
scanf("%lf",&x);
if(a<x) a=x;
if (b>x) 3 B
}
4 A ;
fclose(p);
}
(1) A、”c:\\abc.txt","w" B、”c:\\abc.txt","r"
C、”c:\\abc.txt","write" D、”c:\\abc.txt","read"
(2) A、a=b=0; B、a=b=x; C、a=0;b=x; D、 a=x;b=0;
(3) A、 x=b; B、b=x; C、a=b; D、 b=a;
(4) A、fprintf(p,"max=%.1f,min=%.1f\n", a,b);
B、fprintf(abc.txt,"max=%.1f,min=%.1f\n", a,b);
C、printf(p,"max=%.1f,min=%.1f\n", a,b);
D、printf(abc.txt,"max=%.1f,min=%.1f\n", a,b);
--------------------------------------------------------------------
11. 选择填空:定义判断整数是否为水仙花数的函数。利用判断水仙花数的函数,求100~1000之间所有的水仙花数。水仙花数是指一个三位数,其各位数字的立方和等于该数本身,如:153=1+125+27
【程序】
#include<stdio.h>
void main()
{ int m;
int flower(int x);
for(m=100;m<1000;m++)
if ( 1 C )
printf("水仙花数:%d\n",m);
}
2 C
{ int a,b,c,s;
a=x%10;
3 D
c=x/100;
s=a*a*a+b*b*b+c*c*c;
if (s==x) 4 D ;
else return 0;
}
(1) A、flower(int m)==1 B、int flower(int m)==1
C、flower(m)==1 D、 flower(x)==1
(2) A、void flower(int x) B、int flower(int x,int s)
C、int flower(int x) D、void flower(int x,int s)
(3) A、 b=x%100%10 B、b=x%10/10 C、b=x/100%10 D、b=x/10%10
(4) A、return x; B、return 0; C、return -1; D、 return 1;
--------------------------------------------------------------------
12 填空:从小到大排序
int main(){
int myarr[10];
(空1)for(int m=0;m<10;m++)
scanf("%d", (空2)&myarr[m] );
Bubble(myarr,11);
int i=0;
for(;i<11;i++){
printf("%d:%d\n",i,myarr[i]);
}
return 0;
}
void Bubble(int myarr[],int len){
int length=len;
int i=0;
int j=0;
for(;i<len;i++){
for(;j<length;j++){
if( (空3)myarr[j]>myarr[j+1] ){
int temp=myarr[j];
(空4)myarr[j]=myarr[j+1];
myarr[j+1]=temp;
}
}
length--;
j=0;
}
}
--------------------------------------------------------------------
13 填空:对输入一个字符串,统计此字符串中字母,数字,空格,和其它符号的个数
int main()
{
int letter=0,num=0,space=0,other=0,i;
char put[1000000];
gets(put);
for(i=0;i<1000000;i++)
{
if(put[i]=='\n' || put[i]==0) /* gets 不保存回车,字符串以'\0'结束 */
break;
else if( put[i]>=’A’&&put[i]<=’z’(空1))
letter++;
else if(put[i]>=0&&put[i]<=9 (空2))
num++;
else if( put[i]==’ ’(空3))
space++;
else
other++;
}
printf("TYPE No.\n");
printf("letter %d\n",letter);
printf("num %d\n",num);
printf("space %d\n",space);
printf("other %d\n",other);
system("pause");
return 0;
}