当前位置:文档之家› C程序设计谭浩强(第三版)指针参考答案

C程序设计谭浩强(第三版)指针参考答案

C程序设计谭浩强(第三版)指针参考答案
C程序设计谭浩强(第三版)指针参考答案

C语言程序设计

(第三版)

谭浩强

第10章指针参考答案

【知识要点】

简单地说指针就是地址。

一个变量可以通过变量的名称进行访问,也可以通过该变量的指针进行访问。

?直接访问:变量的存取就是对相应存储单元的存取。

?间接访问:通过指针变量来存取。如图将变量m的地址存放在另一变量p中,通过指针变量p来访问变量m。

若已定义,int i=10,*p; 要使指针变量指向整型变量i,则需将整型变量的地址赋给指针变量,即p=&i。如图所示

图指针运算符的运算

i:整型变量,其值为10。

&i:整型变量i的地址,内存编号2000。

p:指针变量,它的内容是地址量,整型变量i的地址2000。

*p:指针指向整型变量i的值,其值为10。

&p:指针变量占用内存的首地址,内存编号2004。

由此可存在下列等价关系:

p&i &(*p),i *p*(&i)

本章重点与难点:指针与一维数组,指针与字符串,指针与多维数组。

【指针与一维数组】

若已有定义:int a[5],*p=a;

?p+i与a+i等价,是a[i]的地址,即等价于&a[i]。

?*(p+i)或*(a+i)为p+i或a+i所指向的数组元素,即*(p+i)、*(a+i)和a[i]三者等价。

?指向数组元素的指针,也可以表示成数组的形式,也就是说,指针变量可带下标,即p[i]与*(p+i)等价。

【指针与二维数组】

若有定义:int a[3][4];

该二维数组a可看成为数组元素为a[0],a[1],a[2]的一维数组,而每个数组元素又为含有四个数组元素的一维数组的首地址。由此二维数组的数组名a为二级数组指针,如图所示。

图二维数组a[3][4]的二维表示

说明:

?数组名为a[i]的数组元素分别为:a[i][0]、a[i][1]、a[i][2]、a[i][3],a[i]为首地址,即a[i]等价于&a[i][0]。

?a[i]+j 表示第i行第j列的数组元素的地址,即等价于&a[i][j]。

?a是二维数组的首地址,也是数组元素分别为{a[0],a[1],a[2]}的一维数组的首地址,a+i表示该数组中第i个数组元素的地址,即a、&a[0]、a[0]、&a[0][0]都

表示同一存储单元,a+i等价于a[i]。

?&a[i]、a[i]是等同的。因为在二维数组中不能把&a[i]理解为元素a[i]的地址,不存在元素a[i]。C语言规定,它是一种地址计算方法,表示数组a第i行首地址。由

此,a[i],&a[i]、*(a+i)和a+i都是等价的。

由上所述,a[i]、*(a+i)和&a[i][0]是等价的。a[i]+j、*(a+i)+j和&a[i][j]是等价的。*(a[i]+j)、*(*(a+i)+j)和a[i][j]是等价的。

二维数组名a实现a+i运算时,按行移动,移动到二维数组的第i行,因此称为行指针,数组指针a[i]实现a[i]+j运算时,按列移动,移动到第i行的第j列,因此称为列指针。

数组指针是常量,不能实现++运算。如a++、a[0]++都是错误运算。

若已有定义:

int a[3][4],(*p)[4];

二维数组a包含以a[0],a[1],a[2]为首地址的一维数组,且包含4个数组元素,指针变量

p,是指向包含4个数组元素的一维数组。

若有赋值p=a,则存在以下的等价关系:

?p等价于a、a[0]或&a[0][0]。

?p+i则指向一维数组a[i],等价于a+i。

?*(p+i)+j是二维数组第i行第j列的元素的地址,

*(p+i)+j *(a+i)+j a[i]+j &a[i][j]。

?*(*(p+i)+j)是二维数组第i行第j列数组元素的值,

*(*(p+i)+j) *(*(a+i)+j) *(a[i]+j) a[i][j]。注意指针的定义说明:

1.int *p; 简单指针变量。

2.int (*p)[4]; 该指针变量指向长度为4的一维数组。

3.int *p[4]; 指针数组。

4.int (*p)(); 该指针变量指向函数的入口地址。

5.int *p(); 指针函数。

6.int **p; 指向指针的指针变量。

【习题参考答案】

10.1输入3个整数,按由小到大的顺序输出。

#include

