当前位置:文档之家› c语言习题2

c语言习题2

c语言习题2
c语言习题2

题9/*编写一个函数,将一个3×3的矩阵转置*/

#include

//#include

//using namespace std;

void main ()

{

void move (int pointer[][3]);

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

printf("input matrix: \n");

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

scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);

//p=&a[0][0];

move (a);

printf("Now ,matrix:\n");

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

{

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

// cout<

// cout<

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

{

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

}

printf("\n");

}

}

void move (int pointer[][3] ) //矩阵转置

{

int i,j,t;

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

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

{

t=pointer[i][j];

pointer[i][j]=pointer[j][i];

pointer[j][i]=t;

}

}

题10/*将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从坐到右

,从上到下顺序依次从小到大存放),编写一个函数实现之,用main函数调用*/ #include

void main()

{

void change (int *);

int a[5][5],*p,i,j;

printf("input martix: \n");

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

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

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

}

p=&a[0][0];

change( p);

printf("Now ,martix: \n");

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

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

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

printf("\n");

}

}

void change(int *p) //交换函数的实现

{

int i,j,temp;

// int pmax,pmin;

int *pmax, *pmin;

pmax=p;

pmin=p;

// pmax=a[0][0];

// pmin=a[0][0];

for (i=0; i<5; i++) //寻找最大值和最小值

{

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

{

if (*pmax<*(p+5*i+j))

// if(pmax

pmax=p+5*i+j;

// pmax=a[i][j];

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

// if (pmin)>a[i][j]

pmin=p+5*i+j;

// pmin=a[i][j];

}

temp=*(p+12); //最大值换给中心元素

*(p+12)=*pmax;

*pmax=temp;

temp=*p;

*p=*pmin;

*pmin=temp;

pmin=p+1;

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

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

{

if (((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

}

temp=*pmin;

*pmin=*(p+4);

*(p+4)=temp;

pmin=p+1;

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

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

{

if (((p+5*i+j)!=(p+4)&&(p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

}

temp=*pmin;

*pmin=*(p+20);

*(p+20)=temp;

pmin=p+1;

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

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

{

if (((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j))) pmin=p+5*i+j;

}

temp=*pmin;

*pmin=*(p+24);

*(p+24)=temp;

题11/*在主函数中输入10个等长的字符串。用另一个函数对他们排序。然后在主函数输出这个

10个已排好序的字符串*/

#include

#include

void main()

{

void sort(char (*p)[6]);

int i;

char str[10][6];

char (*p)[6];

printf("input 10 strings: \n");

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

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

p=str;

sort(p); //调用sort 函数

printf("Now,the sequence is: \n");

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

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

}

void sort(char (*s)[6]) //指向由6个元素组成的一维数组的指针

{

int i,j;

char temp[6],*t=temp;

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

for (j=0; j<9-i; j++)

{

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

{

strcpy(t,s[j]);

strcpy(s[j],s[j+1]);

strcpy(s[j+1],t);

}

}

}

题12/* 用指针数组处理上一题目,字符串不等长*/

#include

#include

void main()

{

void sort (char *[]);

int i;

char *p[10],str[10][20];

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

p[i]=str[i]; //将第i个字符串的首地址赋予指针组p的第i个元素printf("input 10 strings:\n");

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

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

sort (p);

printf("Now,the sequence is:\n");

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

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

}

void sort(char *s[])

{

int i,j;

char *temp;

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

for (j=0; j<9-i; j++)

{

if (strcmp(*(s+j),(s+j+1))>0)

{

temp=*(s+j);

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

*(s+j+1)=temp;

}

}

}

题13/* 编写一个用矩形法求定积分的通用函数*/

#include

#include

void main ()

{

float integral(float (*p)(float),float,float,int);

float fsin(float);

float fcos(float);

float fexp(float);

float a1,b1,a2,b2,a3,b3,c,(*p)(float);

int n=20;

printf("input a1,b1:");

scanf("%f,%f",&a1,&b1);

printf("input a2,b2:");

scanf("%f,%f",&a2,&b2);

printf("input a3,b3:");

scanf("%f,%f",&a3,&b3);

p=fsin;

c=integral(p,a1,b1,n);

printf("the integral sin(x)=%f\n",c);

p=fcos;

c=integral(p,a2,b2,n);

printf("the integral cos(x)=%f\n",c);

p=fexp;

c=integral(p,a3,b3,n);

printf("the integral exp(x)=%f\n",c);

}

float integral(float (*p)(float ),float a,float b,int n) // {

int i;

float x,h,s;

h=(b-a)/n;

x=a;

s=0;

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

{

x=x+h;

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

}

return (s);

}

float fsin(float x)

{return sin(x); }

float fcos(float x)

{return cos(x); }

float fexp(float x)

{return exp(x); }

题14/*将n个数输入时顺序的逆序排列,用函数实现*/

#include

void main()

{

void sort (char *p,int m);

int i,n;

char *p,num[20];

printf("input n:");

scanf("%d",&n);

printf("input these numbers:\n");

for (i=0; i

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

p=&num[20];

sort(p,n);

printf("Now,the sequence is:\n");

for (i=0; i

printf("%d",num[i]);

printf("\n");

}

void sort(char *p,int m)

{

int i;

char temp,*p1,*p2;

for (i=0; i

{

p1=p+i;

p2=p+(m-1-i);

temp=*p1;

*p1=*p2;

*p2=temp;

}

}

题15/*有一个班的4个学生,有5门课程。

1、求第一门课的平均分;

2、找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均分

3、找出平均分在90分以上或全部课程成绩在85分以上的学生。

分别编写三个函数来实现以上三个要求*/

# include

void main()

{

void avsco(float *,float *);

void avcour1(char (*)[10],float *);

void fali2(char course[5][10], int num[], float *pscor,float aver[4]); void good (char course[5][10], int num[4],float *pscor, float aver[4]); int i,j,*pnum,num[4];

float score[4][5],aver[4],*pscore,*paver;

char course[5][10],(*pcourse)[10];

printf("input course:\n");

pcourse=course;

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

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

printf("input No. and scorse:\n");

printf("No.");

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

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

printf("\n");

pscore=&score[0][0];

pnum=&num[0];

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

{

scanf("%d",pnum+i);

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

scanf("%f",pscore+5*i+j);

}

paver=&aver[0];

printf("\n\n");

avsco(pscore,paver);

avcour1(pcourse,pscore);

printf("\n\n");

fali2(pcourse,pnum,pscore,paver); //

printf("\n\n");

good(pcourse,pnum,pscore,paver); //

}

void avsor(float *pscore,float *paver) // 求每个学生的平均成绩的函数{

int i,j;

float sum ,average;

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

{

sum=0.0;

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

sum=sum+(*(pscore+5*i+j));

average=sum/5;

*(paver+i)=average;

}

}

void avcour1(char (*pcourse)[10],float *pscore) //求第一课程的平均成绩的函数{

int i;

float sum,average1;

sum=0.0;

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

{

sum=sum+(*(pscore+5*i));

average1=sum/4;

printf("course1: %s,average course:%7.2f\n",*pcourse, average1);

}

}

void fali2(char course[5][10],int num[],float *pscore,float aver[4])

//找两门以上的课程不及格的学生的函数

{

int i,j,k,label;

printf(" =============studet who is fail======================= \n"); printf("No.");

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

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

printf(" average\n");

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

{

label=0;

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

if (*(pscore+5*i+j)<60.0)

{label++; }

if(label>=2)

{ printf("%d",num[i]);

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

printf("%11.2f",*(pscore+5*i+j));

printf("%11.2f\n",aver[i]);

}

}

}

void good (char course[5][10],int num[4],float *pscore,float aver[4])

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

{

int i,j,k,n;

printf(" =========students whose score is good ==================\n");

printf("No.");

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

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

printf(" average\n");

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

{

n=0;

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

if (*(pscore+5*i+j)>85.0) n++;

if ((n==5)||(aver[i])>=90)

{

printf("%d",num[i]);

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

printf("%11.2f",*(pscore+5*i+j));

printf("%11.2f\n",aver[i]);

}

}

}

题16/*输入一个字符串,内有数字和非数字字符。例如:a123x456 17935?098tab58374

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

#include

void main()

{

char str[50],*pstr;

int i,j,k,m,e10,digit,ndigit,a[10],*pa;

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

gets(str);

pstr=&str[0];

//字符指针pstr置于数组str首地址

pa=&a[0];

//指针pa置于a数组的首地址

ndigit=0;

//ndigit代表有多少个整数

i=0;

j=0;

while (*(pstr+i)!='\0')

{

if ((*(pstr+i)>='0')&&(*(pstr+i)<='9'))

j++;

else

{

if (j>0)

{

digit=*(pstr+i-1)-48; //将个数位赋予digit

k=1;

while(k

e10=1;

for (m=1; m<=k; m++)

e10=e10*10; //e10代表该位数所应乘的因子

digit=digit+(*(pstr+i-1-k)-48)*e10;

k++; //位数k自增

}

*pa=digit; //将数值赋予数组a

ndigit++;

pa++; //数组pa指向a数组下一元素

j=0;

}

}

i++;

}

if (j>0) //以数字结尾字符串的最后一个数据

{

digit=*(pstr+i-1)-48; //将个数位赋予digit

k=1;

while(k

e10=1;

for(m=1; m<=k; m++)

e10=e10*10;

digit=digit+(*(pstr+i-1-k)-48)*e10;

k++;

}

*pa=digit; //将数值赋予数组a

ndigit++;

j=0;

}

printf("There are %d numbers in this line.They are: \n",ndigit);

j=0; //输出数组

pa=&a[0];

for (j=0; j

printf("%d\n",*(pa+j));

printf("\n");

}

题17/*编写一个函数,实现两个字符串的比较*/

#include

void main()

{

int strmp(char *p1,char *p2);

int m;

char str1[20], str2[20], *p1, *p2;

printf("input two strings:\n");

scanf("%s",str1);

scanf("%s",str2);

p1=&str1[0];

p2=&str2[0];

m=strcmp(p1,p2);

printf("result: %d\n",m);

}

int strcmp(char *p1,char *p2)

{

int i;

i=0;

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

{ if (*(p1+i++)=='\0') return (0);}

return(*(p1+i)-*(p2+i));

}

题18/*编写一个程序,打入月份号,输出该月份的英文月名*/ #include

void main()

{

char *month_name[13]={"illegal month","January","February","March","April", "May","June","July","August","Spetember","October","November","December"}; int n;

printf("input month: \n");

scanf("%d",&n);

if ((n<=12)&&(n>=1))

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

else

printf ("It is wrong.\n");

}

题19/*用指向指针的指针的方法对5个字符串排序并输出*/

#include

#include

#define LINEMAX 20

void main()

{

void sort (char **p);

int i;

char **p,*pstr[5],str[5][LINEMAX];

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

pstr[i]=str[i];

printf("input 5 strings: \n");

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

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

p=pstr;

sort(p);

printf("strings sorted:\n");

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

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

}

void sort (char **p)

{

int i,j;

char *temp;

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

{

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

{

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

{

temp=*(p+i);

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

*(p+j)=temp;

}

}

}

}

题20/*用指向指针的指针的方法对n个整数排序并输出。

要求将排序单独写一个函数,n和整数在主函数中输入,最后在主函数中输出*/ #include

void main()

{

void sort (int **p,int n);

int i,n,digit[20],**p,*pstr[20];

printf("input n: ");

scanf("%d",&n);

for (i=0; i

pstr[i]=&digit[i];

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

for (i=0; i

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

p=pstr;

sort(p,n);

printf("Now, the sequence is 4: \n");

for (i=0; i

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

printf("\n");

}

void sort (int **p,int n) //指针排序

{

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;} }

}

}

C语言基础练习题(含答案)

C语言基础练习题(含答案)

第一章C语言基础知识 1.1 选择题 1. 以下不是C语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D.-_ok 3.正确的C语言标识符是()。 A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3C.For D.2a define _123 -abc DO WORD IF Case sizeof 5.下列符号中,不属于转义字符的是()。 A.\\ B.\0xAA C.\t D.\0 6.不属于C语言关键字的是()。 A.int B.break C.while D.character 7.是C语言提供的合法关键字的是()。 A.Float B.signed

B .一组机器语言指令 C .将C 源程序编译成目标程序 D .由制造厂家提供的一套应用软件 14.以下选项中,合法的用户标识符是( )。 A .long B ._2abc C .3dmax D .A.dat 15.以下选项中,合法的实型常数是( )。 A .5E2.0 B .E-3 C .2E0 D .1.3E 16.已知大写字母A 的ASCII 码值是65, 小写字母a 的ASCII 码是97,则用八进制表示的字符常量’\101’是( )。 A .字符A B .字符a C .字符c D .非法的 常量 17.以下选项中, 合法转义字符的选项是( )。 A .’\\’ B .’\018’ C .’xab ’ D .’\abc ’ 18.以下选项中,正确的字符常量是( )。 A .”F ” B .’\\’’ C .’W ’ D .’’ 19.以下选项中可作为C 语言合法整数的是 A .10110 B B .0386 C .0Xffa D .x2a2 20.下列变量定义中合法的是 A .short _a=1-.le-1; B .double b=1+5e2.5; C .long do=0xfdaL; D .float 2_and=1-e-3; 21.与数学式子1 29 x x n 对应的C 语言表达式是( )。 A .9*x^n/(2*x-1) B .9*x**n/(2*x-1) C .9*pow(x,n)*(1/(2*x-1)) D .9*pow(n,x)/(2*x-1) 22.若有代数式cd ab 3,则不正确的C 语言表达式是( )。

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言习题及解答-2-1

C语言概述 一.选择题 1.下列选项中,合法的C语言关键字是 A) VAR B) cher C) integer D) default 2.请选出可用作C语言用户标识符的一组标识符____ A) Void define WORD B) a3_b3 _123 IF C) For -abc Case D) 2a Do sizeof 3.C语言提供的合法的数据类型关键字是____ A) Double B) short C) integer D) Char 4.在下列字符中,不可用作C语言标识符的是 A) water B) price C) a>b D) a12 5.一下叙述正确的是 A) C语言比其他高级高级 B) C语言可以不用编译就能被计算机识别执行 C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D) C语言出现的最晚、具有其他语言的一切优点 6.在一个C语言程序中 A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现 C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置 7.下列符号不属于C语言保留字的是 A) if B) then C) static D) for 8.下列说法正确的是 A) 主函数名main是由程序设计人员按照“标识符”的命名规则来选取的 B) 分号和回车符都可以作为语句的结束符号 C) 在程序清单的任何地方都可以插入一个或多个空格符号 D) 程序的执行总是从主函数main()开始的 参考答案 1.D 2.B 3.B 4.C 5.C 6.B 7.B 8.D 数据类型与表达式 一.选择题 1. 下列字符序列中,不可用作C语言标识符的是()。 A)abc123 B)no.1 C)_123_ D)_ok 2. 正确的C语言标识符是()。 A)_buy_2 B)2_buy C)?_buy D)buy?

