C语言程序设计习题

合集下载

《C语言程序设计》练习题及答案

《C语言程序设计》练习题及答案

《C语言程序设计》练习题及答案1. 单选题1. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是A. p=1;B. *q=2;C. q=p;D. *p=5;正确答案:D2. 设有int x=11;则表达式(x++*1/3)的值是A. 3B. 4C. 11D. 12正确答案:A3. 下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));}A. 3B. 4C. 1D. 2正确答案:A4. sizeof(float)是A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式正确答案:B5. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A. a=20000+20000;B. a=4000*10;C. a=30000+10000;D. a=4000L*10L正确答案:D6. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));A. 5B. 14C. 8D. 输出项不合法,无正常输出正确答案:A7. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为A. 4B. 16C. 32D. 52正确答案:C8. 下面能正确进行字符串赋值操作的是A. char s[5]={"ABCDE"};B. char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};C. char *s;s="ABCDE";D. char *s;char a; scanf("%s",&s);正确答案:C9.以下程序的输出结果是#include "stdio.h"void reverse(int a[],int n){int i,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;reverse(b,8);for(i=6;i<10;i++) s+=b[i];printf("%d\n",s);}A. 22B. 10C. 34D. 30正确答案:A10. 以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值正确答案:D2. 多选题11. 以下______是正确的转义字符。

C语言程序设计经典100例(全)

C语言程序设计经典100例(全)

103f程序1】【题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

(完整版)C语言程序设计练习题(含程序及参考答案)

(完整版)C语言程序设计练习题(含程序及参考答案)

(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参考使⽤)1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。

#includeint fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。

#includevoid fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量c中。

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。

课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。

习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。

```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。

```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。

C语言程序设计(结构)习题与答案

C语言程序设计(结构)习题与答案

一、单选题1、设有定义:struct complex{int real, unreal;} data1={1,8},data2;则以下赋值语句中错误的是()。

A.data2.real=data1.unreal;B.data2=(2,6);C.data2=data1;D.data2.real=data1.real;正确答案:B2、设有定义:struct{char mark[12];int num1;double num2;} t1,t2;若变量均已正确赋初值,则以下语句中错误的是()。

A.t2.num1=t1.num1;B.t2.num2=t1.num2;C.t1=t2;D.t2.mark=t1.mark;正确答案:D3、有以下定义语句:struct student{int num;char name[9];};则不能正确定义结构体数组并赋初始值的是( )。

A.struct stu[]={{1,"zhangsan"},{2,"li si"}};B.struct student stu[2]={{1,"zhangsan"},{2,"li si"}};C.struct student stu[2]={1, "zhangsan",2,"li si"};D.struct student stu[]={{1,"zhangsan"},{2,"li si"}}; 正确答案:A4、有以下程序:#include<stdio.h>struct S{ int a,b;}data[2]={10,100,20,200};int main(){struct S p=data[1];printf("%d\n",++(p.a));return 0;}程序运行后的输出结果是()。

C语言程序设计练习题(答案)

C语言程序设计练习题(答案)

C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。

图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。

如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。

要事先准备好保存文件的目录,例d:\lx 目录。

在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。

设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。

图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。

图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。

在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。

内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。

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

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

第1次客观题作业一、单选题(共30题,每题3分)1 .下面表示正确的是__A___。

A.C语言中的逗号是一种运算符B.在C语言中,一行只能有一个语句C.C中的变量不区分大小写D.c中的关键字可以做为变量名2 .字符型常量在内存中存放的是__A____代码值。

A.ASCII B.二进制C.十进制D.八进制3 .以下不正确的C语言标识符是(C )。

A.AB1 B._ab3 C.4ab D.a2_b4 .以下运算符中优先级最低的运算符是_D____。

A.&& B.& C.|| D.=5 .在C语言中,要求运算数必须是整型的运算符是___A___。

A.% B./ C.< D.!6 . C语言程序的基本单位是__C_____。

A.程序行B.语句C.函数D.字符7 .将高级语言编写的程序翻译成目标程序的是___B____程序。

A.解释程序B.编译程序C.汇编程序D.源程序8 .以下选项中,与k=n++完全等价的表达式是__A___。

A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+19 .下列(A )不属于结构化程序设计的循环结构。

A.For B.While C.if-else D.do-while10 .以下叙述中错误的是__A___。

A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识11 .若有输入语句scanf( %d%d%d,&x,&y,&z);则不能使x值为5,y值为6,z值为7的输入是__A____。

A.5,6 ,7 B.5回车换行 6 7 C.5 6 7 D.5,6,712 .若i,j已定义为int类型,则下程序段中内循环体的总的执行次数是( B )。

for (i=3;i>0;i--) for (j=0;j<=4;j++){...}A.12 B.15 C.16 D.2013 .下列选项中,合法的C语言关键字是_D___。

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

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