void swap (int * p1,int * p2)

{int p;

p=* p1;* p1= * p2;* p2=p;

}

void main ( )

{int n1,n2,n3;

printf(“Input three int n1,n2,n3:”);

scanf(“%d%d%d”,&n1,&n2,&n3);

printf(“%d,%d,%d\n”,n1,n2,n3);

if (n1>n2) swap (&n1,&n2);

if (n1>n3) swap (&n1,&n3);

if (n2>n3) swap (&n2,&n3);

printf(“sort:%d,%d,%d\n”,n1,n2,n3);

}

10.2输入3个字符串,按由小到大的顺序输出。

【解析】多个字符串的处理方法:一是二维数组,二是指针数组或指向一维数组的指针变量。

#include

#include

#define N 3

void swap(char (*p)[80]) /* 利用擂台法排序实现*/

{ int i,j;

char ch[60];

for(i=0;i

for(j=i+1;j

if(strcmp(*(p+i),*(p+j))>0)

{ strcpy(ch,*(p+i));

strcpy(*(p+i),*(p+j));

strcpy(*(p+j),ch);

}

}

void main ( )

{char str[N][80];

int i;

printf("Input three string\n");

for(i=0;i

gets(str[i]);

swap(str);

for(i=0;i

puts(str[i]);

}

10.3输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。

解:

#include

#define N 10

void input(int a[]) /* 输入10个数的函数*/

{ int i;

printf(“Input 10 number:”);

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

scanf(“%d”,&a[i]);/* 以数组的方法输出*/

}

void max_min_swap(int a[]) /* 按题意交换函数*/

{int *max,*min, * p;

max=min=a;

for (p=a+1;p

if (*p> * max) max=p; /* 将大数地址赋给max,记住最大数的位置*/

else if (* p<* min) min=p; /* 将小数地址赋给min ,记住最小数的位置*/

* p=a[0];a[0]=*min;*min=*p; /*将最小数与第一个数交换*/

* p=a[9];a[9]=*max;*max=*p; /*将最大数与最后一个数交换*/ }

void output(int a[10]) /* 输出函数*/

{ int * p;

printf(“swap after:\n”);

for (p=a;p

printf(“%4d”,*p);/* 以指针的方法输出*/

}

void main ( )

{int a[10];

input(a);

max_min_swap(a);

output(a);

}

10.4有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。

#include

#define N 10

void move(int *p,int n,int m) /*后移(右移)一次的函数*/

{int *q,num;

num=*(p+n-1); /* num该变量存储每次移动时最后一个数*/

for (q=p+n-1;q>p;q--)

*q = *(q-1); /*利用指针实现数组所有元素右移*/ *p=num;

m--;

if (m>0) move(p,n,m); /* 递归调用,当右移的数m为0时,停止调用*/

}

void main ( )

{ int a[N],n,m,i;

printf(“Input n (n<%d) and m(m

scanf(“%d%d”,&n,&m);

printf(“\n Input %d numbers:\n”,n);

for (i=0;i

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

printf(“\nMove before:\n”);

for (i=0;i

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

move(a,n,m);

printf(“\nMove after:\n”);

for (i=0;i

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

}

10.5有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

#include

#include

#define N 50 /*参加游戏的最多人数*/

int find(int *p,int n)

{ int i=1,j=1,m=0,ok=0; /*ok最后留下的人的号*/

while(j

{

if(*(p+i)!=0) m++;

if(m==3) /*当报到3时,该对应值清0,并重新从1报起和报过

{ 人的总数加1 。*/

*(p+i)=0;

m=0;

j++;

}

i++;

if(i==n+1) i=1; /*当报到最后一位时,从头报起*/

}

i=1;

while(i<=n)

if(p[i++]!=0) ok=i; /*找出不为0的号*/

return ok-1;

}

void main()

{

int i,k,n,num[N];

system("cls"); /*清屏函数,需与加头文件#include */

printf("please input the total of numbers(<%d):",N);

scanf("%d",&n);

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

num[i]=i; /*对相应的人进行按下标编号*/

k=find(num,n) ;

printf("%d is left\n",k);

}

10.6写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。

#include

#include

int strlenght(char *p)

{

int num=0;

while(*p++!='\0')

num++;

return num;

}

void main()

{

char str[80];

int len;

system("cls");

printf("please input string:\n");

gets(str);

len=strlenght(str);

printf("string:%s lenght:%d\n",str,len);

getch();

}

10.7有一字符串,包含n个字符。写一个函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

#include

#include

str_copy(char * p1,char * p2,int m)

{

int n;

p1=p1+m;

while (*p1!='\0')

*p2++= *p1++;

*p2=’\0’;/*形成的新串需加字符串结束标志*/

}

void main ( )

{ int m;

char *str1, *str2;

printf(“input original string:\n”);

gets(str1);

printf(“Input m (m<%d):\n”,strlen(str1));

scanf(“%d”,&m);

str_copy(str1,str2,m);

printf(“\ncopy result:%s”,str2);

}

10.8输入一行文字,找出其中大写字母,小写字母,空格,数字及其他字符各有多少。

#include

#include

#include

void count(char *p,int *upper,int *lower,int *digit,int *space,int *other)

{ int n;

n=strlen(p);

while (*p!=’\0’)

{

if (isupper(*p)) *upper+=1;

if (islower(*p)) *lower+=1;

if (isspace(*p)) *space+=1;

if (isdigit(*p)) *digit+=1;

p++;

}

*other=n-(*upper+*lower+*digit+*space);

}

void main ( )

{ int upper=0,lower=0,digit=0,space=0,other=0;

char * p;

printf(“Input string:”);

gets(p);

count(p,&upper,&lower,&digit,&space,&other);

pri ntf(“\nupper:%d lower:%d space:%d digit:%d other:%d”,upper,lower,space,digit,other);

}

10.9写一个函数,将一个3×3的整型矩阵转置

#include

void transpose (int (*p)[3],int (*q)[3])

{ int i,j;

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

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

*(*(q+j)+i)=*(*(p+i)+j);

}

void main ( )

{

int a[3][3],b[3][3],i,j;

printf(“Input matrix:\n”);

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

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

scanf(“%d”,&a[i][j]);

transpose(a,b);

printf(“Transpose of matrix :\n”);

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

{

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

printf(“%4d”,b[i][j]);

printf("\n");

}

}

10.10将一个5×5的矩阵中最大的元素放在中心,4个角分别放在4个最小的元素(顺序为从左到右,从上到下的顺序依次从小到大存放),写一个函数实现之,并用main函数调用。#include

void change(int a[][5])

{int i,j,t,max,min;

int *pmax, *pmin,*p;

max=a[0][0];

pmax=pmin=a[0];

for (p=&a[0][0];p

if (max<*p)

{ pmax=p;max=*p;}

p=&a[0][0];

t=*pmax; /* 将最大值与中心元素交换*/

*pmax=*(p+12);

*(p+12)=t;

for(i=0;i<8;i+=2) /* 逐次求最小值,共求四个*/

{ if(i==0)

min=a[0][0];

else

min=a[0][1];

for(p=&a[0][0]+1;p

{ if(i!=4&&i!=6&&*p

{ min=*p;

pmin=p;}

if(i==4&&*p

{ min=*p;

pmin=p;}

if(i==6&&*p

{ min=*p;

pmin=p;}

}

t=a[i/4*4][i%4*2];

a[i/4*4][i%4*2]=*pmin;

*pmin=t;

}

}

void main ( )

{ int a[5][5],i,j;

printf("Input 5 X 5 Matrix :\n");

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

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

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

change(a);

printf("Change Matrix:\n");

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

{

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

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

printf("\n");

}

}

10.11在主函数中输入10个等长的字符串。用另一个函数对它们排序,然后在主函数输出这10个已排好序的字符串。

#include

#include

#define N 10 /*字符串的个数*/

#define M 5 /*字符串的长度*/

void sort(char (*s)[M])

{int i,j;

char temp[M];

for (i=0;i

for (j=0;j

if(strcmp(s[j],s[j+1])>0)

{ strcpy(temp,*(s+j));

strcpy(*(s+j),*(s+j+1));

strcpy(*(s+j+1),temp);

}

}

void main ( )

{

int i;

char str[N][M];

printf("Input %d strings lenght < %d:\n",N,M);

for (i=0;i

gets(str[i]);

sort(str);

printf("sorting string:\n");

for (i=0;i

puts(str[i]);

}

10.12用指针数组处理上一题目,字符串不等长。

#include

#include

#define N 10

void sort(char *s[N])

{int i,j;

char *temp;

for (i=0;i

for (j=0;j

if(strcmp(s[j],s[j+1])>0)

{ temp=*(s+j);

*(s+j)=*(s+j+1);

*(s+j+1)=temp;

}

}

void main ( )

{

int i;

char *str[N],str1[N][80];

for (i=0;i

str[i]=str1[i];

printf("Input %d strings :\n",N);

for (i=0;i

gets(str[i]);

sort(str);

printf("sorting string:\n");

for (i=0;i

puts(str[i]);

}

10.13 写一个用矩形法求定积分的通用函数,分别求

???1

01010, cos , sin dx e xdx xdx x 说明:sin 、 cos 、exp 函数已在系统的数学函数库中,程序开头要用#include

#include

#include

double integral(double (*p)(double),float a,float b,int n)

{

int i;

float h;

double x,s;

h=(b-a)/n;

x=a;

s=0;

for(i=0;i

{ x=x+h;

s=s+(*p)(x)*h;

}

return(s);

}

double fsin(double x)

{ return sin(x);}

double fcos(double x)

{return cos(x);}

double fexp(double x)

{return exp(x);}

void main()

{

float a,b;

double val,(*p)(double);

int n=20,k=0; /*n为等分区间的个数*/ char str[3][10]={"sinx","cosx","exp"};

do{

printf("Input %s interval [a,b]:\n",str[k]);

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

switch(k)

{case 0: p=fsin;

val=integral(p,a,b,n);

printf("The integral of sin(x) is:%f\n",val);

break;

case 1:p=fcos;

val=integral(p,a,b,n);

printf("The integral of cos(x) is :%f\n",val);

break;

case 2:p=fexp;

val=integral(p,a,b,n);

printf("The integral of sin(x) is :%f\n",val);

}

k++;

}while(k<3);

}

10.14将n个数按输入时顺序的逆序排列,用函数实现。

#include

#define N 4

void reversed(int a[],int m)

{ int i, *p1,*p2,temp;

p1=a;

p2=a+m-1;

while(p1

{

temp=* p1;

* p1=* p2;

* p2=temp;

p1++;

p2--;

}

}

void main ( )

{int i,num[N],n;

printf("input n (n<%d) number:\n",N);

scanf(“%d”,&n);

printf("\nPlease input %d numbers:\n",n);

for (i=0;i

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

reversed(num,n);

printf(“reversed is:\n”);

for (i=0;i

printf(“%4d”,num[i]);

}

10.15有一个班4个学生,5门课。(1)求第一门课的平均分;(2)找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现上3个要求。

#include

#define N 4 /*学生的人数*/

#define M 6 /*学生学号、课程的门数以及平均成绩*/

void averager_sco(int (*p)[M+1]) /* 求每个学生的平均成绩的函数*/

{ int i,j;

for (i=0;i

{ * (*(p+i)+M)=0;

for (j=1;j

* (*(p+i)+M)+= * (*(p+i)+j); /* 累计每个学生的各科成绩*/ * (*(p+i)+M)=* (*(p+i)+M)/(M-1); /* 计算平均成绩*/

}

}

float averager_courl( int (*p)[M+1]) /* 求第一门课的平均成绩的函数*/

{int i;

float sum,average;

sum=0.0;

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

sum=sum + *(*(p+i)+1); /* 累计每个学生的得分*/

average=sum/N; /* 计算平均成绩*/

return average;

}

int find_fali2(int (*p)[M+1],int (*pf)[M+1]) /* 找两门以上课程不及格的学生的函数*/ {int i,j,k,n,m=0;

for (i=0;i

{n=0;

for (j=1;j

if (p[i][j]<60.0) n++;

if (n>=2)

{ for (k=0;k<=M;k++) /* 将两门以上不及格的学生存储于数组fail中*/ pf[m][k]=p[i][k];

m++; /* 统计两门以上不及格的学生人数*/

}

}

return m;

}

/* 找成绩优秀的学生(各门85分以上或平均90分以上)的函数*/

int find_good(int (*p)[M+1],int (*pg)[M+1])

{int i,j,k,n,m=0;

for (i=0;i

{

n=0;

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

if (p[i][j]>=85.0) n++; /* 统计课程成绩在85以上的门数*/ if ((n==M) || (* (*(p+i)+M)>=90))

{ for (k=0;k<=M;k++) /* 将成绩好的学生存储于数组good中*/

pg[m][k]=p[i][k];

m++; /* 统计成绩好的学生人数*/ }

}

return m;

}

void Output(int stu[][M+1],char *p,char course[][10],int n)

{ int i,j;

printf("\t\t\t%s\n",p);

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

printf("=");

printf("\n");

printf("NO");

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

printf("%10s",course[i]);

printf("\n");

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

printf("=");

printf("\n");

for(i=0;i

{

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

printf("%-10d",stu[i][j]);

printf("\n");

}

getch();

}

void main ( )

{

int i,j,countf=0,countg=0;

int stu[N][M+1],fail[N][M+1],good[N][M+1];

float averc1;

char course[M+1][10];

printf("Input %d Course Name & \"Averager\" Name :\n",M-1);

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

gets(course[i]);

printf("Input Student NO. and scores:\n");

printf("NO. ");

for (i=0;i

printf("%10s",course[i]);

printf("\n");

for (i=0;i

for (j=0;j

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

printf("\n");

averager_sco(stu); /* 求出每个学生的平均成绩*/

Output(stu,"Student Avergager",course,N);

averc1=averager_courl(stu); /* 求出第一门课的平均成绩*/

printf("\n%s: averager %.2f",course[0],averc1);

printf("\n");

countf=find_fali2(stu,fail); /* 找出2门课不及格的学生*/

Output(fail,"Student Fail",course,countf);

printf("\n");

countg=find_good(stu,good); /* 找出成绩好的学生*/

Output(good,"Student Good",course,countg);

}

10.16输入一个字符串,内有数字和非数字字符,例如:

a123x456 17960? 302tab5876

将其中连续的数字作为一个整数,依次存放到一数组a中。例如123放在a[0]中,456放在a[1]中……统计共有多少个整数,并输出这些数。

#include

#include

int Digital(char *p,int a[])

{

int i=0,flag=0;

while(*p!='\0')

{ if(isdigit(*p))

{ flag=1;

a[i]=a[i]*10+*p-'0';

p++;

}

else

{ if(flag) i++;

p++;

flag=0;

}

}

return i+1;

}

void main ( )

{

char str[50];

int i,n,a[20]={0};

printf("Input a string:\n");

gets(str);

n=Digital(str,a);

for(i=0;i

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

}

10.17 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为:

int strcmp(char * p1,char * p2)

设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当s1≠s2时,返回它们两者的第一个不同字符的ASCII码差值(如”BOY”与”BAD”,第二个字母不同,”O”与”A”之差为79-65=14);如果s1>s2,则输出正值;如果s1

#include

int strcmp(char * p1,char * p2) /* 比较两个字符串的函数*/

{ int i;

i=0;

while (* (p1+i)== * (p2+i))

if (* (p1+i++)==’\0’) return(0); /* 相等时返回结果0 */

return (* (p1+i)-* (p2+i)); /* 不等时返回结果为第一个不等字符ASCII码的差值*/ }

void main ( )

{ int m;

char s1[20],s2[20];

printf(“Input tw o strings:\n”);

gets(s1);

gets(s2);

m=strcmp(s1,s2);

if(m>0)

printf(“%s > %s: %d\n”,s1,s2,m);

else if(m==0)

printf(“%s = %s:%d\n”,s1,s2,m);

else

printf(“%s < %s:%d\n”,s1,s2,m);

}

10.18编一个程序,输入月份号,输出该月的英文月名。例如,输入“3”,则输出“March”,要求用指针数组处理。

#include

void main ( )

{

char * month_name[12]={"January","February","March","April","May",

"June","July","August","September","October","November","December"};

int n;

do{

printf("Input month:\n");

scanf("%d",&n);

}while(n<0||n>12);

printf("It is %s.",* (month_name+n-1));

getch();

}

10.20用指向指针的指针的方法对5个字符串排序并输出。

#include

#include

# define N 5 /*字符串的个数*/

void sort(char ** p)

{int i,j;

char *temp=NULL;

for (i=0;i

for (j=i+1;j

if (strcmp(* (p+i),* (p+j))>0) /* 比较后交换字符串地址*/

{ temp=* (p+i);

* (p+i)=* (p+j);

* (p+j)=temp;

}

}

void main ( )

{int i;

char *pstr[N],str[N][79];

for (i=0;i

pstr[i]=str[i];

printf("Input %d strings:\n",N);

for (i=0;i

scanf("%s",pstr[i]);

sort(pstr);

printf("strings sorted:\n");

for (i=0;i

printf("%s\n",pstr[i]);

}

10.21用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n 和正整数在主函数中输入。最后在主函数中输出。

#include

#include

# define N 10 /* 定义整数的个数*/

void sort(int ** p)

{int i,j,*temp;

for (i=0;i

for (j=i+1;j

if (** (p+i)>** (p+j))

{ temp=* (p+i);

* (p+i)=*(p+j);

* (p+j)=temp;

}

}

void main ( )

{int i, *p[N],str[N];

for (i=0;i

p[i]=&str[i]; /* 将第i个整数的地址赋给指针数组p的第i个元素*/ printf("Input %d integral number:\n",N);

for (i=0;i

scanf("%d",p[i]);

sort(p);

printf("strings sorted:\n");

for (i=0;i

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

}

(完整版)谭浩强c程序设计课后习题答案

谭浩强c++程序设计课后答案 娄警卫

第一章1.5题 #include using namespace std; int main() { cout<<"This"<<"is"; cout<<"a"<<"C++"; cout<<"program."; return 0; 1.6题 #include using namespace std; int main() { int a,b,c; a=10; b=23; c=a+b; cout<<"a+b="; cout< using namespace std; int main() { int a,b,c; int f(int x,int y,int z); cin>>a>>b>>c; c=f(a,b,c); cout< using namespace std; int main() { int a,b,c; cin>>a>>b; c=a+b; cout<<"a+b="< using namespace std; int main() { int a,b,c; int add(int x,int y); cin>>a>>b; c=add(a,b); cout<<"a+b="<

C语言程序设计谭浩强第四版期末复习重点

C语言程序设计谭浩强第四版期末复习重点 Newly compiled on November 23, 2020

第一章 程 序设计和C 语言 .什么是计算机程序 程序.. :一组计算机能识别和执行的指令。只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作 计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。 什么是计算机语言 计算机语言:人和计算机交流信息的、计算机和人都能识别的语言。 计算机语言发展阶段:机器语言(由0和1组成的指令) 符号语言(用英文字母和数字表示指令) 高级语言(接近于人的自然语言和数学语言) 面向过程的语言(非结构化的语言、结构化语言);面向对象的语言 语言的发展及其特点 C 语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件。因此C 语言问世以后得到迅速推广。 C 语言主要特点: 语言简洁、紧凑,使用方便、灵活。(只有37个关键字、9种控制语句;程序书写形式 自由,源程序短) 运算符丰富。(34种运算符;把括号、赋值、强制类型转换等都作为运算符处理;表达 式类型多样化) 数据类型丰富。(包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型;C99又扩充了复数浮点类型、超长整型、布尔类型;指针类型数据,能用来实现各种复杂的数据结构的运算。)

具有结构化的控制语句。(如if…else语句、while语句、do…while语句、switch语句、for语句用函数作为程序的模块单位,便于实现程序的模块化;C语言是完全模块化和结构化的语言) 语法限制不太严格,程序设计自由度大。(对数组下标越界不做检查;对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用;C语言允许程序编写者有较大的自由度,因此放宽了语法检查) 允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。(C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件;这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言) 用C语言编写的程序可移植性好。(C的编译系统简洁,很容易移植到新系统;在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码;几乎所有计算机系统都可以使用C语言) 生成目标代码质量高,程序执行效率高。 1.C语言允许用两种注释方式:计算法 3.编写程序 4.对源程序进行编辑、编译和连接 5. 运行程序,分析结 6.编写程序文档 第二章算法——程序的灵魂 一个程序主要包括以下两方面的信息: (1) 对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构。 (2) 对操作的描述。即要求计算机进行操作的步骤,也就是算法。 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。 着名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:算法 + 数据结构 = 程序

C程序设计第四版谭浩强完整版课后习题答案

C程序设计第四版谭浩强完整版课后习题答案集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 向屏幕输出文字. #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } P008 求两个数的和. #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum);

return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); }

P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); }

C程序设计第四版谭浩强_习题&例题第7章

第7章函数 例7.1 #include int main() { void print_star(); void print_message(); print_star(); print_message(); print_star(); return 0; } void print_star() { printf("***********************************\n"); } void print_message() { printf("How do you do!\n"); } 例7.2 int max(int x,int y) { int z; z=x>y?x:y; return(z); } #include int main() { int max(int x,int y); int a,b,c; printf("please enter two integer number:"); scanf("%d,%d",&a,&b); c=max(a,b); printf("max is %d\n",c); return 0; }

例7.3 #include int main() { int max(float x,float y); float a,b; int c; printf("please enter two integer number:"); scanf("%f,%f",&a,&b); c=max(a,b); printf("max is %d\n",c); return 0; } int max(float x,float y) { float z; z=x>y?x:y; return(z); } 例7.4 #include int main() { float add(float x,float y); float a,b,c; printf("please enter a and b:"); scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f\n",c); return 0; } float add(float x,float y) { float z; z=x+y; return(z); }

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

《C语言程序设计》_谭浩强版教案

《C 语言程序设计》教案 职称: 助教 ____________ 单 位:湖南理工职业技术学院 学院(教研室):风能工程学院 工业机器人专业 授课教师: 周常欣

教 学 重 占 八、、 和 难 占 八、、 一、 程序设计和 C 语言 重点:计算机程序、计算机语言、 C 语言编译软件的安装、最简单的 C 语言程序 二、 算法:程序的灵魂 重点:简单的算法举例、算法的特性、用流程图表示算法。 三、 顺序结构程序设计 重点:C 语言的数据类型、C 语句的种类、赋值语句、数据的输入输出及输入输出 中最常用的 控制格式。 四、 选择结构程序设计 重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、 二条分支语句的格 式及基本应用、多分支的选择语句。 五、 循环结构程序设计 重点:C 构成循环的四种方法,尤其是后三种方法、 break 与continue 语句的基本作 用。 难点:while 语句;do-while 语句;for 语句;循环的嵌套; break 与continue 语句。 六、 数组 重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处 理函数及字符处理函数;数组的应用 难点:二维数组的定义与引用;字符数组;数组的应用 七、 函数 重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的 递归调 用;数组作为函数参数;变量作用域;量存储类别; 难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调 用;数组作 为函数的参数、变量的存储类别与作用域。 八、 指针 重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字 符串、指针 数组与二级指针;指针的应用 九、 建立自己的数据类型 重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型 十、文件 重点:文件的基本知识、 fopen 、fclose 函数打开与关闭文件、顺序读与数据文件、 随机读写数据文件 难点:用二进制方式向文件读写一组数据。 十一、常见错误分析 重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法。 十二、数组高级应用 重点:不定长数组与二维数组的应用 难点:不定长数组与二维数组的应用 十三、综合应用 重点:数组、if 语句、循环语句、函数知识的综合应用 难点:二维数组、指针 教材、 参 考书 教材:《C 程序设计》(第四版) 谭浩强著 清华大学出版社2010年6月 参考书:《C 程序设计语言》 Kernighan&Ritchie 机械工业出版社 《C 语言程序设计》教案 第1-2课时

C语言程序设计第四版第六章答案_谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

04737c程序设计试题及答案20200_图文

全国2009年10月高等教育自学考试 C++程序设计试题 课程代码:04737 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.对C++中主函数描述正确的是( ) A.名称为main,可为多个 B.名称不限,可为多个 C.名称为main,必须有且只能有一个 D.名称不限,必须有且只能有一个 2.调用声明为int result(int a,int b)的函数时,正确的方法是( ) A.result(1,2) B.result(1) C.result(0.1,0.3) D.result(1,2,3) 3.用于包含C++标准库iostream的预处理指令是( ) A.#define B.#include C.#define ‘iostream’ D.#include‘iostream’ 4.无类型标识符是指( ) A.void B.bool C.short D.long 5.从本质上看,引用是被引用变量的( ) A.拷贝 B.别名 C.复制 D.克隆 6.下面关于数组的初始化正确的是( ) A.char str[ ]={'a','b','c'}; B.char str[2]={'a','b','c'}; C.char str[1][2]={{'a','b'},{'e','d'}}; D.char str[ ][ ]={'a','b','c'}; 7.C++类中定义的成员默认访问属性为( ) A.public B.private C.protected D.friend 1文档来源为:从网络收集整理.word版本可编辑.

谭浩强--C语言程序设计(第二版)习题答案

C语言程序设计(第2版)课后习题答案 第一章 1.请参照本章例题,编写一个C程序,输出以下信息: ************************** Very good! ************************** 解: #include void main() { printf("**************************"); printf("\n"); printf("Very good!\n"); printf("\n"); printf("**************************"); } 2.编写一个C程序,输入a、b、c三个值,输出其中最大值。 解: #include void main() { int a,b,c,max; printf("请输入三个数a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if(max #include void main() { double P, r=0.1, n=10; P=pow((1+r), n);

printf("%lf\n", P); } 3.请编程序将"China"译成密码,译码规律是用原来字母后面的第4个字母代替原来的字母。例如,字母"A"后面第4个字母是"E","E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为'C'、'h'、'i'、'n'、'a',经过运算,使c1、c2、c3、c4、c5分别变为'G'、'l'、'm'、'r'、'e',并输出。 解: #include void main() { char c1='C',c2='h',c3='i',c4='n',c5='a'; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 第三章 3.用下面的scanf函数输入数据,使a=3, b=7, x=8.5, y=71.82, c1='A', c2='a'。问在键盘上如何输入? 解: #include void main() { int a, b; float x, y; char c1, c2; scanf("a=%d, b=%d", &a, &b); scanf(" x=%f, y=%e", &x, &y); scanf(" c1=%c, c2=%c",&c1, &c2); } a=3, b=7 x=8.5, y=71.82 c1=A, c2=a 5. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后2位数字。请编程序。 解: #include void main() { float r,h,C1,Sa,Sb,Va,Vb; scanf("%f,%f",&r,&h);

C语言程序设计试题集及其答案

第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。

C语言程序设计试题集及答案

单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n

【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

C语言程序设计期末考试试题及答案

C 语言程序设计 试 题 (2008 /2009 学年 第 二 学期) 一. 选择题(满分30分,每题2分) 1.若a 、b 、c 都定义为int 类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j ,i=1;执行语句“j=i++;”后,变量i 的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d ”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j 的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C 语言中函数返回值的类型由 D 决定的。 A. return 语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。 8. 若int i=10;执行下列程序后,变量i 的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A . char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include void main() { int a=1,b=0,c=0; if (a

c语言程序设计题目及答案

一、程序设计共113 题第1 题题 号:319 #include "stdio.h" void wwjt(); int fun(int m) { int i,k=1; if(m<=1) k=0; for(i=2;i #include #define M 3 #define N 4 void wwjt(); void fun(int tt[M][N],int pp[N]) { int i,j; for(j=0;jpp[j]) pp[j]=tt[i][j]; } 第3 题题号:375 功能:从键盘上输入任意实数, 求出其所对应的函数值。 z=e 的x 次幂( x>10) z=log(x+3) (x>-3) z=sin(x)/((cos(x)+4) #include #include void wwjt(); 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 题题号:334 功能:求给定正整数n 以内的素数之积。( n<28) #include #include"conio.h" void wwjt(); long fun(int n) { long i,k; long s=1; for(i=2;i<=n;i++) {for(k=2;k #include"conio.h" void wwjt(); long int fun(int n) { long s=1,i; for(i=2;i<=n;i++) if(n%i==0)s=s*i; return s; } 第6 题题号:50 功能:求出菲波那契数列的前一项与后一项之比的极限的 近似值例如:当误差为0.0001 时,函数值为0.618056 。 #include #include "math.h" void wwjt(); float fun() { float f1=1,f2=1,f3; float r1=2,r2; do {r2=r1; r1=f1/f2; f3=f1+f2; f1=f2; f2=f3; }while(fabs(r1-r2)>1e-4); return r1; } 第7 题题号:394 功能:产生20个[30,120] 上的随机整数放入二维数组 a[5][4] 中, 求其中的最小值。 #include "stdlib.h" #include void wwjt(); int amin(int a[5][4]) { int i,j,s; s=a[0][0];

C语言程序设计试题及答案

C语言程序设计试题及 答案 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是() A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是() A、abc B、12AC C、sun D、 A2 3、设有语句int a=4;则执行了语句a+=a- =a*a后,变量a的值是() A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是() A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是() A、% B、/ C、%和/ D、 + 6、以下关于运算符的优先顺序的描述正确的是() A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是() sum=pad=5;pAd=sum++,pAd++,++pAd;

printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是() A、 INPUT x、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、 scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456< 回车 >,下面程序的输出结果是:() void main ( ) { int m,n; scanf(“%2d%3d”,&m,&n); printf(“m=%d n=%d\n”,m,n); } A、m=23 n=45 B、m=234 n=56 C、m=23 n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是() main( ) { int x,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、 0 B、 22 C、 12 D、10 11、C语言中while和do-while循环的主要区别()

C程序设计第四版谭浩强完整版课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案 #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum); return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); }

P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); } C程序设计(第四版)(谭浩强)第2章课后 习题答案 算法——程序的灵魂 P017 计算机1-5相乘的积. #include<> int main() { int i,s=1; for(i=1;i<6;i++) { s=s*i; n",s); return 0; } #include<> int main() { int i,s=1; for(i=1;i<12;i++) 可以是i=i+2 { if(i%2!=0) s=s*i; else continue; }

C语言程序设计课后习题答案第四版谭浩强完整版

C语言程序设计课后习 题答案第四版谭浩强 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; }

1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法32 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42

相关主题
文本预览
相关文档 最新文档