c语言练习题 2

1停车场收费问题 一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。最高收费为40元。假设任何车辆的停车时间都不超过24小时。编写程序,计算每辆车的停车费。(注意输出结果小数点后保留两位) 输入 #include int main() { double m,x; printf("输入停车时间x:"); scanf("%lf",&x); if(x<=24) { if(x<3.0) {m=5.0; printf("%lf\n",m);} else if(x>3.0) { m=5.0+2.0*(x-3.0); if(m<=40) printf("%lf\n",m);} } else printf("输出停车费用40元\n"); return 0; 2.#include int main() { double x,m; printf("输入停车时间(x):"); scanf("%lf",&x); if(x<=24) { if(x<=3.0) printf("停车费用5元\n"); if(x>3) m=5.0+2.0*(x-3.0);

if(m<=40) printf("%6.2f\n",m);} else printf("停车费用40元\n"); } } 2 计算细菌数量 一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就 变成20个,第三天变成40个,第四天变成80个,……。现在给出第一 天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。 3 计算邮资计算邮资: 用户输入:邮件的重量,以及是否加快 计算规则:重量在1克以内(包括1克), 基本费0.8元。超过1克的部分,按照0.5元/克的比例加收超重费。 如果用户选择加快,多收2元。#include using namespace std; int main() {double x,sum; char exp; while(cin>>x>>exp) { if(x<=1&&exp=='n') sum=0.8; if(x<=1&&exp=='y') sum=2.8; if(x>1&&exp=='n') sum=0.8+(x-1)*0.5; if(x>1&&exp=='y') sum=0.8+(x-1)*0.5+2; cout< using namespace std; int main()