C语言程序设计习题及答案算法与程序设计1.将三个数排序需要比较______次A、2B、3C、4D、不确定2.算法的表示方法有________A、自然语言,传统流程图,N-S流程图,伪代码,计算机语言B、高级语言,汇编语言,机器语言C、C语言,QBASIC语言,InterDevD、图形图像法,描述法,编程法E、计算机语言3.算法的表示方法有_______4.算法有哪些特性?5.什么叫算法?为什么要提倡结构化算法?习题答案:1.B 2.A 3 自然语言,传统流程语言,N-S流程图,伪代码,计算机语言 4.略 5.略C语言概述1.C语言程序的基本单位是(A )。

A、函数B、过程C、子程序D、子例程2.下列各选项中,合法的c语言关键字是( D )。

A、integexB、sinC、stringD、void3.下列选项中,是C语言提供的合法的关键字的是( C )A、swicthB、cherC、defaultD、Case4.下列叙述不正确的是( B )A、在c程序中,%是只能用于整数运算的运算符B、在C程序中,无论是整数还是实数,都能正确无误地表示C、若a是实型变量,c程序中a=20是正确的,因此实型变量允许被整型数赋值D、在C程序中,语句之间必须要用分号“;”分隔5.在C程序中,可以作为用户标识符的一组标识符是( B )。

A、void define WORDB、as_b3 _224 ElseC、switch _wel easeD、4b DO SIG6.下列不合法的十六进制数是( A)A、oxffB、0XcdeC、OxllD、Ox237.在c语言中,下列合法的字符常量是( B )A、'\039'B、'\x76'C、'ab'D、'\o'8 以下选项中合法的用户标识符是( D )A、intB、a#C、5memD、_2439.(A )是构成c语言程序的基本单位A、函数B、变量C、子程序D、语句10.一个C语言程序总是从( B )开始执行A、主过程B、主函数C、子程序D、主程序11.以下叙述不正确的是( D )A、一个c源程序可由一个或多个函数组成B、一个C源程序必须包含一个main()函数C、c程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面12.在C语言中,数字029是一个(D)A八进制数B十六进制数C十进制数 . D非法数13.C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符( C )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题5参考解答1.数组是相同数据类型的集合,分为一维数组、二维数组及多维数组。

在什么情况下使用数组?在什么情况下使用一维数组?解:当需要处理的数据为相同类型的数据的集合时,可以使用数组。

如果这些数据的描述用一个量就可以,这时就用一维数组。

例如,一组学生的学号,就可以使用一维数组。

2.数组元素又称为下标变量,数组元素的下标有何意义?解:下标的意义是对数组的各个数组元素进行标识和区分。

由数组名和下标结合起来形成数组元素的名字。

3.使用字符数组来存储字符串应注意什么问题?解:需要注意的问题是字符数组在存储字符串时是以'\0'作为结束标记的。

这个'\0'是系统自动加上的。

所以字符数组的长度需要比它要存储的字符串的长度至少多1。

例如,要存储字符串"abcd",因为它的长度为4,所以存储它的字符数组的长度至少为5。

4.常用的字符处理函数有哪些?解:常用的字符处理函数有以下8个。

(1)puts(字符串):作用为将一个字符串输出到终端。

(2)gets(字符数组):作用为从终端输入一个字符串到字符数组,并且得一个函数值。

(3)strcat(字符串1,字符串2):作用为进行字符串的连接。

(4)strcpy(字符串1,字符串2):作用为进行字符串的复制。

(5)strcmp(字符串1,字符串2):作用为进行字符串的比较。

(6)strlen(字符串):作用为求字符串的长度。

(7)strlwr(字符串):作用为将字符串中的大写字母转换成小写字母。

(8)strupr(字符串):作用为将字符串中的小写字母转换成大写字母。

5.随机产生10个两位整数存储到一个一维数组中,找出其中的最大数。

解:#include<>#include<>#define random(x) (rand()%x)int main(){int a[10],max;int x;for(x=0;x<10;x++)a[x]=random(100);max=a[0];for(x=0;x<10;x++){if(a[x]>max)max=a[x];printf("%4d",a[x]);}printf("\nmax=%d\n",max);return 0;}程序运行结果如下:41 67 34 0 69 24 78 58 62 64max=786.输入10个整数,要求按照从小到大的顺序输出。

解:#include<>void main(){int i,j,min,t,a[10];printf("请输入10个数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(i=0;i<10-1;i++){min=i;for(j=i;j<10;j++)if(a[min]>a[j]) min=j;t=a[i];a[i]=a[min];a[min]=t;}printf("\n排序结果如下:\n");for(i=0;i<10;i++)printf("%5d",a[i]);}程序运行情况如下:请输入10个数:6 90 45 56 1 15 44 78 58 101排序结果如下:1 6 15 44 45 56 58 78 90 1017.输入10个字符,并将它们的顺序颠倒后输出。

