第一篇:C语言程序设计学习指导(第2版) 1-6
第一章 概述
一、选择
1.C 2.B 3.C 4.D 5.D 6.A 7.B 8.C 9.A 10.B 11.C 12.D 13.B 14.B
第二章 数据类型
一、选择
1.D 2.A 3.C 4.D 5.A 6.B 7.A 8.B 9.A 10.D 11.B 12.C 13.C 14.D 15.C 16.B 17.D 18.A 19.C 20.B 21.B 22.D 23.A 24.B 25.B 26.B 27.C
第三章 运算符和表达式
一、选择
1.A 2.D 3.D 4.D 5.D 6.A 7.C 8.C 9.B 10.B 11.C 12.C 13.A 14.A 15.A 16.A 17.B 18.C 19.C 20.D 21.A 22.A 23.C 24.C 25.A 26.B 27.D 28.A 29.B 30.C 31.D 32.D 33.D 34.B 35.A 36.A 37.B 38.C 39.D 40.B 41.B 42.C 43.B
第四章 输入和输出
一、选择
1.C 2.D 3.C 4.C 5.C 6.B 7.B 8.C 9.D 10.D 11.D 12.D 13.B 14.A 15.B 16.B
二、编程
1.double fun(double m){ float n;n=(5.0/9.0)*(m-32);return n;}
2.char fun(char c){c=c+32;return c;}
3.double fun(int m){ double y=0;y=sin(m)*10;return(y);} 4.float fun(float h){return(long)(h * 100 + 0.5)/ 100.0;}
第五章 选择结构
一、选择 1.D 2.B 3.A 4.C 5.C 6.B 7.B 8.A 9.C 10.C 11.D 12.A 13.D 14.A 15.A 16.B 17.D 18.C 19.A 20.A 21.A 22.B 23.A 24.D
二、编程
1.int fun(int n){ int bw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10;if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return 1;else return 0;} 2.double y(float x){double z;if(x>10)z=exp(x);else if(x>-3)z=log(x+3);else z=sin(x)/(cos(x)+4);return(z);} 3.int fun(int x){ int k;k=x*x;if((k%10==x)||(k%100==x))return 1;else return 0;}
第六章 循环结构
一、选择
1.C 2.A 3.A 4.B 5.C 6.B 7.C 8.A 9.D 10.B 11.A 12.C 13.C 14.A 15.D 16.D 17.D 18.A 19.C 20.A 21.C 22.B 23.B 24.C 25.A 26.D
二、填空
1.位置 1:r!=0 【或】 0!=r 【或】 r 位置 2:r=m%n 【或】 r=m-m/n*n 位置 3:n 位置 4:gcd,lcm 【或】 n,lcm 2.位置 1:k=0 位置 2:n%10 【或】 n-n/10*10 【或】 n-10*(n/10)位置 3:while(n>0)【或】 while(0
三、改错
1.位置 1:#include “math.h” 【或】 #include
四、编程
1.int fun(int n){ int d,s=0;while(n>0){d=n%10;s+=d*d*d;n/=10;} return s;} 2.int fun(int n){ int i,s=0;for(i=2;i
第二篇:C语言程序设计学习探讨
C语言程序设计学习探讨
罗××
(湖南理工学院物电学院电子09-2BF班,学号14092500×××,序号003,湖南 岳阳 414000)
摘要:本文对c语言的难点、学习方法等方面作了简要的介绍,并谈到了一些个人的学习心得,仅供参考。
关键字:C语言;程序结构;指针;心得体会
A Study of the Learning of C Language Program Design
Luo × ×
(Hunan Institute of Science and Technology, school of Physics and Electronics, Yueyang,Hunan, China 414000)
Abstract: In this paper,C language's difficulties, learning methods are briefly introduced
and describes some of the personal learning experience, for reference only.Key words: C language;program structure;pointer;feelings and experience
C语言是在国内外广泛使用的一种计算机语言,它具有功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性高等特点,但由于c语言牵涉的概念比较复杂,规则繁多,使用灵活,容易出错,不少初学者感到困难。在此
本人谈谈自己的体会和见解。1我的C语言基础分析
通过上学期所开设的《c语言程序设计》课程的学习,我对c语言有了初步的认
识和理解,对数据的结构和存储方式、程序设计的语法算法以及程序的调试都具备了一定的理论基础。通过上机亲自编写和调试小程序,掌握编程的常见方法和步骤,我的实践能力也得到了不少的提高。但总的来说,我的基础还是比较薄弱的,我希望通过下一阶段的学习得到更大的提高。
2C语言的学习难点
就个人而言,我觉得c语言学习的难点在于逻辑算法和结构控制。我自己在编
程的时候常常是知道如何用数学方式表达出来,但要转化成程序设计语言就比较困难,其一是因为表达式的语法规则繁多运用不如自然语言的语法得心应手导致出现很多错误,其二是因为对逻辑思维的要求较高,要实现一个程序功能,其流程控制显得比较难,一个小小的步骤不能实现就会使整个程序编写寸步难行。所以多做编程练习显得尤其重要,这也是真正提高编程水平的最根本的方法。
3指针的学习心得体会
指针是c语言的一个特色,也是c语言学习中最难掌握的部分,一是因为它的抽象性,二是因为它的灵活性。通过指针的运用可以实现用其他语句所不能实现的功能,它也可以使程序变得简洁、紧凑、高效。指针既是地址,它牵涉到数据的存
储和访问方式,这往往是比较隐晦的,若还和数组及函数等结合更让人费解,比如
说如何理解“指向指针的指针”。指针变量的灵活运用也是个比较难掌握的的技能,我在使用它的时候通常都画出它在内存中的示意图,以便能清晰看到它的运算和引
用过程,这对加强初学者对指针的运作机制的理解是很有帮助的。
4对教师教学的建议
梅老师授课很细致认真,对知识点的细节问题尤其讲得很透彻,使我们对c语
言的理论知识的全面掌握很有帮助。但我们最缺少的是上机实践,以前在上机课上,我们遇到的困难和问题往往不能立即得到老师的指导,课后往往就不会再去仔细钻
研它们,这使得我们的问题累积得越来越多,所以希望老师能把理论和实践很好的结合起来,才能高效迅速提高我们的编程水平。
5总结本学期C语言学习的收获
本学期通过仔细听了梅老师的每一节课,首先在c语言理论学习上又更进了一
层楼,以前很模糊的概念、不太重视的细节问题和杂乱的知识体系现在都很清晰明
了了,其次对程序设计语言的结构和特点有了更好的理性认识,至少不会再犯一些
低级的语法错误。最重要的是学到了程序设计的思想以及思维方式,这对于我们的学习、工作、生活各个方面都是有帮助的,使得我们在处理其它事务时也能有个清
晰的逻辑思维和程序化的处理方法。
参考文献
[1] 谭浩强著.C程序设计(第三版).北京:清华大学出版社,2005
[2] 李丽娟,马淑萍主编.C语言程序设计(第二版).北京:中国铁道出版社,2009
作者简介:罗××(1991-),男,湖南衡阳人,湖南理工学院物电学院本科学生,主要研究方向
为电子技术。
第三篇:第1章 程序设计和C语言
第1章 程序设计和C语言
C语言版本很多,标准C、ANSI C、微软的C。这些C彼此之间会有小的区别。我们上课以微软的C为主。
编程环境:Visual C++ 6.0
1.1 什么是计算机程序
2.5 结构化程序设计方法
在60年代之间,编程很混乱,特别地,在许多的编程语言中有大量的Goto语句。
结构化程序设计强调程序设计风格、程序结构规范化,提倡清晰的结构。具体地说:
1)自顶向下;
2)逐步细化;
3)模块化设计;
4)结构化编码;
5)适当注释
更多的结构化程序设计思想在《软件工程》课程中介绍。但是,现在又有许多的新的思想,如面向对象程序设计思想等。
第四篇:C语言程序设计 ( 第3次 )
第3次作业
一、程序阅读题(本大题共50分,共 5 小题,每小题 10 分)1.#include
2.(写出下面程序执行的结果)#include
char c,str[]=“SSSWILTCH22223WALL”;int k;for(k=2;(c=str[k])!=' ';k++){ switch(c){ case 'A': putchar('a');continue;case '2': break;case 2: while((c=str[k++])!='2'&&c!=' ');case 'T': putchar('*');case 'L': continue;default: putchar(c);continue;} putchar('#');} printf(“n”);return 0;}
4.(写出下面程序执行的结果)#include
return 0;} 5.(写出下面程序执行的结果)#include
二、程序设计题(本大题共40分,共 5 小题,每小题 8 分)
1.编程序实现功能:将一个10行5列数组a每一行中最大值取出存放到一个一维数组b中,输出数组a和数组b的值,要求所有数组操作通过两种以上的指针方式表示。
2.编写程序实现功能:分别统计键盘输入流上接收字符串中每种数字字符的个数,要求使用数组表示所有计数器集合,并且在数组的下标表达式中使用枚举型数据。
3.编程序实现功能:求出在1~1000之间的整数中能同时被3、5、7整除的数,输出满足条件的数以及它们的和。
4.编程序实现华氏温度到摄氏温度的转换,其转换公式是:,式中f表示华氏温度,c表示摄氏温度。5.编写一个递归函数计算Hermite多项式,Hn(x)定义为:
三、填空题(本大题共10分,共 5 小题,每小题 2 分)1.下面程序的功能是:求两个实数之和的平方根,请选择合适选项填空完成程序。
#include
printf(“%lfn”,sqrt(a+b));return 0;} A string.h B stdlib.h C math.h D mathematics.h 2.下面程序的功能是:挑选输入流中的数字字符按序组成整数(例如输入流为ab3c5g8,获取的整数为358), 请选择合适选项填空完成程序。#include
D c>'0'||c<'9'
3.下面程序的功能是:求从键盘输入的3个整数之和。请选择合适选项填空完成程序。
#include
#include
if((fpt= ①)==NULL){ printf(”Can't open file %sn“,fn);return-1;} gets(str);fwrite(str,sizeof(char),strlen(str),fpt);fseek(②);fread(str1,sizeof(char),strlen(str),fpt);if(strcmp(str,str1)==0)printf(”OKn“);else printf(”ERRORn“);puts(str1);fclose(fpt);return 0;} A fopen(fn,”w+“)B fpt,-1*strlen(str),SEEK_CUR C fpt,-1*strlen(str),SEEK_END D fopen(fn,”r+“))5.下面程序的功能是:取出变量a从右端开始的4~7位,存放到变量d中并输出。请选择合适选项填空完成程序。
#include
答案:
一、程序阅读题(50分,共 5 题,每小题 10 分)
1.参考答案: n=24.00
解题方案:
评分标准:
2.参考答案: 5 解题方案:
评分标准:
3.参考答案: SWI*CH#*Wa
解题方案:
评分标准:
4.参考答案:
aa bb cc abc A J
解题方案:
评分标准:
5.参考答案: 0,0,0,0 2,2,-3,3 1,1,-3,3 0,0,0,3
解题方案:
评分标准:
二、程序设计题(40分,共 5 题,每小题 8 分)
1.参考答案: #include
for(j=0;j<5;j++)printf(”%4d“,a[i][j]);printf(”t%4dn“,b[i]);} return 0;}
解题方案:
评分标准:
2.参考答案: #include
{ if(*p>='0'&&*p<='9')counter[nu+*p-'0']++;p++;} for(i=0;i<10;i++)printf(”%4d“,counter[i]);printf(”n“);return 0;}
解题方案:
评分标准:
3.参考答案: #include
printf(”nsum=%dn“,sum);return 0;}
解题方案:
评分标准:
4.参考答案:
#include
解题方案:
评分标准:
5.参考答案: #include
scanf(”%lf,%d“,&x,&n);printf(”H(%d,%lf)=%lfn",n,x,H(n,x));return 0;} double H(int n,double x){ if(n==0)return 1;else if(n==1)return 2*x;else return 2*x*H(n-1,x)-2*(n-1)*H(n-2,x);}
解题方案:
评分标准:
三、填空题(10分,共 5 题,每小题 2 分)
1.参考答案: C 解题方案:
评分标准:
2.参考答案: A 解题方案:
评分标准:
3.参考答案: ① D ② A
解题方案:
评分标准:
4.参考答案: ① A ② B
解题方案:
评分标准:
5.参考答案: D 解题方案:
评分标准:
第五篇:C语言程序设计学习指导第二版 答案
第一章
一、1.C 2.B 3.C 4.C 5.D 6.A 7.B 8.C 9.A 10.D 11.B 12.C 13.A 14.D 15.B 16.B
第二章
一、1.D 2.A 3.C 4.D 5.A 6.B 7.A 8.B 9.A 10.D 11.B 12.C 13.C 14.D 15.C 16.B 17.D 18.A 19.C 20.B 21.B 22.D 23.A 24.B 25.B 26.B 27.B
第三章
一、1.D 2.C 3.A 4.C 5.A 6.C 7.C 8.D 9.A 10.D 11.A13.C 14.C 15.A 16.B 17.A 18.A 19.C 20.A 21.B 22.D 23.B 24.B 25.D 26.D 27.C 28.C
第四章
一、1.B 2.C 3.D 4.D 5.D 6.C 7.B 8.D 9.C 10.D 11.B 12.A 13.C 14.C 15.B 16.AB 17.D
二、1.double fun(int m){ double y=0;y=sin(m)*10;return(y);} 2.float fun(float h){return(long)(h * 100 + 0.5)/ 100.0;}
3.double fun(double m){ float n;n=(5.0/9.0)*(m-32);return n;}
4.char fun(char c){c=c+32;return c;}
(14 6f)12.B 第五章
一、1.D 2.C 3.C 4.C 5.A 6.A 7.C 8.A 9.B 10.B 11.A 12.B 13.C 14.C 15.D 16.A 17.D 18.A 19.A 20.A 21.B 22.D 23.C 24.B 25.D
二、1.int fun(int n){ int bw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10;if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return 1;else return 0;} 2.float fun(float x){float y;if(x<0 && x!=-3.0)y=x*x+x+6;else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)y=x*x-5*x+6;else y=x*x-x-1;return y;} 3.double y(float x){double z;if(x>10)z=exp(x);else if(x>-3)z=log(x+3);else z=sin(x)/(cos(x)+4);return(z);} 4.int fun(int x){ int k;k=x*x;if((k%10==x)||(k%100==x))return 1;else return 0;}
第六章
一、1.C 2.C 3.D 4.B 5.C 6.A 7.A 8.A 9.D 10.A 11.D 12.C 13.C 14.C 15.C 16.A 17.A 18.B 19.A 20.D 21.B 22.C 23.C 24.D 25.B 26.B 27.C 28.A
二、1.位置 1:r!=0 【或】 0!=r 【或】 r 位置 2:r=m%n 【或】 r=m-m/n*n 位置 3:n 位置 4:gcd,lcm 【或】 n,lcm 2.位置 1:k=0 位置 2:n%10 【或】 n-n/10*10 【或】 n-10*(n/10)位置 3:while(n>0)【或】 while(0
三、1.位置 1:#include “math.h” 【或】 #include
四、1.int fun(int n){ int d,s=0;while(n>0){d=n%10;s+=d*d*d;n/=10;} return s;} 2.int fun(int n){ int i,s=0;for(i=2;i
第七章
一、1.A 2.D 3.C 4.B 5.B 6.D 7.B 8.C 9.B 10.B 11.D 12.B 13.B 14.A 15.C 16.A 17.C 18.A 19.B 20.C 21.D 22.A 23.A 24.D 25.A 26.D 27.A 28.D 29.B 30.C 31.A 32.D 33.D 34.C 35.A 36.B 37.C 38.A 39.A 40.B 41.D 42.B 43.A 44.C 45.A
二、1.位置 1: break;位置2:i-1;位置3:c;2.位置1:sqrt(n)【或】n/2【或】n-1 位置2:n%i==0 位置3:k/10 位置4:prime_pal(j)3.位置1:n<10【或】10>n 位置2:sqrt(high)【或】high/2 位置3:high%j == 0【或】!(high%j)位置4:return sum【或】return(sum)4.位置 1:k=0 位置 2:j=m%10 【或】 j=m-m/10*10 【或】 j=m-10*(m/10)位置 3:return(1)位置 4:fun(i)
三、1.位置1:scanf(“%d”,&n);位置2:double fun(int n)位置3:for(i=1;i<=n;i++)【或】for(i=1;n>=i;i++)【或】for(i=1;i
四、1.int fun(int n){ int i,k;for(i=n+1;;i++){ for(k=2;k0.000001){x0=x1;x1=cos(x0);} return((float)x0);}
第八章
一、1.B 2.D 3.D 4.A 5.B 6.A 7.C 8.B 9.D 10.A 11.A 12.C 13.AB 14.D 15.A 16.B 17.D 18.B 19.D 20.A 21.D 22.B 23.B 24.D 25.D 26.C 27.D 28.D
二、1.位置1:t=a[5];【或】t=a[5] 位置2:a[i]=a[i-1];【或】a[i]=a[i-1] 2.位置1:i+1【或】1+i 位置2:a[j]a[j]【或】a[min_loc]>=a[j] 位置3:i!=min_loc【或】min_loc!=i 3.位置1:max=a[0] 位置2:max=a[j] 4.位置1:&a[i]【或】a+i 位置2:a[i]==x【或】x==a[i] 位置3:!=【或】< 5.位置1:jmax=N-1【或】jmax=9 位置2:a[j]>a[j+1]【或】a[j+1]x[0] 7.位置1:high=mid-1: 位置2:low=mid+1: 位置3:a,m 8.位置 1:a[i][i]=1 位置 2:i 位置 3:a[i-1][j]+a[i-1][j-1] 【或】 a[i-1][j-1]+a[i-1][j] 位置 4:j<=i 【或】 i>=j 【或】 jj 【或】 j-1j-1 9.位置 1:i==j||i+j==6 【或】 j==i||i+j==6 【或】 i==j||j+i==6 【或】 j==i||j+i==6 【或】 i==j||6==i+j 【或】 j==i||6==i+j 【或】 i==j||6==j+i 【或】 j==i||6==j+i 位置 2:a[i][j]=2 位置 3:i 三、1.位置1:#include 四、1.void fun(int n,int a[]){ int i=3;while(n!=0){ a[i--]=n%10;n=n/10;} } 2.int fun(int a[M][M]){ int s=0;int i,j;for(i=0;i for(i=0;i<3;i++)for(j=0;j<3;j++)array[i][j]=b[i][j];} 10.void fun(int a[][N], int n){int i,j;for(i=0;i a[i][j]*=n;} 11.void fun(int arr[],int n){int i,t;for(i=0;i w[j-1]=w[j];} w[n-1]=ch;}} 15.double fun(int w[][N]){ int i,j,count=0;double average,sum=0.0;for(i=0;i 第九章 一、1.B 2.A 3.C 4.D 5.A 6.B 7.B 8.D 9.D 10.C 11.A 12.C 13.C 14.D 15.A 16.B 17.C 18.D 19.B 20.A 21.C 22.D 23.D 24.D 25.D(题目修改为能进行交换)26.A 27.A 28.B 29.B 30.B 31.B 32.B 33.C 34.A 35.C 36.B 37.A 二、1.位置 1:fun(char *p)【或】 fun(char p[])【或】 void fun(char p[])【或】 void fun(char *p)位置 2:while(*p!=' ')【或】 while(*p)位置 3:k=1;位置 4:p++;【或】 p=1+p;【或】 ++p;【或】 p=p+1;【或】 p+=1;2.位置 1:int fun(int *a,int *b,int n)位置 2:*b=c-a;位置 3:scanf(“%d”,&a[i]);【或】 scanf(“%d”, a + i);位置 4:max=fun(a,&p,N);3.位置 1:scanf(“%d”,p★++);【或】 scanf(“%d”,arr[i]);【或】 scanf(“%d”,p+i);【或】 scanf(“%d”,arr+i);位置 2:if(*p>*max)【或】 if(*max<*p)位置 3:if(max==arr)【或】 if(arr==max)位置 4:for(i=0;i 三、1.int fun(int *s, int t, int *k){ int max_integer=0;int i=0;max_integer = s[0];for(i=0;i if(max_integer max_integer=s[i]; *k=i; } } return *k;} 2.float fun(float *a,int n){ int i;float average;double sum=0;for(i=0;i { int x,y;for(x=0;x<100;x++)*(b+x)=0;for(x=0;x b[x*M+y]=*(s[y]+x);} 第十章 一、1.B 2.B 3.C 4.C 5.A 6.B 7.C 8.D 9.B 10.C 11.C 12.A 13.C 14.C 15.D 16.B 17.D 18.C 19.B 20.B 21.B 22.B 23.C 24.C 25.D 26.B 27.C 28.C 29.D 30.D 31.A 32.D 33.D 34.A 35.C 36.C 37.C 二、1.位置1:!(*p==' '&& *q==' ')【或】*p!=' '|| *q!=' '【或】!(*p==0&& *q==0)【或】*p!=0|| *q!=0【或】*p|| *q【或】!(*p&& *q')位置2:*p< *q【或】*p<= *q【或】*q>*p【或】*q>=*p 位置3:k++【或】++k【或】k=k+1 2.位置 1:p1=str1+m 【或】 p1=m+str1 位置 2:*p2++=*p1++ 【或】 *(p2++)=*(p1++)【或】 *p2=*p1,p2++,p1++ 【或】*p2=*p1++,p2++ 【或】 *p2++=*p1,p1++ 位置 3:*p2=' ' 【或】 *p2=0 【或】 *p2=NULL 位置 4:strcopy(str1,str2,m)3.位置 1:j=strlen(s1)【或】 for(j=0;s1[j]!='10';j++);【或】 for(j=0;s1[j];j++);位置 2:s2[i]!= 【或】 *(s2+i)!= 【或】 *(i+s2)!= 位置 3:' ' 【或】 NULL 【或】 0 位置 4:JOIN(str1,str2)4.位置 1:str1 位置 2:i 三、1.位置1:void fun(char s[],char t[])【或】void fun(char *s,char *t)位置2:d = strlen(s);位置3:for(i = 0;i 四、1.int i;for(i=0;str[i]!=' ';i++)if(str[i]>='a' && str[i]<='z')str[i]=str[i]-32;2.void copy(char str1[],char str2[]){ int i;for(i=0;str1[i]!=' ';i++)str2[i]=str1[i];str2[i]=' ';} 3.void len_cat(char c1[],char c2[]){int i,j;for(i=0;c1[i]!=' ';i++);for(j=0;c2[j]!=' ';j++)c1[i+j]=c2[j];c1[i+j]=' ';} 4.void fun(char *s,int num){ int i,j;char t;for(i=0;i