c语言第1、2章练习题答案

第1、2章练习题 1.以下叙述正确的是()。B A)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如fun(fun(x)) C)C语言函数不可以单独编译D)C语言除了main函数外,其他函数不可以作为单独文件形式存在2.以下叙述正确的是()。C A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句 C)简单的C语句必须以分号结束D)C语句必须在一行内写完 3.以下叙述中正确的是()。C A)C程序中的注释只能出现在程序的开始位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一条语句 C)C程序书写格式自由,一条语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 4.下列叙述中错误的是()。A A)一个C语言程序只能实现一种算法B)C语言程序可以由多个程序文件组成 C)C语言程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在5.以下叙述中正确的是()。C A)C语言程序将从源程序中的第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主函数 6.对于一个正常运行的C程序,以下叙述正确的是()。A A)程序的执行总是从main函数开始,在main函数中结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束 D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 7.下列叙述正确的是()。D A)每个C语言程序文件中都必须有一个main( )函数 B)在C语言程序中main( )函数的位置是固定的 C)C语言程序中所有函数之间都可以相互调用,与函数所在的位置无关 D)在C语言程序的函数中不能定义另一个函数 8.下列叙述中错误的是()。B A)C程序在运行过程中所有计算机都以二进制方式进行 B)C程序在运行过程中所有计算机都以十进制方式进行 C)所有C程序都需要在链接无误后才能运行 D)C程序中整型变量只能存放整数,实型变量只能存放浮点数 9.计算机能直接执行的程序是()。D A)源程序B)目标程序C)汇编程序D)可执行程序 10.C语言源程序的后缀名是()。B A).exe B).c C).obj D).cp 11.下列叙述中错误的是()。D A)计算机不能直接执行用C语言编写的源程序 B)C程序经C编译器编译后,生成后缀为.obj的文件,这是一个二进制文件 C)后缀为.obj的文件,经连接后生成后缀为.exe的文件,这是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行 12.算法中,对需要执行的每一步操作都必须给出清楚、严格的规定,这属于算法的()。C

