第1篇:C语言程序设计
1.Problem A: Hello world!Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。
Input 无
Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!
Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!
HINT 请注意换行符
Append Code #include int main(){
printf("Hello Da_min,n");
printf("Hello Er_min,n");
printf("Hello Xiao_ming!n");} 2.Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。
Input 输入一个浮点型数据,有效数字不会超过十进制的6位。
Output 输出为两行。
第一行为圆的面积,第二行为圆的周长,格式见sample。
Sample Input 3
Sample Output Area: 28.260000 Perimeter: 18.840000
HINT 了解浮点类型的输入、输出和算术运算符
Append Code 法一
#include int main(){ double r,p,s;scanf("%lf",&r);p=2*3.14*r;s=3.14*r*r;printf("Area: %lfn",s);printf("Perimeter: %lfn",p);} 法二
#include #define pi 3.14 int main(){
double r;
scanf("%d",&r);
printf("Area: %lfn",pi*r*r);
printf("Perimeter: %lfn",2*pi*r);
}
3.
Problem C:平均值 Description 求3个数的平均值。
Input 输入只有一行,为3个较小的整数。
Output 输出为这3个整数的平均值,保留3位小数。
Sample Input 1 2 3 Sample Output 2.000
HINT 注意除法运算对整型数据和浮点型数据是不一样的。
Append Code #include int main(){ int a,b,c;scanf("%d%d%d",&a,&b,&c);printf("%.3lf",(a+b+c)/3.0);}
4.Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。
Input 输入为3个字符。
Output 输出为3行。
每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。
Sample Input 0 A
Sample Output 048 060 030 032 040 020 065 101 041
HINT 了解字符值的存储和整型的关系。
Append Code #include int main(){ char a,b,c;scanf("%c%c%c",&a,&b,&c);printf("%.3d %.3o %.3xn",a,a,a);printf("%.3d %.3o %.3xn",b,b,b);printf("%.3d %.3o %.3xn",c,c,c);}
5.
Problem A: 最简单的程序 Description 输出一行“Hello world!”。
Input 无
Output Hello world!
Sample Input Sample Output Hello world!
HINT Append Code #include int main(){
printf("Hello world!");}
6.Problem B: 算术基本运算 Description 计算两整数x和y(0
Input 输入只有一行,格式见sample。
Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample
Sample Input x = 11, y = 3
Sample Output x + y : 14 xy : %dn",x-y);
printf("x * y : %dn",x*y);
printf("x / y quotient: %d, remainder: %dn",x/y,x%y);
printf("x ^ 2 : %dn",x*x);
printf("y ^ 3 : %dn",y*y*y);} 7.Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。
编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。
Input 一个整数a,a是很小的整数。
Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。
5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。
Sample Input 0
Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1
HINT Append Code #include int main(){ int a,x;scanf("%dn",&x);a=x;printf(" a
: %dn",a);printf("--a
: %dn",--a);a=x;printf(" a--: %dn",a--);a=x;printf(" a++ : %dn",a++);a=x;printf("++a
: %dn",++a);}
8.Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。
Input 输入两个数,第一个是整数,第二个是浮点数。
Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。
Sample Input-1 1
Sample Output 1 1
HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!
Append Code #include //#include int main(){
int n;
float m;
scanf("%d%f",&n,&m);
//n=abs(n);
//m=fabs(m);
if(n
{
n=-n;
}
if(m
{
m=-m;
}
printf("%dn",n);
printf("%g",m);
return 0;}
9.Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。
Input 输入只有一行,为一个100以内的正整数。
Output 输出为一行。
若输入为偶数则输出“even”,奇数输出“odd”。Sample Input 30
Sample Output even
HINT 用整数运算可以解决,练习“?:”表达式。
Append Code #include int main(){
int n;
scanf("%d",&n);
if(n>=0&&n
if(n%2==0)printf("evenn");
else printf("oddn");
}
return 0;}
10.Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。
Input 输入只有一行,三个整数m、n和x,且0
Sample Input 95 300 4
Sample Output 334.40
HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。
Append Code #include int main(){
int m,x,n,a;
float b;
scanf("%d%d%d",&m,&n,&x);
0
x
m
a=m*x;
if(a>n)
b=0.88*a;
else
b=a;
printf("%.2fn",b);
}
11.Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。
Input 输入只有一行,为一个10000以内的正整数。
Output 输出为一行。
若输入为闰年偶数则输出“Yes”,否则输出“No”。
Sample Input 2010
Sample Output No
HINT 了解逻辑运算符和关系运算符。
Append Code #include int main(){
int x;
scanf("%d",&x);
if(x>0&&x
{
if(x%4==0&&x%100!=0)
printf("Yesn");
else if(x%400==0)
printf("Yesn");
else
printf("Non");
}
else
printf("error");}
12.Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。
Input 一个整数x,100
Output x是水仙花数,则输出“YES”,否则为“NO”。
Sample Input 153
Sample Output YES
HINT Append Code #include int main(){
int a,b,c,x;
scanf("%d",&x);
a=x/100;
b=x/10%10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
printf("Yes");
else
printf("No");}
13.Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。
Input 输入只有一行,为三个整数。
Output 按从小到大输出这三个数。
Sample Input 15 10 20
Sample Output 10 15 20
HINT 用if语句判断各种情况可以解决这个问题。
Append Code #include int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>=b)
{
if(b>=c)
printf("%d %d %dn",c,b,a);
else if(c>=a)
printf("%d %d %dn",b,a,c);
else
printf("%d %d %dn",b,c,a);
}
else
{
if(a>=c)
printf("%d %d %dn",c,a,b);
else if(b>=c)
printf("%d %d %dn",a,c,b);
else
printf("%d %d %dn",a,b,c);
} }
14.Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中;
如果这个数字是奇数,则将大于该数的最小偶数累加到和中。
Input 三个正整数,均在100以内。
Output 一个和。
Sample Input 2 3 5
Sample Output 12
HINT 如果不会使用分支语句,可使用条件运算符判断到底将哪个数累积到和中。
Append Code #include int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a%2!=0)a++;
if(b%2!=0)b++;
if(c%2!=0)c++;
printf("%dn",a+b+c);
}
15.Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。
Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。
Sample Input 70 80 70 240 80 80 82
Sample Output congratulations
HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。
Append Code #include int main(){
int a,b,c,d,e,f,g,h;
scanf("%d %d %d %dn%d %d %d",&a,&b,&c,&d,&e,&f,&g);
h=e+f+g;
if(e>=a&&f>=b&&g>=c&&h>=d)
printf("congratulations");
else
printf("sorry");} 16.Problem I: A+B Problem(II): Input/Output
Practice Description 计算a+b,0
Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。
Output 每行输出一个a+b的和,顺序与输入对应。
Sample Input 2 1 2 10 20
Sample Output 3 30
HINT N给出了测试样例数,用for循环处理方便。
Append Code #include int main(){
int n,a,b,i;Scanf(“%d”,&n);For(i=0;i
17.
Problem H: A+B Problem Description 计算a+b,0
Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。
Output 每行输出一个a+b的值,顺序与输入对应。
Sample Input 1 2 10 20
Sample Output 3 30
HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。Append Code #include int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%dn",a+b);
}
return 0;}
18.Problem A: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U
Input 输入一个英文字母
Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。
Sample Input A
Sample Output yes
HINT Append Code #include void main(){
char ch;
scanf("%c",&ch);
if(ch>='A'&&ch
ch=ch+32;
if(ch=='a')
printf("yes");
else if(ch=='e')
printf("yes");
else if(ch=='i')
printf("yes");
else if(ch=='o')
printf("yes");
else if(ch=='u')
printf("yes");
else
printf("no");
}
19.Problem B: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。
Input 输入3个int类型内的整数,两两之间用一个空格隔开。
Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。
Sample Input 2 1 3 Sample Output 1 2 3
HINT Append Code #include void main(){
int a,b,c,temp;
scanf("%d%d%d",&a,&b,&c);
if(a
{
temp=a;
a=b;
b=temp;
}
if(a
{
temp=a;
a=c;
c=temp;
}
if(b
{
temp=b;
b=c;
c=temp;
}
printf("%d %d %dn",c,b,a);}
20.Problem E: Description 判断输入整数的奇偶性。
判断奇偶数 Input 输入为一个整数。
Output 输出只有一行,代表判断结果。如果输入的整数n是一个偶数,输出: n is an even number.否则输出:
n is an odd number.见样例。
Sample Input 12
Sample Output 12 is an even number.HINT Append Code #include int main(){
int a;
scanf("%d",&a);
if(a%2==0)
printf("%d is an even number.",a);
else
printf("%d is an odd number.",a);}
21.Problem A: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。
Input 两个整数a和b,均不超过int类型的表示范围。
Output 表示a>b的结果:如果a>b,则输出1,否则输出0。
Sample Input 3 4
Sample Output 0
HINT
Append Code #include int main(){ int a,b;scanf("%d %d",&a,&b);if(a>b)
printf("1");
else
printf("0");return 0;} 22.Problem D: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pa 0~59:Failing
不在0~100之间的输入是非法数据,输出“Error”。
Input 输入多行,每行一个整数。
Output 输入所对应的成绩等级。
Sample Input-1 81 92 35 68 72 100
Sample Output Error Good Excellent Failing Pa Average Excellent HINT 用switch语句解决这个问题比较方便。
Append Code #include int main(){
int score;
while(scanf("%d",&score)!=EOF)
{
if(score100)
printf("Errorn");
else
{
switch(score/10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:printf("Failingn");break;
case 6:printf("Pan");break;
case 7:printf("Averagen");break;
case 8:printf("Goodn");break;
case 9:
case 10:printf("Excellentn");break;
}
}
}
return 0;}
23.Problem E: 输出是m的倍数或n的倍数、但不是
m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1
Input 输入三个整数,依次为k、m、n。
Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。
Sample Input 15 2 3
Sample Output 2 3 4 8 9 10 14 15
HINT 难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。
Append Code #include int main(){ int k,m,n,a,i=1;scanf("%d %d %d",&k,&m,&n);if(m
a=m;else
a=n;printf("%d",a);for(i=a+1;i
}
if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0))
printf(" %d",i);} return 0;
24.Problem B: 两整数相加减 Description 计算a+b和a-b。
Input 输入为一对整数a和b。a,b用空格分开。
Output 输出a+b和a-b的计算结果,各占一行。
Sample Input 1 2
Sample Output 3-1
HINT Append Code #include int main(){ int a,b;scanf("%d %d",&a,&b);
printf("%dn",a+b);
printf("%dn",a-b);} 25 Problem C: 它满足条件吗? Description 需要判断给定的一个整数是否同时满足如下三个条件: 1.它是一个完全平方数。2.它是一个偶数。3.它是一个正数。
注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如:
0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一个int范围内的整数。
Output 如果输入的数字满足条件,则输出yes,否则输出no。
Sample Input 100
Sample Output yes
HINT 注意逻辑表达式判断三个条件的顺序。如果你不会使用分支语句,同样可以使用条件运算符实现该程序。
库函数sqrt()可以用于求一个数的平方根。
Append Code #include #include int main(){ int a;scanf("%d",&a);
if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0)
printf("yes");
else
printf("no");}
26.Problem F: 多路分支 Description 编写一个完整的程序,运行时向用户提问"你考试考了多少分?(0-100)"接受输入后判断其等级并显示出来等级: 优:90
Input 输入任意一个整数分数值,显示等级;再输入任意一个整数分数值,显示等级;....直到测试数据较充分,可输入-1止。
Output 对任意输入的分数值,输出对应的等级,直到输入的数为-1时才退出运行.Sample Input 102 100 90 80 70 60 50 0-80-1
Sample Output grad must between 0 and 100 优
优
良
中
中
差
差
grad must between 0 and 100 grad must between 0 and 100
HINT Append Code #include int main(){
int x;
while(scanf("%d",&x)!=EOF)
{
if(x100)
printf("grad must between 0 and 100n");
else if(x>=90)
printf("优n");
else if(x>=80)
printf("良n");
else if(x>=60)
printf("中n");
else if(x>=0)
printf("差n");
}
return 0;}
27 Problem D: 有多少人? Description 学校举行运动会,如果全体学生按照3人一队列队,则多了1个人;如果按照4人一队列队,则多了2个人;如果按照5人一队排队,则多了3个人。请问这个学校有多少学生?
Input 一个int类型的正整数N,是学生人数的上界,即:该校学生数不超过N。
Output 所有可能的学生数,每个数占一行。
Sample Input 200
Sample Output 58 118 178
HINT Append Code #include #include int main(){
int n,i;
scanf("%d",&n);
for(i==1;i
printf("%dn",i);}
return 0;}
28 Problem C: 正负数各有几个? Description 输入若干个整数,求其中正数、负数的个数。
Input 输入分为2行:第一行是一个数字N>0,表示下面有N个整数。第2行是N个整数,都是int类型的。
Output 输出所输入的N个整数的正数个数和负数个数,并用空格分开2个输出。Sample Input 10
1 2 3 4 5-1-2-3-4-5
Sample Output 5 5
HINT 貌似还有一种叫做0的数。
Append Code #include int main(){
int n,a,i,num1=0,num2=0;
scanf("%d",&n);for(i=0;i
{
scanf("%d",&a);
if(a>0)
num1++;
else if(a
num2++;
}
printf("%d %dn",num1,num2);
return 0;}
29 Problem A: A+B Problem(III): Input/Output
Practice Description 计算a+b,0
Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。
Output 每行输出一个a+b的值,顺序与输入对应。
Sample Input 1 2 10 20 0 0
Sample Output 3 30
HINT 练习break的使用。
Append Code #include int main(){ int a,b;while(scanf("%d %d",&a,&b)!=EOF)
{
if(a!=0||b!=0)
}
printf("%dn",a+b);
else
break;
return 0;} 30 Problem B: A+B Problem(IV): Input/Output
Practice Description 计算a+b,0
Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。
Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。
Sample Input 1 2 10 20 15 35
Sample Output 3 30 50
HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。
Append Code #include int main(){ int a,b,n=0;while(scanf("%d %d",&a,&b)!=EOF){
n++;
if(n==1)
printf("%dn",a+b);
else
printf("n%dn",a+b);
}
return 0;}
31 Problem C: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。
Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。
Output 输出为两行,格式见sample。
Sample Input 3 0 1-1
Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格还是回车都是空白符,对scanf("%d")来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。
Append Code #include int main(){
int n,i,max,min;
scanf("%d",&n);
int a[n];
for(i=0;i
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=0;i
{
if(max
max=a[i];
if(min>a[i])
min=a[i];
}
printf("The maximum number is %d.n",max);
printf("The minimum number is %d.",min);
return 0;} 32.Problem D: 求100以内的素数 Description 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。
Input 输入为两个整数m和n,满足0
Output 从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。
输出的所有数在两行“=====”之间。
Sample Input 2 12
Sample Output ===== 11 7 5 3 2 =====
HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。
Append Code #include #include int main(){ int m,n,i,j,k,t;scanf("%d %d",&m,&n);printf("=====n");for(i=n;i>=m;i--){
t=0;
for(j=2;j
if(i%j==0)
t=1;
if(t==0&&i>1)
printf("%dn",i);} printf("=====");return 0;} 33.Problem E: 是否构成三角形? Description 给出三个整数,代表三条边的长度,判断这三条边的长度是否能构成一个三角形?
Input 第一行是n(1
接下来有n行,每一行包含三个整数,表示三个边长(1
Output 如果三条边能构成三角形,输出YES,否则输出NO
Sample Input 3 1 2 3 2 8 7 20 20 1
Sample Output NO YES YES
HINT Append Code #include int main(){ int a,b,c,n,i;scanf("%d",&n);for(i=0;i
{scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
printf("YESn");else printf("NOn");}
return 0;} 34.Problem C: 简单的整数排序 Description 对给出的若干整数按从小到大排序。
Input 输入的第一个数为n(n
Output 按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。
Sample Input 10 3 9 1 5 2 8 5 6 7 3
Sample Output 1 2 3 3 5 5 6 7 8 9
HINT 排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。
Append Code #include int main(){
int c,i,n,j;
int a[1000];
scanf("%d",&n);
for(i=0;i
scanf("%d",&a[i]);
for(i=1;i
{
for(j=0;j
{
if(a[j]>a[j+1])
{
c=a[j];
a[j]=a[j+1];
a[j+1]=c;
}
}
}
printf("%d",a[0]);
for(i=1;i
printf(" %d",a[i]);
return 0;}
35.Problem A: Description
购物的路程 Saya和Kudo一起去购物。假定她们逛的街是一条直线,而商铺是这条直线上的一些点。她们将车停在该直线最左端的店铺处,然后从左向右开始逛每一个店铺,然后从最右边的店铺再返回到停车处。你的任务是计算她们走了多少路。
Input 输入有多组。每一组的第一行是N(0
Output 对每组输入,输出她们走的路长。
Sample Input 4
24 13 89 37 6 7 30 41 14 39 42 0
Sample Output 152 70
HINT Append Code #include int main(){
int n,i,max,min,a[100001];
while(scanf("%d",&n)&&n!=0)
{
scanf("%d",&a[0]);
min=max=a[0];
for(i=1;i
{
scanf("%d",&a[i]);
if(a[i]>max)
max=a[i];
if(a[i]
min=a[i];
}
printf("%dn",(max-min)*2);
}
return 0;} 36.Problem B: 求累加和 Description 编程求min~max的累加和(含min和max),其中max>=min>0。部分程序已经给出,请填充其中的空白语句,并提交填充后的完整程序。
Input 输入为多行。第一行是一个整数N>0,表示后面有N个测试用例。后面有N行,每行包含2个整数,分别是min和max。
Output 输出为N行,每个测试用例的计算结果占据一行。每行的格式为: case i:sum=s.其中i表示测试用例的编号(从1开始),s是该测试用例对应的累加和(设不超过int的表示范围)。
Sample Input 3 1 10 1 100 1 1
Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int main(){
int n,i,j,max,min,sum;
scanf("%d",&n);
for(i=0;i
{ sum=0;
scanf("%d%d",&min,&max);
if(max==min)
printf("case %d:sum=%d.n",i+1,min);
else
{
for(j=min;j
sum=sum+j;
printf("case %d:sum=%d.n",i+1,sum);
}
} return 0;} 37.Problem G: 顺序输出字母 Description 按字母顺序输出两个字母st和ed之间的所有字母,但不包括st和ed。不输出逆序。
Input 两个字母st和ed,都是大写字母,用一个空格分开。
Output 在一行内按顺序输出st和ed之间的所有字母,但不包括st和ed。例如:
输入为A和E,则输出为BCD;
输入为A和B,则什么字母也不输出,只有一个空行; 输入为E和A,也是什么字母也不输出,只有一个空行。最后要输出一行(行尾不回车): ***END***
Sample Input A C
Sample Output B
***END***
HINT Append Code #include int main(){
char st,ed,a;
int i;
scanf("%c%c%c",&st,&a,&ed);
{
for(i=st+1;i
printf("%c",i);
printf("n***END***");
}
return 0;} 38.Problem F: 单字母变换 Description Tom和Jack是密码学爱好者,他们在聊天时经常使用一些暗语。他们使用的一种最简单的暗语是:将要说的每句话里面的英文字母变成这个字母之后的某个字母。现在要求你写一个程序,将一个字母变成它之后的某个字母。
Input 输入有2个:一个大写字母c和一个正整数d(0
Output 输出字母c之后的第d个字母。大小写与c一致。如果c之后的某个字母已经超出'Z',则再从字母'A'开始计数。
如:c='A',d=3,则输出应为:D。若:c='Y',d=3,则输出应为:B。
Sample Input A 3
Sample Output D
HINT Append Code #include int main(){
char c;
int d;
scanf("%c%d",&c,&d);
if(c+d
printf("%c",c+d);
else
printf("%c",c+d-26);
return 0;}
39.Problem B: 登录密码验证 Description 编写一个程序,模拟用户登录系统的密码验证过程。系统提供给用户的密码长度最长为20个字符,若密码输入错误可以再次输入。但为了保证用户密码安全,若连续输入密码错误超过5次就会锁定账号一段时间。
Input 输入为若干个串,至EOF结束。输入的第一个串是用户的正确密码,后面的串为模拟用户登录时的输入的密码。
Output 每次输入错误的密码,输出一个“Wrong!”,若输入的密码为正确的,输出一个“Welcome!”,并结束密码测试。若前5次输入的密码都是错误的,则后面的输入中不管是否有正确的密码都输出“Out of limited!”。
Sample Input abcdefg
123456 kkkkkkkk abcdefg
Sample Output Wrong!Wrong!Welcome!
HINT 输入可以用scanf("%s")处理,密码比较用字符串的比较可以完成。
Append Code #include #include int main(){
char a[20],b[20];
int i,j=1;
scanf("%s",a);
while(scanf("%s",b)!=EOF)
{
if(j
{
if((strcmp(a,b)==0))
{
printf("Welcome!n");
break;
}
else
printf("Wrong!n");
j++;
}
else printf("Out of limited!n");
} } 40.Problem C: 兔子的繁殖问题 Description 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)?
这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。
Input 输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m
Output 输出为n行,每行为第m个月后的兔子总数。
第2篇:C 语言程序设计
《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。
本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。
2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。
2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!
2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。
第3篇:《C语言程序设计》教学总结
《C语言程序设计》教学总结
C语言是计算机专业的一门专业课,它以其处理功能丰富,表达能力强,使用方便灵活,执行效率高,既具有高级语言的特点,又具有汇编语言的特点,因而成为国内外使用较广泛的语言之一。本人于2002-2003第二学期担任本课程的教学,在教学中注重面向应用、重视实践、结合成人学生的特点由于此课程是该班开的第一门语言课,因此在讲授中按照循序渐进、逐步深入的原则来安排、难点分散使学生不会感到太困难,从而树立学习的自信心。经过一学期的教学实践,学生基本掌握了C语言的基本内容,会编写简单的C语言程序,为后续课程奠定了基础。
二零零三年六月
第4篇:《C语言程序设计》教学大纲
计算机系教学大纲
C语言程序设计
《C语言程序设计》教学大纲
课程代码:8613
课程名称:C语言程序设计
课程性质:计算机应用各专业中一门非常重要的专业基础课,是必修的核心课程之一。它是“汇编语言程序设计”、“数据结构”、“编译原理”、“操作系统”等其它核心课程必要的先行课。因此该课程在整个教学计划中占有重要的地位。
教学目的:目的是让学生学习一门高级程序设计语言,掌握高级程序设计的基本概念、基本思想、基本方法和基本技能,进而学会利用C语言编制一些程序以解决一般实际应用问题,培养学生分析问题和解决问题的能力,并为后续的专业课程奠定程序设计基础。课程的教学原则和方法:
1、理论与上机实践相结合的原则;
2、在课堂教学中主要使用传统的讲解法,并适当采用电子讲义相结合的原则;
3、讲解法与自学相结合的原则;
4、考虑到实际教学效果和教学效率,在学习本课程之前要对计算机的相关硬件和软件基础知识有所掌握;
5、所有例题都要上机调试通过。
课程总学时:总学时为96学时,其中讲授64学时,实验32学时。课程教学内容要点及建议学时分配:
C语言概述(讲授2学时,实验2学时)(1)C语言的历史背景(2)C语言的特点
(3)简单的C程序介绍(4)C程序的上机步骤 具体教学要求:
①了解C语言的特点及C语言简单程序的构成;
②掌握源程序、目标程序和可执行程序的概念。通过不断练习,达到熟练掌握一种编程环境下的编辑、编译、连接和运行等四阶段的操作命令。数据类型、运算符和表达式(讲授6学时,实验3学时)(5)C的数据类型(6)常量与变量(7)整型数据(8)实型数据(9)字符型数据
计算机系教学大纲
C语言程序设计
(10)变量赋初值
(11)各类数值型数据间的运算(12)算术运算符和算术表达式(13)赋值运算符和赋值表达式(14)逗号运算符和逗号表达式 具体教学要求:
①对C语言提供的数据类型有一全局性的了解; ②掌握C语言的基本数据类型的存储和取值范围;
③掌握各种数据类型的常量和变量的使用及其运算操作;会灵活使用符号常量的定义;
④熟练掌握算术运算符及其表达式,赋值运算符及其表达式和自增自减运算符的使用规则和运算;
⑤掌握运算数类型的自动(隐含)转换和强制(显示)转换规则;能正确判定出运算式的结果的类型;
⑥了解运算符的优先级和结合性。
最简单的C程序设计(讲授5学时,实验3学时)(15)C语句概述
(16)程序的三种基本结构(17)数据输出(18)数据输入(19)程序举例 具体教学要求:
①了解C语言程序的构成及语句的分类;
②理解C语言自顶向下的结构化程序设计方法及特点;
③掌握C语言程序中数据输入、数据输出的常用控制方法,并能灵活运用到程序设计中去;
④能够编写、调试和运行最简单的顺序结构程序。逻辑运算和判断选取控制(讲授5学时,实验3学时)(20)关系运算符和关系表达式(21)逻辑运算符和逻辑表达式(22)IF语句
(23)SWITCH语句(24)程序举例 具体教学要求:
①理解关系运算符、逻辑运算符的功能和作用及其表达式的求值;
②掌握if语句、switch语句的句法、语义和正确使用规则,并在程序中利用计算机系教学大纲
C语言程序设计
它们实现单分支或多分支控制;
③掌握选择结构的基本程序设计方法; ④掌握条件运算符的应用。
循环控制(讲授6学时,实验3学时)(25)概述
(26)GOTO语句以及用GOTO构成循环(27)WHILE语句、DO—WHILE语句(28)FOR语句(29)循环的嵌套
(30)break语句和continue语句 具体教学要求:
①了解goto语句的句法和使用;了解if语句配合goto语句构成的循环结构的缺点;
②掌握for语句、while语句和do-while语句的句法结构和执行过程,会灵活使用它们编写简单循环结构程序,从而在程序中实现单重或多重循环控制;
③掌握正确组织嵌套循环结构的规则;
④理解break、continue语句在循环结构中的不同作用。数组(讲授5学时,实验3学时)(31)一维数组的定义和引用(32)二维数组的定义和引用(33)字符数组
(34)字符数组的输入输出(35)字符串处理函数(36)程序举例 具体教学要求:
①理解数组的基本概念;
②掌握一维数组的定义和数组元素引用的方法,并能用数组解决实际编程问题(如排序问题);
③掌握二维数组的定义和数组元素引用的方法,并能用二维数组解决实际编程问题(如矩阵运算等);
④理解字符数组与字符串的异同;掌握处理字符串相关函数使用规则。函数(讲授8学时,实验3学时)(37)概述
(38)函数定义的一般形式(39)函数参数和函数的值(40)函数的调用
计算机系教学大纲
C语言程序设计
(41)函数的嵌套调用(*)(42)函数的递归调用
(*)(43)数组作为函数参数
(*)(44)局部变量和全局变量
(*)
(45)动态存储变量与静态存储变量
(*)(46)内部函数和外部函数
(*)具体教学要求:
①理解函数在结构化程序设计中的重要作用,掌握C语言中函数分类; ②掌握函数的定义、调用函数和被调用函数的概念及书写规则;
③了解函数形参和实参的特点;掌握在调用时它们的对应规则及参数传递,并能熟练编写具有一定功能的函数;
④理解递归的概念,能编写和阅读简单的递归函数;
⑤掌握局部变量和全局变量的特点和作用域,了解变量存储类型的定义和使用方法;
⑥了解main()函数参数的正确定义与使用。编译预处理(讲授2学时,实验1学时)(47)宏定义(48)文件包含
(49)条件编译
(*)具体教学要求:
①理解编译预处理的功能和作用;
②掌握用#define定义符号常量和宏(包括不带参数和带参数的宏)的编写技术;正确理解宏替换过程和函数的区别;
③掌握文件包含预处理的使用方法和能正确使用.h文件; ④了解条件编译的作用和用法。指针(讲授9学时,实验4学时)(50)指针的概念
(51)变量的指针和指向变量的指针变量(52)数组的指针和指向数组的指针变量(53)字符串的指针和指向字符串的指针变量(54)函数的指针和指向函数的指针变量
(*)(55)返回指针值的函数
(*)
(56)指针数组和指向指针的指针
(*)(57)指针小结 具体教学要求:
①掌握指针变量、指针和地址的概念;
计算机系教学大纲
C语言程序设计
②掌握指针变量的定义和初始化;指针的间接访问的含义;指针的加减运算和指针表达式的应用;
③掌握指针与数组、函数、字符串、自由空间等的联系;
④理解指针数组和多级指针的概念,要求初步掌握二级指针的使用。结构体与共用体(讲授8学时,实验3学时)(58)概述
(59)定义结构体类型变量的方法(60)结构体类型变量的引用(61)结构体变量的初始化(62)结构体数组
(63)指向结构体类型数据的指针
(*)(64)用指针处理链表
(*)(65)共用体
(66)枚举类型
(*)
(67)用typedef定义类型
(*)具体教学要求:
①理解结构体的概念;
②掌握结构体类型变量的定义、引用和初始化; ③掌握结构体数组的定义、初始化和应用;
④了解指向结构体类型对象的指针变量的定义和引用方法; ⑤理解用指针处理链表的基本思想和方法;
⑥理解共用体的概念及其共用体变量的定义和引用方式; ⑦了解枚举类型和typedef的使用方法。位运算(讲授2学时,实验1学时)(**)(68)概述(69)位运算符(70)位运算举例(71)位段
具体教学要求:
①了解位运算的概念及其作用;
②了解数据在计算机中的表示和存在形式(原码、反码、补码); ③掌握常用位运算符的作用及其简单应用; ④了解位段的概念。
文件(讲授5学时,实验3学时)(**)(72)C文件概述(73)文件类型指针
计算机系教学大纲
C语言程序设计
(74)文件的打开和关闭(75)文件的读写(76)文件的定位(77)出错的检测(78)非缓冲文件系统(79)文件输入输出小结 具体教学要求:
①了解文件的概念和C语言对文件处理的基本思想和方法; ②理解文件类型指针的概念;掌握文件类型指针变量的定义;
③掌握文件打开、关闭、读写等操作的相应函数的使用方法,并会利用相应的函数编制出简单的文件访问程序。
常见错误和程序调试(讲授1学时)
(80)常见错误分析(81)程序调试 具体教学要求:
①了解C语言程序常见的错误类型; ②理解其错误原因;
③掌握程序调试的一般步骤。教材和教学参考书:
教材
(82)谭浩强 编《C程序设计(第二版)清华大学出版社(83)谭浩强 编《C程序设计》高职类 电子工业出版社 教学参考书
(84)谭浩强等编《C语言程序设计教程》高等教育出版社(85)钱能 编《C++程序设计》清华大学出版社(86)严蔚敏等编《数据结构(C语言版)》清华大学出版社 课程考试与评估方法:
课程考试与评估方法:本课程考核成绩包括平时成绩和期末考核成绩两大部分。相关事宜具体说明如下:
1、平时成绩是作业、考勤和期中考试三部分的综合成绩。
①平时作业分为练习作业和记分作业,其作业内容可由各任课教师根据教学大纲和实际情况具体划定,但记分作业不得少于四次;
②期中考试由任课教师根据学生学习情况自行命题,自行组织考试。
2、期末考核成绩是笔试成绩与上机实践成绩相结合,由系相关教师统一组织命题及组织考试。
3、总成绩:平时成绩占30%(具体对30%如何划分,可由任课教师根据实计算机系教学大纲
C语言程序设计
际情况决定),期末考核成绩占70%(对70%划分,可各占一半或
6、4划分)。 补充说明:
1、教学内容中凡未作标记的,均为必讲内容。
2、标有(*)的内容可以作为了解部分。
3、标有(**)的内容可不讲。
4、最后内容(80)、(81)可以作为自学部分。
大纲编写修改时间:2004年12月21日
教学大纲编写教师:任国英 计算机系审查教师;王顺利 教务处审查人签字:梁政 分管教学校长签字:田智
第5篇:《C语言程序设计》教学大纲
《C语言程序设计》教学大纲
[课程名称: ] C语言程序设计
[教学时总数:] 36+36 周学时: 讲授:2 上机实践:2(共18周)[课程教材: ] 教科书:C语言程序设计(第二版)(谭浩强 著)(清华大学出版社)参考书:C程序设计教程(谭浩强、薛淑斌、崔武子编著)(清华大学出版社)、C语言习题集与上机指导 [课程的目的与要求] 本课程是为计算机程序设计基础课,其目的是使学生掌握高级语言的编程方法,能用C语言独立编制出解决与本学科相关的科学计算问题的程序。要求学生了解C语言的成分及程序结构,掌握模块化程序设计的编程的技巧,熟悉编程、调试、运行各个环节的方法。[教学内容与学时安排:] 一)C语言程序设计初步(1×2学时)1.程序设计语言介绍。2.用库函数组装C程序。3.设计一些简单的C函数。
二)数据描述与基本操作(2×2学时)1.数据类型与基本操作 2.常量与变量 3.运算符与表达式 4.不同类型数据间的转换 5.数据的输入和输出
三)C语言的流程设计(2×2学时)1.算法的描述与结构化程序设计 2.用C语句描述算法
3.选择型程序设计:if…else、switch 4.循环型程序设计:while、do…while、for 四)模块化程序设计(2×2学时)1. 函数
2. 变量的存储属性 3. 编译预处理 五)数组(3×2学时)1.一维数组
2.二维数组和多维数组 3.字符数组和字符串 六)指针(5学时)1.指针概述 2.指针与数组 3.指针与函数
七)结构体和共用体(5学时)1. 结构体类型概述
2. 结构体类型变量的定义和引用 3. 结构体数组
4. 结构体变量作为函数参数以及返回结构体类型值的函数 5. 共用体的概念和简单例子 6. 用TYPEDEF定义类型 八)位运算(1×2学时)1. 位运算概念
2. 位运算符的使用方法 九)文件(2×2学时)1. 文件的概念 2. 文件的打开与关闭 3. 文件的顺序读写
第6篇:《C语言程序设计》教学大纲
《C语言程序设计》教学大纲
(课程编号)(学分 ,学时 50)
第一部分说明
一、课程的目的与意义
本课程将以结构化程序设计思想指导学习者运用 C 语言进行程序设计,充分利用 C 语言的结构性好,书写格式自由简洁,数据类型丰富,表达式类型多样化,程序执行效率高,可移植性好等特点,使学习者养成严谨的程序设计风格和习惯,在程序设计基本技能方面得到良好的训练,为后继课程的学习及今后的实际应用打下良好的基础。
二、课程的基本要求
1.教学基本要求和学习方法建议 1.1弄清概念、注意实践
学习时一定要模仿例题亲自编制一些实用程序,加强对概念的正确认识。同时要注意上机实践,把不清楚的问题通过上机一一解决。从而不断增加学习兴趣,提高编程能力。
1.2由浅入深、循序渐进
先学习简单的、容易掌握的部分,以后再逐步掌握C语言的精华——指针及各种灵活的表达式。1.3着重语言的使用
由于 C 语言本身比较复杂,应把学习重点放在语言的使用上,即如何正确使用C语言编写程序,而不把重点放在算法的设计上。1.4尽量不涉及太多的硬件知识
C 语言既能编写应用软件,也能编写系统软件,而编写系统软件势必需要一定的硬件知识。在学习本课程时应尽可能地不涉及太多的硬件知识,以便于理解和掌握。1.5忽略非主要细节
不死抠非主要细节,集中精力放在最基本、最常用部分的学习上,待建立一定的基础以后再深入到一些非主要细节的讨论。2.教学的重点、难点
1 重点为学习C语言语句的使用及培养学生程序设计初步认识及软件开发的基本思想。难点为程序设计语言与自然语言之间的区别及程序设计步骤的设计。3.教学计划中前后课程的联系:
C 语言比较复杂、较难掌握,学习者最好有一门计算机语言的基础。C 语言是数据结构、教育技术的基础与工具。5.考试考核方式:平时测验及期末闭卷测试。6.教材编选的原则
选择教育部组编教材或权威的面向21世纪教材
根据我校学生实际和社会发展的实际,对教材中的部分内容进行充实和改革在条件具备的条件下,编写高质量的教材 7.参考书目:
秦玉平马靖善 《C程序设计》 辽宁民族出版社
第二部分讲授大纲
第一章C语言概述
学习目的和要求 了解C语言的特点 课时分配
本章讲授2学时 ⒈C语言功能简介 ⒉TURBO C上级操作指导 ⒊简单的C程序介绍
第二章 基本语法法则
学习目的和要求
熟练掌握几种基本数据类型的存储方式,表示方法。 熟练掌握指针的定义和使用
掌握不同类型间数据转换的原则与方法 熟练掌握有关运算符与表达式的运用。
熟练掌握字符数据输入输出函数、格式输入输出函数的用法 熟练掌握分支语句和循环语句的用法。
掌握宏的定义和使用。教学重点
整型、实型、字符型、指针型数据的定义和使用。 运算符和表达式的运用。
字符数据输入输出函数和格式输入输出函数。
两种分支、三种循环语句的运用。break、continue和goto语句的运用。 宏定义和文件包含。教学难点
指针型数据的定义和使用 格式输入输出函数 两种分支语句
三种循环语句、break、continue和goto语句的运用 宏定义。课时分配
本章讲授21学时 思考题:
高级语言中数据类型适用于数学规定之间的异同,内存地址计算与汇编语言之间的关系。
字符输入时的垃圾字符处理及其必要性。 各种循环语句的区别与联系 1.常量、变量和指针
C语言所提供的各种数据类型的使用规则及注意事项 2.预算符与表达式
各种类型表达式的规则及数据类型要求 3.基本输入输出
程序设计中各种类型数据的输入与输出及注意事项 4.分支语句
C语言所提供选择程序设计语句的使用方法 5.循环语句
重复程序段设计实现的手段 6.编译预处理
3 提高编译效率的处理方式
第三章 数组
学习目的和要求 掌握数组的定义。 掌握数组的初始化。
掌握数组元素的下标法和指针法引用。 掌握字符数组的应用和常用的字符串处理函数。 掌握指针数组的概念和使用。教学重点
数组的定义、初始化和数组元素的引用。教学难点
数组元素的指针法引用,指针数组和二级指针。课时分配
本章讲授8学时 思考题:
数组逻辑位置与物理位置之间的关系 指针引用及使用之间的关系
如何理解多维数组与多级指针之间的关系 1.一维数组及指针
一对一关系数据的存储与地址计算 2.一维字符数组及指针 用一维数组存储字符型数据 3.多维数组及指针
表型数据及更多维数据的存储与地址计算 4.指针数组
数组中数据类型为指针的处理方法 5.二级指针
第四章 函数
学习目的和要求
掌握函数的定义和调用。
4 掌握函数调用时的参数传递方式。 理解变量的存储属性和作用范围。 掌握内部函数和外部函数的定义和使用。教学重点
函数的定义,函数的参数及返回值。 函数的调用。数组名和指针作为函数参数。 局部变量和全局变量。变量的存储类别。教学难点
函数的参数传递及返回值。 指针和数组名作为函数参数。 返回指针值的函数。变量的存储类别。课时分配
本章讲授10学时 思考题:
函数调用与被调用的关系
函数调用格式与函数定义格式之间的关系 1.函数的概述
函数的基本概念及函数定义格式、使用规则 2.主函数与参数传递 主命令行参数的使用 3.辅助函数与参数传递
各种方式函数参数传递方式及有关规定与使用技巧 4.函数的嵌套调用与递归调用
函数内调用函数,递归调用函数中参数传递及使用语法规则 5.函数指针与返回指针的函数 用指针方式传递数据的规则及优点 6.变量的作用域与存储类别
函数中变量定义位置及其作用域之间关系
第五章结构体、共用体和枚举
学习目的和要求:
熟练掌握结构体类型的概念、定义以及结构体变量的定义和引用。
熟练掌握结构体数组和结构体指针变量的定义和使用 掌握链表的概念和应用。
掌握共用体类型的概念、定义以及共用体变量的定义和变量成员的引用。 掌握枚举类型的概念、定义以及枚举变量的定义和引用。教学重点
结构体变量、结构体数组与结构体指针的定义和引用。 结构体变量成员引用的三种形式。教学难点
结构体数组与结构体指针。应用创新
将结构体与数组结合实现二维表格数据的处理 能力培养
通过学习语句理解并掌握记录概念及实现方式,从而培养其实现数据库系统能力 课时分配 本章讲授6学时 思考题
结构体、共用体两种类型的区别 链表方式适合哪些线性表的操作实现
共用体能否像结构体一样使用,如果能应怎样实现 用结构体数组与二维数组实现二维表格之间的区别是什么 函数参数传递中用结构体和结构体指针之间的优劣比较情况 1.结构体类型与变量
结构体类型的定义及变量定义和使用规则 2.结构体数组
结构体与数组类型的结合,使用 3.结构体类型数据的指针 4.链表的基本知识
链表构成、创建、插入、删除、遍历等操作的简单实现 5.结构体位段
特殊结构体的设计及使用 6.共用体类型与变量
6 共用体类型及变量的定义和使用规则 7.枚举类型与变量
枚举类型及变量的定义和使用规则 第六章 文件系统
学习目的和要求
掌握文件和文件指针的概念,掌握文件的打开、关闭和读写等基本操作 教学重点
文件的打开、关闭、读写。教学难点
文件的打开、关闭、读写。
能力培养及应用创新
通过学习C语言的文件命令,实现一个简单文字处理系统 课时分配
本章讲授4学时 思考题
文件是否存在对哪些操作有影响
哪些文件操作命令会改变文件中读写指针位置 1.文件系统概述与文件类型 文件系统相关基本概念及类型设置 2.文件的打开与关闭
文件打开、关闭的命令及相关语法规则 3.文件的读写操作 各种读写文件方式 4.文件定位与随机读写
教学大纲制定者:王丽君
审定者:
渤海大学信息科学与工程学院计算机系
年 月 日
第7篇:《C语言程序设计》教学大纲
《C语言程序设计》教学大纲
课程名称:《程序设计语言(C)》 英文名称:The C Programming Language 课程编码: 学
分: 参考学时:64 实验学时:64
适用专业:计算机专业
一、课程目标及要求
《C语言程序设计》是计算机专业的必修课,是我院计算机专业重点课《程序设计语言》的重要组成之一。学习《C语言程序设计》,应使学生达到以下要求:
1、掌握 C 程序的基本结构和 C 语言基本的数据结构,熟悉 C 程序的编辑、编译、调试和运行过程;
2、了解程序设计的一般方法、结构化程序设计思想,熟悉算法描述工具 N-S 流程图的使用及常用算法;
3、能够熟练地阅读用 C 语言编写的程序;
4、能运用结构化程序设计方法编写 C 程序;
5、能调试、运行程序。
二、课程学习要求
本课程是理论与实践相结合的一门课程。要求学生在学习理论知识的同时,积极上机实践,以达到对理论知识的熟练简明应用。
三、教学预修课程:
计算机文化基础
四、教学重点、难点:
本课程的重点是C的基本数据类型及运算、分支结构和循环结构、数组、函数、指针以及结构体的使用。
难点是函数的调用,指针及结构体的使用。
五、教学方法:
理论讲授与实践相结合。
六、教学内容与学时分配建议
(一)总课时数
总课时数为:64*2=128学时,其中,理论为:32+32=64学时;实验:32+32=64学时。
(二)教学内容及课时分配
1.C 语言的结构(2 学时)
(1)程序的构成,main 函数和其他函数。
(2)头文件、数据说明、函数的开始和结束标志。
(3)源程序的书写格式。
(4)C 语言的风格。
(5)程序的编辑、编译、连接步骤及 TURBO C 环境。
实验一
c程序的运行环境和运行一个c程序的方法(2学时)
2. C 数据类型及各种表达式(4 学时)
(1)C 的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。
(2)C 运算符的种类、运算优先级和结合性。
(3)不同类型数据间的转换与运算。
(4)C 表达式类型(赋值表达、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则。
实验二
数据类型、运算符和表达式(2学时)
3.算法与顺序程序设计(4 学时)(1)算法的概念、特性、算法的描述。
(2)常用算法。
(3)表达式语句、空语句、复合语句。
(4)数据的输入与输出,输入输出函数的调用。
实验三
顺序结构的程序设计(4学时)
4.选择结构程序设计(4 学时)(1)用 if 语句实现选择结构。
(2)用 switch 语句实现多分支选择结构。
(3)选择结构的嵌套。
实验四 选择结构的程序设计(6学时)
5.循环结构程序设计(6 学时)(1)for 循环结构。
(2)while 和 do while 循环结构。
(3)continue 语句和 break 语句。
(4)循环的嵌套。
实验五 循环结构的程序设计(6学时)
6.数组(6 学时)
(1)一维数组的定义、初始化和引用。
(2)二维数组的定义、初始化和引用。(3)字符串与字符数组。
实验六
数组(6学时)
7.函数(6 学时)
(1)库函数的正确调用。
(2)函数的定义方法。
(3)函数的类型和返回值。
(4)形式参数与实在参数,参数值的传递。
(5)函数的嵌套调用和递归调用。
(6)局部变量和全局变量。
(7)变量的存储类别(自动、静态、寄存器、外部),变量的作用域和生存期。
(8)内部函数与外部函数。
实验七
函数(6学时)
8.编译预处理(建议穿插在各章中讲)(4学时)(1)宏定义:不带参数的宏定义;带参数的宏定义。
(2)“ 文件包含”处理
实验八
编译预处理(4学时)
9.指针(10 学时)
(1)指针与指针变量的概念,指针与地址运算符。
(2)变量、数组、字符串的指针及指向变量、数组、字符串的指针变量。通过指针引用以上各类型数据。
(3)用指针作函数参数。
(4)返回指针的函数。
(5)指针数组,指向指针的指针,main 函数的命令行参数。
实验九
指针(10学时)
10.结构体与共用体(10 学时)
(1)结构体的定义、初始化、引用
(2)结构体数组及结构体数组成员的访问(3)结构体类型的指针(4)结构体型与函数(5)结构体处理链表(6)共用体(7)枚举类型
(8)用Typedef定义类型
实验十
结构体与共用体(10学时)
11.位运算(4 学时)
(1)位运算符的含义及使用。
(2)简单的位运算。
实验十一位运算(4学时)
12.文件操作(4 学时)只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。
(1)文件类型指针(FILE 类型指针)。
(2)文件的打开与关闭函数(fopen,fclose)。
(3)文件的读写函数(fputc,fgetc,fputs,fread,fwrite,fprintf,fscanf 函数),文件的定位(rewind,fseek 函数)。
实验十二文件(4学时)
七、教学参考书目:
1.常玉龙等 《Turbo C 2.0实用大全》 北京航空航天大学出版社 1994 2.谭浩强 《C语言程序设计》第二版 清华大学出版社 1999 3.王丽娟 徐军 戴宝华 荣政 《C程序设计》 西安电子科技大学出版社 2000 4.田淑清等 《C语言程序设计辅导与习题集》 中国铁道出版社 2000 5.谭浩强 薛淑斌 崔武子 《C程序设计(二级)教程》 清华大学出版社 2001 6.崔培伟 《C/C++语言程序设计》 石油大学出版社 2001 7.谭浩强 《C语言程序设计》 清华大学出版社 2002 8.陈朔鹰 陈英 《C语言程序设计习题集(第二版)》人民邮电出版社 2003 9.朱连章等 高级实用程序设计(Visual C++)石油大学出版社 2003 10.方** 宋世发 汤钦林 李太芳 《C语言程序设计》 地质出版社 2006
制 定: 计算机基础及技能教研室 执 笔 人: 冯建平审 定 人: 旭 日 制定时间: 2007年3月