解:#include<>#define N 10void main(){char a[N],t;int i;/* 输入10个字符并输出*/printf("请输入10个字符:\n");for(i=0;i<10;i++){scanf("%c",&a[i]);}/*顺序颠倒*/for(i=0;i<N/2;i++){t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;}printf("顺序颠倒后的字符:\n");for(i=0;i<N;i++)printf("%c",a[i]);}程序运行情况如下:请输入10个字符:09↙顺序颠倒后的字符:108.写出下列程序的运行结果。

(1)#include<>void fun(int b[]){int i=0;while(b[i]<=10){b[i]+=2;i++;}}int main(){int i,a[]={1,5,7,9,11,13,15};fun(a+2);for(i=0;i<7;i++)printf("%5d",a[i]);return 0;}解:1 5 9 11 11 13 15(2)#include<>int main(){int a[3][3],i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=i;for(i=0;i<3;i++)printf("%5d",a[1][i]);return 0;}解:1 1 1(3)#include<>int main(){int k;int a[3][3]={1,2,3,4,5,6,7,8,9};for(k=0;k<3;k++)printf("%d ",a[k][2-k]);return 0;}解:3 5 7(4)#include <>#include <>int main(){char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde";strcpy(p+strlen(q),r); strcat(p,q);printf("%d\n%d\n",sizeof(p),strlen(p));return 0;}解:2011(5)#include <>#include <>void f(char p[][10],int n ) /* 字符串从小到大排序 */ {char t[10];int i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); } }int main(){char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));return 0;}解:39.求一个3×3矩阵对角线元素之和。

解:#include<>main(){float a[3][3],sum=0;int i,j;printf("请输入矩阵元素:\n");for (i=0;i<3;i++)for (j=0;j<3;j++)scanf("%f",&a[i][j]);for (i=0;i<3;i++ )sum=sum+a[i][i];printf("对角线元素之和=%.2f\n",sum);}程序运行情况如下:请输入矩阵元素:1 2 3 4 5 6 7 8 9↙对角线元素之和=10.找出一个二维数组中的鞍点,所谓鞍点是指该位置上的数在该行最大,在该列最小。

需要注意的是,并不是所有的二维数组都有鞍点。

解:#define N 10#define M 10#include <>void main(){int i,j,k,m,n,flag1,flag2,a[N][M],max,maxj;printf("\n输入行数n:");scanf("%d",&n);printf("\n输入列数m:");scanf("%d",&m);for (i=0;i<n ;i++ ){printf("第%d行?\n",i);for (j=0;j<m ;j++ )scanf("%d",&a[i][j]);}for (i=0;i<n ;i++ ){for (j=0;j<m ;j++ )printf("%5d",a[i][j]);printf("\n");}flag2=0;for (i=0;i<n ;i++ ){max=a[i][0];maxj=0;for (j=0; j<m;j++ )if (a[i][j]>max){max=a[i][j];maxj=j;}for (k=0,flag1=1;k<n && flag1;k++ )if (max>a[k][maxj])flag1=0;if (flag1){printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max);flag2=1;}}if(!flag2)printf("\n矩阵中无鞍点!\n");}矩阵中有鞍点,运行情况如下:输入行数n:2↙输入列数m:2↙第0行?4↙5↙第1行?4↙6↙4 54 6第0行,第1列的5是鞍点矩阵中无鞍点,运行情况如下:输入行数n:2↙输入列数m:2↙第0行?90↙7↙第1行?5↙8↙90 75 8矩阵中无鞍点!11.某班有30个学生,每个学生参加了5门课程的考试,请编程显示该班的期末成绩单,并求出每个学生的所有课程的总分。

解:#include<>void main(){int score[31][7];int i,j;for(i=1;i<=30;i++)score[i][0]=i;printf("请依次输入30个学生的五门课的成绩\n");for(i=1;i<=30;i++){printf("请依次输入第%d个学生的五门课的成绩\n",i);for(j=1;j<=5;j++)scanf("%d",&score[i][j]);}for(i=1;i<=30;i++){score[i][6]=0;for(j=1;j<=5;j++)score[i][6]+=score[i][j];}printf("期末成绩单\n");p rintf("%10s%10s%10s%10s%10s%10s%10s\n","学号","课程1","课程2","课程3","课程4","课程5","总分");f or(i=1;i<=30;i++){for(j=0;j<=6;j++)printf("%10d",score[i][j]);printf("\n");}}程序运行情况如下:请依次输入30个学生的五门课的成绩请依次输入第1个学生的五门课的成绩78 89 98 96 98↙请依次输入第2个学生的五门课的成绩89 95 98 97 96↙请依次输入第3个学生的五门课的成绩78 79 74 78 75↙按照上面示例自行输入27个学生的五门课的成绩。

相关文档
最新文档