c语言练习题带详解答案

一、编程题 1.输入2个整数,求两数的平方和并输出。 #include int main(void) { intt a ,b,s; printf("please input a,b:\n"); scanf("%d%d”,&a,&b); s=a*a+b*b; printf("the result is %d\n",s); return 0; } 2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。 #include #define PI 3.14 int main(void)

{ double r ,area , girth; printf("please input r:\n"); scanf("%lf",&r); if (r>=0) { area =PI*r*r; girth =2*PI*r ; printf("the area is %.2f\n", area); printf("the girth is %.2f\n", girth);} else printf("Input error!\n"); return 0; } 3、已知函数y=f(x),编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0)

2x-1 (x>0) #include void main() { int x,y; scanf(“%d”,&x); if(x<0) y=2*x+1; else if(x>0) y=2*x-1; else y=0; printf(“%d”,y); } 4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 #include void main(){ int data;

C语言函数练习题2

/* 姓名:白银 日期:2007.6.11 描述:英尺,英寸,米,厘米之间的转换 */ #include float GetInch(float feet); float GetMeter(float inch); float GetCentiMeter(float meter); void main() { float inch; float meter; float centimeter; float feet; printf("请输入英尺的值\n"); scanf("%f",&feet); inch=GetInch(feet); printf("转换成英寸的结果是%.2f:",inch); printf("\n"); meter=GetMeter(GetInch(feet)); printf("转换成米的结果是%.2f:",meter); printf("\n"); centimeter=GetCentiMeter(GetMeter(GetInch(feet))); printf("转换成米的结果是%.2f:",centimeter); printf("\n");

} float GetInch(float feet) { float inch; inch=feet*12; return inch; } float GetMeter(float inch) { float meter; meter=inch*2.54; return meter; } float GetCentiMeter(float meter) { float centimeter; centimeter=meter*100; return centimeter; } /* 姓名:白银 日期:2007.6.11 描述:底和高求三角形面积 */ #include float GetArea(float h,float l); void main() {

C语言练习题及参考答案

练习题1及参考答案 1. 单项选择题 (1)以下并非C语言的特点的是。 A. C语言简洁和紧凑 B. 能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D. C语言移植性好 【答】B (2)一个C程序的执行是从。 A. main()函数开始,直到main()函数结束 B. 第一个函数开始,直到最后一个函数结束 C. 第一个语句开始,直到最后一个语句结束 D. main()函数开始,直到最后一个函数结束 【答】A (3)在C程序中,main()的位置。 A. 必须作为第一个函数 B. 必须作为最后一个函数 C. 可以任意 D. 必须放在它所调用的函数之后 【答】C (4)一个C程序是由。 A. 一个主程序和若干子程序组成 B. 一个或多个函数组成 C. 若干过程组成 D. 若干子程序组成 【答】B (5)下列说法正确的是。 A. 在执行C程序时不是从main()函数开始的 B. C程序书写格式限制严格,一行内必须写一个语句 C. C程序书写格式比较自由,一个语句可以分行写在多行上 D. C程序书写格式严格要求一行内必须写一个语句,并要求行号【答】C 2. 填空题 (1)一个C源程序至少有① 个main()函数和② 个其他函数。【答】①一②若干 (2)任何C语句必须以结束。 【答】分号

(3)C语言源程序的基本单位是。【答】函数 (4)C编译程序的功能是。【答】将C源程序编译成目标代码

练习题2及参考答案 1. 单项选择题 (1)以下字符串为标识符的是。 A. _MY B. 2_2222 C. short D. LINE 5 【答】A (2)下列符号可以作为变量名的是。 A. +a B. *p C. _DAY D. next day 【答】C (3)设c是字符变量,则以下表达式正确的是。 A. c=666 B. c='c' C. c="c" D. c="abcd" 【答】B (4)23+'m'+'b'的结果是型数据。 A. char B. double C. int D. long int 【答】和均为double型,运算结果也是double型。本题答案为B。 (5)若变量已正确赋值,以下符合C语言语法的表达式是。 A. a=a+7; B. a=7+b+c,a++ C. int%4) D. a=a+7=c+b 【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。本题答案为B。 (6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是。 A. x=(x=1+2,x*2) B. x=y>26:5 C. x=9-(--y)-(--y) D. x=y*(int)2) 【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)2)=y*2=6。本题答案为C。 (7)若定义 int m=7,n=12; 则能得到值为3的表达式是。 A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5) 【答】A、B、C、D选项各表达式的值分别是0、2、2、3。本题答案为D。 (8)以下程序的运行结果是。 #include <> main() { int i=5,j=6,m=i+++j; printf("%d,%d,%d\n",i,j,m); }

C语言第二章习题带答案

练习2-1答案 选择题 1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.-2 C.3e2 D.0582 4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0' 9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。 A.1111 1111 1111 1000 B. 1000 C.000000000000 1000 D.1111 1111 1111 0111 10.将字符g赋给字符变量c,正确的表达式是( C )。 A.c="g" B.c=101 C.c='\147' D.c='0147' 11.字符串"\\\22a,0\n"的长度是( C )。 A.8 B.7 C.6 D.5 12.为求出s=10!的值,则变量s的类型应当为( C )。 A.short B.unsigned short C.long D.以上三种类型均可 13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。 printf("%d\n", x); A.65535 B.1 C.无定值D.-1 14.下面4个选项中,均是合法整型常量的选项是( A )。 A.160,-0xffff,011 B.-0xcdf,01a,0xe C.-01,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D )。 A.--0f1,-0xffff,0011 B.-0Xcdf,01a,0xe C.-018,999,5e2 D.-0x48eg,-068,03f

2013 C语言练习题2

(二)数据的类型与基本操作 一、选择题 1.若有代数式y y x log +,则正确的C语言表达式是() 10 A.sqrt(fabs(pow(y,x)+log(y))) B.sqrt(abs(pow(y,x)+log(y))) C.sqrt(fabs(pow(x,y)+log(y))) D.sqrt(abs(pow(x,y)+log(y))) 2.已知字母A的ASCII码为十进制数65,C2为字符型,则执行语句C2=’A’+’6’-‘3’;后, C2中的值为() A.D B.68 C.不确定的值 D.C 3.以下选项中,与k=n++完全等价的表达式是() A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n=1 4.若re、a、b都是int型变量,则执行re=(a=4,b=6,c=12)后,re的值为() A.4 B.6 C.12 D.22 5.在ASCII字符集中,数字0的序号为48,下面程序的输出结果是() #include“stdio.h” void main() { char a=’0’,b=’9’; printf(“%d,%c”,a,b); } A.输出格式不合格 B.48,57 C.0,9 D.48,9 二、填空题 1若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是() 2.以下程序 #include“stdio.h” void main()

{ char ch1,ch2; int n1,n2; ch1=getchar(); ch2=getchar(); n1=ch1-‘0’; n2=n1*10+(ch2-‘0’); printf(“%d”,n2); } 程序运行时输入:12<回车>,执行后输出结果是_________________. 3.在C语言中,一个char型数据在内存中所占字节数是______________;一个int型数据在内存中所占的字节数是_______________;一个float型数据在内存中所占的字节数是_____________;一个double型数据在内存中所占的字节数是_________________; 4.若有以下语句:int a=5;printf(“%d\n”,a++);则输出结果是__________________; 三、编程题 1.若a、b为整型变量,x、y为实型变量,a=10,b=3,x=7.5,y= 2.5,编写程序求下面表达式的值。 (1)(b-1)x+a%4 2.已知圆半径、圆柱高,求圆周长、圆柱体积(保留两位小数) 3.由键盘输入一个小写英文字母,先输出该字母及ASCⅡ码值,然后输出它的大写字母及ASCⅡ码值。

c语言练习题2程序设计

/*------------------------------------------------ 【程序设计】第1题 -------------------------------------------------- 功能:判断m是否为素数。 ------------------------------------------------*/ #include "stdio.h" void wwjt(); int fun(int m) { /**********Program**********/ /********** End **********/ } main() { int m,k=0; for(m=100;m<200;m++) if(fun(m)) { printf("%4d",m); k++; if(k%5==0) printf("\n"); } printf("k=%d\n",k); wwjt(); } void wwjt() { FILE *IN,*OUT; int iIN,iOUT,i; IN=fopen("in.dat","r"); if(IN==NULL)

{ printf("Please Verify The Currernt Dir..It May Be Changed"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Please Verify The Current Dir.. It May Be Changed"); } for(i=0;i<10;i++) { fscanf(IN,"%d",&iIN); iOUT=fun(iIN); fprintf(OUT,"%d\n",iOUT); } fclose(IN); fclose(OUT); } /*------------------------------------------------------- 【程序设计】第2题 --------------------------------------------------------- 题目:分别统计字符串中字母、数字、空格和其他字符出现的次数(字符长度小于80)。 -------------------------------------------------------*/ #include void wwjt(); /*-全局变量,a用于保存字母个数、num用于保存数字个数b用于保存空格个数、other用于保存其他字符字数*/ int a=0,num=0,b=0,other=0; void count(char c[]) { /**********Program**********/ /********** End **********/ }

C语言练习题带详解答案

C语言练习题带详解答案 This model paper was revised by the Standardization Office on December 10, 2020

一、编程题 1.输入2个整数,求两数的平方和并输出。 #include <> int main(void) { intt a ,b,s; printf("please input a,b:\n"); scanf("%d%d”,&a,&b); s=a*a+b*b; printf("the result is %d\n",s); return 0; } 2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。 #include <> #define PI int main(void) { double r ,area , girth; printf("please input r:\n"); scanf("%lf",&r); if (r>=0) { area =PI*r*r; girth =2*PI*r ;

printf("the area is %.2f\n", area); printf("the girth is %.2f\n", girth);} else printf("Input error!\n"); return 0; } 3、已知函数y=f(x),编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0) 2x-1 (x>0) #include <> void main() { int x,y; scanf(“%d”,&x); if(x<0) y=2*x+1; else if(x>0) y=2*x-1; else y=0; printf(“%d”,y); } 4.从键盘上输入一个百分制成绩score,按下列原则输出其等级: score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 #include <> void main(){

C语言函数练习题2

/* 姓名:白银 日期: 描述:英尺,英寸,米,厘米之间的转换*/ #include <> float GetInch(float feet); float GetMeter(float inch); float GetCentiMeter(float meter); void main() { float inch; float meter; float centimeter;

printf("请输入英尺的值\n"); scanf("%f",&feet); inch=GetInch(feet); printf("转换成英寸的结果是%.2f:",inch); printf("\n"); meter=GetMeter(GetInch(feet)); printf("转换成米的结果是%.2f:",meter); printf("\n"); centimeter=GetCentiMeter(GetMeter(GetInch(feet))); printf("转换成米的结果是%.2f:",centimeter); printf("\n"); } float GetInch(float feet) {

inch=feet*12; return inch; } float GetMeter(float inch) { float meter; meter=inch*; return meter; } float GetCentiMeter(float meter) { float centimeter; centimeter=meter*100; return centimeter;

C语言基础练习题(含答案)

目录 第1-3章C语言基础知识习题 (2) 1 选择题 (2) 2 填空题 (7) 3 答案及部分解析 (9) 第4章选择结构习题 (11) 1 选择题 (11) 2 填空题 (17) 3 答案及部分解析 (23) 第5章循环结构习题 (26) 1 选择题 (26) 2 填空题: (32) 3 答案及部分解题分析 (39) 第6章数组习题 (41) 1. 单项选择题 (41) 2. 填空题 (44) 3. 判断题 (45) 4. 程序填空题 (45) 5. 阅读程序,分析程序的功能。 (49) 第7章函数习题 (55) 1. 单项选择题 (55) 2. 填空题 (56) 3. 判断题 (57) 4. 程序填空题 (58) 5. 写出下列程序运行结果 (59) 第8章指针习题 (67) 1 选择题 (67) 2 填空题 (69)

第1-3章C语言基础知识习题 1 选择题 1. 以下不是C语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 3.正确的C语言标识符是()。 A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 5. 下列符号中,不属于转义字符的是()。 A.\\ B.\0xAA C.\t D.\0 6.不属于C语言关键字的是()。 A.int B.break C.while D.character 7.是C语言提供的合法关键字的是()。 A.Float B.signed C.integer D.Char 8.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 9.一个C程序是由()。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 11.下列说法中,错误的是()。 A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外 C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行

C语言练习题(带详解答案)

一单项选择题 1、( A)就是构成C语言程序得基本单位、 A、函数 B、过程 C、子程序 D、子例程 2、C语言程序从 C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中得main函数D) 包含文件中得第一个函数 3、以下说法中正确得就是( C )、 A、C语言程序总就是从第一个定义得函数开始执行 B、在C语言程序中,要调用得函数必须在main( )函数中定义 C、C语言程序总就是从main( )函数开始执行 D、C语言程序中得main( )函数必须放在程序得开始部分 4、下列关于C语言得说法错误得就是( B ) 。 A) C程序得工作过程就是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序得三种基本结构就是顺序、选择、循环 D) C程序从main函数开始执行 5、下列正确得标识符就是(C)、 A、—a1 B、a[i]C。a2_i D、int t 5~8题为相同类型题 考点:标识符得命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符得开头 (3)关键字不能作为标识符 选项A中得“—" ,选项B中“[”与“]"不满足(1);选项D中得int为关键字,不满足(3) 6、下列C语言用户标识符中合法得就是( B )。 A)3axB)x C)case D)—e2 E)union 选项A中得标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中得“-”不满足(1); 7、下列四组选项中,正确得C语言标识符就是( C )。 A) %xB) a+b C) a123 D) 123 选项A中得“%” ,选项B中“+"不满足(1);选项D中得标识符以数字开头不满足(2)

c语言练习题(2-3)

第二章练习题 —.选择题 1.以下选项中正确的整型变量是 A 12. B -20 C 1,000 D 4 5 6 2.以下选项中正确的实型变量 A 0 B 3.1415 C 0.329 D .871 3.以下选项中不正确的实型变量 A 2.607 B 0.8103e 2 C -77.77 D456e-2 4.不合法的用户标示符 A abc.c B file C Main D PRINTF 5.不合法的用户标示符 A _123 B printf C A$ D Dim 6.C语言中运算对象必须是整型的运算符 A % B / C ! D ** 7.可在c程序中用作用户标示符的一组是 A void B as_b3 C For D 2c define _123 -abc DO WORD If case SIG 8.若变量以正确定义并赋值,符合c语言语法表达式的是 A a=a+7; B a=7+b +c ,a++ C int (12.3%4) D a=a+7=c+b 9.以下叙述正确的是 A a是实型变量,C允许自由赋值 a=10,但不可以这样说:实型变量中允许存放整型值 B 在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式 C执行表达式a=b后,在内存中a和b存储单元中的原有值都将改变,a的值已有原有值改变为b的值,b的原有值变为0 D 已有a=3,b=5,当执行了表达式a=b,b=a之后使a的值变为5,b的值变为3 10.以下叙述正确的是 A 在c程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示 B c程序由主函数组成 C c程序由若干函数组成 D c程序只允许包含一个函数 11.VC6.0中int 类型变量所占字节数是 A 1 B 2 C 3 D 4 12.合法的八进制数是 A 0 B 028 C -077 D 01.0 13.不合法的十六进制 A oxff B 0Xabc C 0x11 D 0x19 二填空 1.若k为整型变量且赋值11.请写出运算k++后的表达式 的值____和变量k的值____ 2.若x为double型变量,请写出运算x=3.2,++x后的表 达式的值___和变量x的值____ 3.函数体由符号____开始,到符号____结束。函数体内的 前面是____部分,后面是___部分 4.C语言中的标示符可分为__ ,___和预定义标识符三类。 5.在c语言程序中,用关键字___定义基本整型变量,用 关键字___定义单精度实型变量,用关键字___定义双精 度实型变量 6.把a1,a2定义成双精度实型变量,并赋值 1的定义语句 是____ 7.C程序中定义的变量,代表内存中的___ 8.表达式3.5+1/2的计算结果是___ 9.对数学表达式,写出三个等价的c语言表达式 _____ 10.表达式s=10应当读作____ 三上机改错 1。#include stdio.h main(); /*main function*/ float r,s;/*/*r is radius*/,/*s is area of circular*/*/ r=5.0; s=3.14159*r*r; printf(“%f\n”,s); 2.main /*main function */ { float a,b,c,v; /*a,b,c are sides,v is volume of cube*/ a=2.0;b=3.0;c=4.0; v=a*b*c; printf(“%f\n”,v); } 第三章练习题 一.选择题 1.若a ,b,c都是int型变量且初值为0,以下选项中不正确的赋值语句 A a=b=c=100 B d++ C c+b D d=(c=22)-(b++) 2.下列选项中不是C语句的是 A {int I;i++;printf(“%d\n”,i);} B ; C a=5,c=10 D {;} 3.合法的c语言赋值语句 A a=b=58 B k=int(a+b) C a=58,b=58 D --i 4.有以下程序 #include main(0

C语言习题级答案2

选折题 1. int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为(A)。 A、1 B、不一定 C、3 D、2 2.以下选项中不合法的用户标识符是 B A、Dim B、printf C、_123 D、A$ 3. int i,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数1,2,3,4,5,6存入a数组的是(C)。 A、for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1; B、for(i=0;i<6;i++)a[i/3][i%3]=i+1; C、for(i=1;i<=6;i++)a[i][i]=i; D、for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1; 4.以下所列的C语言常量中,错误的是___A___。 A、1.2e0.5 B、0xFF C、2L D、'\72' 5.若有说明: int a[3][4]={0};则下面正确的叙述是(A)。 A、数组a中每个元素均可得到初值0 B、只有元素a[0][0]可得到初值0 C、此说明语句不正确 D、数组a中各元素都可得到初值,但其值不一定为0 6.以下正确的字符串常量是 D A、'abc' B、'A' C、OlympicGames D、"\\\" 7. C语言中,char类型数据占(C)。 A、8个字节 B、4个字节 C、1个字节 D、2个字节

8.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表 示的字符常量'\101'是____D__。 A、非法的常量 B、字符a C、字符e D、字符A 9.以下函数的类型是(D) fff(float x) { return 5; } A、与参数x的类型相同 B、void 类型 C、无法确定 D、int类型 10.以下叙述中正确的是(A)。 A、静态(static)类别变量的生存期贯穿于整个程序的运行期间 B、全局变量的作用域一定比局部变量的作用域范围大 C、函数的形参都属于全局变量 D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值 11.下列运算符中是C语言关系运算符的是(C)。 A、& B、~ C、!= D、! 12.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用 八进制表示的字符常量'\101'是(D)。 A、字符e B、字符a C、非法的常量 D、字符A 13.若有float x=213.82631;,则执行下列程序段的输出结果为(B)。printf("%3d",(int)x); A、213.82 B、213 C、213.83 D、3.8

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