C语言入门学习-C上机实验八要求

C语言入门学习-C上机实验八要求
C语言入门学习-C上机实验八要求

上机实验八指针综合练习&函数初步

【实验七参考答案见后】

目的和要求:

(1)继续熟悉指向字符串的指针;

(2)掌握二维数组列指针、行指针的使用要领;

(3)了解指针数组的作用;

(4)了解自定义子函数的一般应用;

(5)掌握值传递的要领,了解地址传递的特点。

实验内容:

一、完善程序题

1.以下程序统计指定句子(即只含有字母、空格、句号的字符串)中的单词个数,并输出每个单词。【本题的思路是:将每个单词存放到二维数组的每一行,则存放的行数即为单词的个数。】

#include

#include

main()

{char *text=" I will pass the examination in the summer holiday." ;

int n, i, j, word;

char a[20][80];

while(*text==' ' )text++; /*去掉前导空格*/

n=0; j=0;

for(i=0; i

if(isalpha(*(text+i))) /* isalpha 函数的功能是判断其参数是否为字母,要加"ctype.h"*/

{a[n][j++]= _________ ; word=0;}

else

if(word==0){ word=1; _________; ________; ________; }

printf("It has %d word.\n\n", n);

for(i=0;i

puts(a[i]);

}

2.用指针完成下列任务:输出如下矩阵:

1 2 3 4

5 6 7 8

9 10 11 12

【法一:使用列指针完成,双重循环】

#include "stdio.h"

main()

{int a[3][4],i,j,k=1;

int *p;

p=__________;

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

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

*(p+__________)=k++;

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

{for(j=0;j<4;j++) printf("%3d", a[i][j]);

printf("\n");}

}

【法二:使用列指针完成,单循环】

#include "stdio.h"

main()

{int a[3][4],i,j=1;

int *p;

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

a[__________][ __________]=j++;

p=a[0];

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

{for(j=0;j<4;j++) printf("%3d", *(p+__________));

printf("\n");}

}

【法三:使用行指针完成】

#include "stdio.h"

main()

{ int a[3][4] ,i, j, k=1;

____________________

q=a;

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

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

*(*(__________) + _________)=k++;

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

{for(j=0;j<4;j++) printf("%3d",____________________);

printf("\n");}

}

3.任意读入5个字符串,用选择法降序排列后输出,并将最大串和最小串连接后输出。例如,读入:

I

love

you

very

much

则输出:

you

very

much

love

I

合并后的串:youI

【程序如下,请填空:】

#include

#include

#define N 5

main()

{char s[N][20]; //假设每个串的串长都小于20

char h[40]="";

char *p[N]; //借助指针数组,可以只交换指向串的指针,不交换串本身int i,j,k;

for(i=0;i

__________;

for(i=0;i

gets(s[i]);

//以下用选择法排序

for(i=0;i<=N-2;i++)

{k=i;

for(j=i+1;j<=N-1;j++)

if(____________________)k=j;

if(k!=i)

{char *t;

t=p[i];

__________;

__________;}

}

puts("降序排列后:");

for(i=0;i

puts(__________);

strcat(____________________);

printf("合并后的串:%s\n", h);

}

4.任意读入两个正整数,调用子函数求得二者的最大公约数和最小公倍数。

#include

main()

{int x, y , gys , gbs ;

________________________________________;

do

scanf("%d%d", &x ,&y);

while(x<=0||y<=0);

________________________________________;

printf("%d和%d的最大公约数是%d,最小公倍数是%d\n",x,y,gys,gbs);

}

void GYS_GBS(int a,int b,int *gy,int *gb)

{int c,r;

c=a*b;

r=a%b;

while(_________________)

{a=b;

b=r;

____________________;

}

___________=b;

___________=c/b;

}

二、编程题

任意读入一个大偶数(≥4),可以拆分成两个素数之和。编程按“x=s1+s2”的格式输出所有的素数对。【要求:素数判断由子函数完成。并且结果不能出现两个相同的素数对,例如:输入28,则输出结果为:28=5+23

28=11+17

若输出结果中还有“28=17+11”就重复了!】

【实验七参考答案】

一、完善程序题

1.任意读入10个整数,输出其中所有偶数的和。(使用指针完成)

#include

main()

{int a[10],s=0;

int *p;

for(__ p=a __;p

scanf("%d", __ p__);

for(__ p=a __;p

if(*p%2==0) s+=__*p _;

printf("%d\n",s);

}

2.任意读入一个含有若干空格的字符串,将其中的每一个空格改用字符*替代。

例如,读入:“We like C very much!”

则输出:“We*like*C*very*much!”

#include

main()

{char s[80];

char *p;

p=s;

gets(p);

while(*p!='\0')

{if(*p==' ')

*p='*';

p++;

}

puts( s );

}

3.以下程序的功能是:求得数组a中的最大数和最小数,再交换这两个元素的值后输出数组a,并将结果保留到my文件夹下的sz.txt中。

例如,读入a数组中的值为:

最后输出:

#include

#define N 10

main()

{FILE *fp;

int a[N],i,t;

int *p=a,*max,*min;

fp=fopen("C:\\my\\sz.txt","w");

for(i=0;i

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

max=min=a; //或max=min=&a[0];

for(i=1;i

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

max=p+i;

else if(*(p+i)<*min)

min=p+i;

t=*max;

*max=*min;

*min=t;

for(i=0;i

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

fprintf(fp,"%d ",a[i]);

}

fclose(fp);

}

4.如果一个数及该数的反序数都是素数,则称该数为可逆素数。例如17是素数,17的反序数71也是素数,因此17便是一个可逆素数。以下程序判断给定的8个素数是否为可逆素数,并输出其中所有的可逆素数。

【程序的运行结果为】

17是可逆素数

37是可逆素数

739是可逆素数

1949是可逆素数

#include

main()

{int ss[8]={17,19,23,37,67,103,739,1949},i;

int fxs,flag,k,x;

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

{x=ss[i];

fxs=0;

while(x!=0)

{fxs=fxs*10+x%10;

x=x/10;

}

flag=1;

for(k=2;k<=fxs-1;k++)

if(fxs%k==0)

{flag=0;

break;

}

if(flag)

printf("%d是可逆素数\n", ss[i] );

}

}

二、编程题

任意读入10个字符串,将它们降序排列后输出。

#include

#include

#define N 10

main()

{char a[N][80],t[80];

int i,j;

for(i=0;i

gets(a[i]);

for(j=1;j<=N-1;j++)

for(i=0;i<=N-1-j;i++)

if(strcmp(a[i],a[i+1])<0)

{strcpy(t,a[i]);

strcpy(a[i],a[i+1]);

strcpy(a[i+1],t);

}

for(i=0;i

puts(a[i]);

}

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

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

c语言程序基础练习题00道(附答案)

1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x 3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\"' B) '\1011' C) '\011' D) '\abc' '\\' '\' '\f' '\101' 'xf' '\A' '\}' 'x1f' 4.下面不正确的字符串常量是( A )。 A)'abc' B)"12'12" C)"0" D)" " 5.以下选项中不合法的用户标识符是( A )。 A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case D)default 7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer D) keep%与wind 8.在C语言中,逻辑值"真"的表示是用( C )。 A) true B) 整型值0 C)非另整型值 D) T 9若有以下定义 char s='\092'; 则该语句( b ) A)使s的值包含一个字符 B)定义不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符 10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。 A)1 B)2 C)8 D)4 11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。 A)D B)68 C)不确定的值 D)C 12逻辑运算符两侧运算对象的数据类型是 ( D )。 A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。

C语言入门必做习题100例(四)

1. (N阶梵塔) 有K根棒,第一根上放N片大小不等的圆盘,并保持上小下大的 顺序。现将N片圆盘从第1根移至第K根,移动中均保持上小下大的顺序,问最少移几次方得结果,求出移动方案。 2. 某一印刷厂有六项加工任务,对印刷车间和装订车间所需时间见下表(时间单位:天) 任务│J1 J2 J3 J4 J5 J6 ─────┼─────────────── 印刷车间│31252911 装订车间│8109631 如何安排加工顺序,使加工时间最少。 3. 将7万元投资到A,B,C三项目上,其利润见下表: 投资额(万元)│1234567 ──────┼──────────────────── 项A│0.11 0.13 0.15 0.24 0.24 0.30 0.35 B│0.12 0.16 0.21 0.25 0.25 0.29 0.34 目C│0.08 0.12 0.20 0.26 0.26 0.30 0.35 如何分配投资额,使获得的利润最大。 4. 无根树与通常所说的树(有根树)很相似,它包含有节点和枝,但不含有根。无根树节点之间只有相邻关系。如图一所示,是一棵有七个节点的无根树,以图一的A为根节点得到图二所示的有根树,以B为根节点得到图三所示的有根树,但从无根树的角度看,图一、二、三是结构相同的无根树,同时无根树的结构与节点的名称无关。 有根树可以用字符串的形式表示,其递归表示方法是: 根节点(子树1子树2子树3...) 图一,图二的有根树可表示为 A(B(CF(EGD))) 和 B(ACF(EGD))。由于子树的表示顺序可以不同,所以一棵有根树可以有多种表示方法,如图三又可表示成 B(F(EGD)CA) 或 B(ACF(DE(G)) 等。表示无根树时,可以以它任一节点为根节点,将其看作有根树,从而可以利用有根树的字符串表示形式来表示无根树。 任务一:由键盘读入一个字符串表示的无根树,无根树的各节点的名称用互不相同的大写英文字母表示。由用户输入一个节点的名称,程序应能够输出一种以该 节点为根节点的字符串形式。程序输出无根树的字符串形式时,各个节点的名称无 关紧要,所有节点都以P表示,以后的各种输出也采用这种形式。例如:输入无根 树的字符串形式:A(B(CD(EF))),指定根节点为D,程序应能输出 P(P(PP)PP),P(PP(PP)P),P(PPP(PP))中的任意 一种即可。 任务二:输入两个串表示的无根树,判断其结构是否一样。注意它与节点名称 无关,只考虑结构。

C语言初学者的几个经典习题

1.求两个数的最小公倍数: #include void main() { int a,b, num1,num2,temp; printf("请输入两个数:\n"); scanf("%d%d",&num1,&num2); if (num1 int sum_day(int year,int month,int day); void main() { int year,month,day;int days; printf("请输入要查询的年月日\n"); scanf("%d%d%d",&year,&month,&day); days=sum_day(year,month,day); printf("该天是%d天\n",days); } int tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int sum_day(int year,int month,int day) { int i,days=0; if(year%4==0&&year%100!=0||year%400==0) tab[2]=29; for(i=1;i int isprime (int a); void main()

C语言程序设计基础知识 习题一及参考答案

第一章:程序设计基础知识 一、单项选择题 1、以下( )是面向过程的程序设计语言。 A)机器语言B)汇编语言C)高级语言D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是( )。 A)设计数据结构和算法B)建立数学模型 C)编写程序D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是( )。 A)枚举法B)递推法C)分治法D)排序法 4、以下不属于算法基本特征的是( )。 A)有穷性B)有效性C)可靠性D)有一个或多各输出 5、以下描述中不正确的是( )。 A)程序就是软件,但软件不紧紧是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是( ) A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是( )。 A)递归法的关键是必须有一个递归终止的条件。

B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是( )。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(数据结构算法) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性) 11、用模块组装起来的程序被成为________结构化程序。(模块化) 12、采用自上而下,逐步求精的设计方法便于____________。(结构化和模块化) 三、应用题

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

目录

第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.Void 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语言基础选择试题(一)

C语言基础选择试题(一) 2123 答案 :C 所谓“裸机”是指( )。 a:没有安装机箱 b:没有安装应用软件 c:没有安装任何软件的计算机 c:只安装操作系统的计算机 2145 答案 :D 可用于大小写字母转换的键是( )。 a:Esc b:CapsLock c:Shift c:CapsLock或Shift 1068 答案 :D 计算机病毒的主要特征是()。 a:只会感染不会致病 b:造成计算机器件永久失效 c:格式化磁盘 c:传染性、隐蔽性、破坏性和潜伏性 1054 答案 :D 个人计算机属于( ) 。 a:小型计算机 b:中型计算机 c:巨型计算机 d:微型计算机 1080 答案 :B 用汉语拼音输入“长沙”两个汉字,输入“changsha”8个字符,那么,“长沙”两字的内码所占用的字节数是()。 a:2 b:4 c:8 c:16 1053 答案 :A 操作系统的功能是( )。 a:提高系统资源的利用率,方便用户使用计算机 b:负责给程序和数据分配内存空间 c:负责各种文件的管理 c:管理磁盘文件和I/O设备管理 1055 答案 :C 组建以太网时,通常都是用双绞线把若干台计算机连到一个中心的设备上,这个设备叫做()。 a:网络适配器 b:服务器 c:集线器 c:总线 1057 答案 :D

应用软件是指( )。 a:所有能够使用的软件 b:能被各应用单位共同使用的某种软件 c:所有微机上都应用的基本软件 c:专门为某一应用目的而编制的软件 1078 答案 :B 为网络提供共享资源并对这些资源进行管理的计算机称之为()。 a:网卡 b:服务器 c:工作站 c:网桥 1082 答案 :B 在Windows98中运行应用程序时,下列哪个操作调不出帮助信息()。 a:按F1键 b:按F10键 c:单击“帮助”菜单 c:单击窗口右上角“”按钮 1068 答案 :A ISO/ OSI参考模型七层协议中第一层是()。 a:物理层 b:数据链路层 c:网络层 c:传输层 2083 答案 :A 解释程序的功能是()。 a:解释执行高级语言程序 b:解释执行汇编语言程序 c:将汇编语言程序翻译成目标程序 c:将高级语言程序翻译成目标程序 1071 答案 :B 在计算机网络术语中,WAN的中文意义是()。 a:以太网 b:广域网 c:互联网 c:局域网 1055 答案 :C 主存储器又称为()。 a:RAM b:ROM c:内存 c:外存 1056 答案 :D 把同种或异种类型的网络相互连接起来称为()。 a:广域网 b:万维网(WWW c:城域网 c:互联网

40个C语言的基础编程题

C语言基础编程题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 2.程序源代码: main() {long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ }} ================================= =======【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码: #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) {printf("%-4d",m);h++; if(h%10==0) printf("\n"); } leap=1;} printf("\nThe total is %d",h);} ================================= ======= 【程序3】 题目:打印出所有的“水仙花数”,所谓“水仙花 数”是指一个三位数,其各位数字立方和等于该数本 身。例如:153是一个“水仙花数”,因为153=1的 三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数 分解出个位,十位,百位。 2.程序源代码: main() {int i,j,k,n; printf("'water flower'number is:"); for(n=100;n<1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n");} ================================= =======【程序4】 题目:将一个正整数分解质因数。例如:输入90,打 印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小 的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程 已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值, 并用n除以k的商,作为新的正整数你n,重复执行第 一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复 执行第一步。 2.程序源代码: /* zheng int is divided yinshu*/ main() {int n,i; printf("\nplease input a number:\n"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) { while(n!=i) {if(n%i==0) { printf("%d*",i); n=n/i; } else break; } } printf("%d",n);} ================================= =======【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成 绩>=90分的同学用A表示,60-89分之间的用B表 示,60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 2.程序源代码: main() { int score; char grade; printf("please input a score\n"); scanf("%d",&score); grade=score>=90?'A':(score>=60?'B':'C'); printf("%d belongs to %c",score,grade);} ================================= =======【程序6】 题目:输入两个正整数m和n,求其最大公约数和最 小公倍数。 1.程序分析:利用辗除法。 2.程序源代码: 第一种做法: #include "stdio.h" void main() { int m,n,i; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); if(m='a'&&c<='z'||c>='A'&&c<='Z') letters++; 编辑版word

C语言入门必做习题100例(三)

C语言的学习其实很简单的,下面是我整理的关于C语言的试题,希望对C语言的初学者有所帮助! 1. (数列的最小代价) 给定一个正整数序列,例如:4,1,2,3, 不改变数的位置把 它们相加,并且由括号来标记每一次加法所得到的和。例如:((4+1)+(2+3))= ((5)+(5))=10. 除去原数4、1、2、3之外,其余都为中间结果,如:5,5,10, 将中 间结果相加,得到:5+5+10=20, 数20 称为此数列的一个代价。对于另一种算法: (4+((1+2)+3))=(4+((3+3))=(4+(6))=10, 得到数列的另一个代价为:3+6+10=19. 若给出N 个数的数列,求出此数列的最小代价。 2. 设有一个字符串,长度小于100,且全部以英文字母组成。对字串中的每个字母可用0,1,2 三个数字进行编码,且数字可以重复使用。 程序要求:(1) 输入字符串,并能判断输入是否有错; (2) 输出对应的编码表及码长,要求字串的编码总长度为最短; (3) 根据上述编码表,给出一些编码,然后求出其原字符串。 例如:输入的字符为:ABCBAAADDEF 其对应的编码表为: A: 2 B: 10 C: 11 D: 12 E: 00 F: O1 对应的编码为:210111022212120001 总码长为:18 3. 某些密码由N 个英文字母组成(N〈26), 每个字母的平均使用率为:W1,W2,... ,Wn, 要求编程完成下列任务: ①键入英文字母及个数; ②键入N个英文字母的使用频率; ③用二进制数对该N个英文字母进行编码(最短,无二义性); ④键入字母短文(单词用空格区分),输出相应编码; ⑤键入二进制编码短文,输出译文。 4. 将4个红球,3个白球与3个黄球排成一排,共有多少种排法? 5. 有面值为M..N 的邮票各一枚,共能拼出多少不同的面额。 6. 有一个四阶方阵,随机产生1..16 这16 个自然数(不重复),依次填入每 个方格中。要求用最少的对调次数,使每一行、每一列以及对角线上的四个数之和均相等。打印每一次对调的过程。 7. 微型蓝球赛. 甲,乙两队进行蓝球比赛,结果甲队以S:T 获胜.(T

大学生C语言期末考试必做题库

C语言

第一题 在屏幕上显示一个短句“Programming in C is fun!” #include int main() { printf("Programming in C is fun!\n"); return 0; } 第二题 在屏幕上显示如下网格。 +---+---+ | | | | | | +---+---+ #include int main( ) { printf("+---+---+\n| | |\n| | |\n+---+---+\n"); return 0; } 第三题 在屏幕上显示一条语句“This is a C program.” #include int main() { printf("This is a C program.\n"); return 0; } 第四题 输出如下图形: ********** very good! ********** #include int main( ) { printf("**********\nvery good!\n**********\n"); return 0; }

第一题求平方根(基础) 程序填空,不要改变与输入输出有关的语句。 输入1个实数x,计算并输出其平方根(保留1位小数)。 例:输入17输出The square root of 17.0 is 4.1 #include #include int main( ) { double x, root; scanf("%lf", &x); root=sqrt(x); printf("The square root of %0.1f is %0.1f\n", x, root); return 0; } 第二题计算一个三位数的个十百位之和 编写程序。 输入一个三位数(大于0),计算这个三位数的个位、十位、百位数字之和. 例如:输入:152输出:sum=8 #include #include int main() { int n,a,b,c,sum; scanf("%d",&n); a=n/100; b=n%100/10; c=n%10; sum=a+b+c; printf("sum=%d\n",sum); return 0; } 第三题(公共)求圆的周长、面积及圆球体积 程序填空,不要改变与输入输出有关的语句。 求以r为半径的圆周长c和圆面积s,再求以r为半径的圆球体积v。(已知r=3.67在程序中直接赋值,pi的值为3.1415926) 按照下列形式输出: printf("c=%f\ns=%f\nv=%f\n",c,s,v); #include int main( ) { double r,c,s,v,pi=3.1415926; r=3.67; c=2*pi*r;

C语言经典编程练习题和答案详解入门必备

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: #include “stdio.h” #include “conio.h” main() { inti,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); } getch(); } 【程序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.程序源代码: #include “stdio.h” #include “conio.h” main() { longinti; int bonus1,bonus2,bonus4,bonus6,bonus10, bonus; sc anf(“%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; else bonus=bonus10+(i-1000000)*0.01;

计算机二级《C语言》基础练习题及答案(1)

2016年计算机二级《C语言》基础练习题及答案(1) 1[简答题]下列给定程序中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。 例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。 请改正程序中的错误,使它得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更 改程序的结构! 试题程序: 参考解析: 【参考答案】 (1)t=*x;*X=Y;(2)return(t);或return t;

【考点分析】 本题考查:指针型变量的使用;通过return语句完成函数值的返回。 【解题思路】 首先,定义变量t作为中间变量,然后进行数据交换,注意参数x是指针变量,交换时应使用*x,最后确定返回值;根据代码b=fun(8a'b),可以知道返回值将赋给变量b,而b 中应存放交换前*x中的值,所以函数应返回变量t。 2[单选题] 有以下程序 程序运行后的输出结果是 A.3 B.1 C.2 D.4 参考答案:C 参考解析:本题考查函数的递归调用,将函数参数带入函数中,一步步递归即可得到结果,结果为2,选项C正确。 3[单选题] 以下叙述中正确的是( ) A.在算法设计时,可以把复杂任务分解成一些简单的子任务 B.在C语言程序设计中,所有函数必须保存在一个源文件中

C.只要包含了三种基本结构的算法就是结构化程序 D.结构化程序必须包含所有的三种基本结构.缺一不可 参考答案:A 参考解析:C语言的程序中,函数不一定都放在同一个源文件中,可以分别放在不同源文件中,通过#inClude命令来引用,所以B错误。结构化程序可以包含三种基本结构中的一种或几种,所以C,D错误。 4[单选题] 若有语句:int a[3][4],(。P)[4];P=a;,则以下选项中叙述错误的是( )。 A.系统将开辟一个名为P的二维数组,“o][o]中的值即为a[o][o]中的值 B.P+1代表a [1][0]的地址C.P中将存放a数组的首地址D.P+2代表a数组最后一行的首地址 参考答案:A 参考解析:(+P)[4]定义了一个数组指针。P可以指向类似于arry[][4]的数组,题设中,P不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。P+1代表了第一行第一个元素的地址,P=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。故答案为A选项。 5[单选题] 有以下程序: 程序运行后的输出结果是( )。 A.11,11 B.29,29 C.26,29 D.121.121 参考答案:B 参考解析:#define命令是c语言中的一个宏定义命令,标识符一般使用大写,为了区分其他标识符,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。S(k+j+2)=k+j+2}k+j+

(完整版)C语言基础知识综合练习题

一、C语言基本知识和基本语句 (一)选择题 1.设a,b和c都是int型变量,且a=3,b=4,c=5则下面的表达式中,值为零的表达式是()。 A)‘a’&&’b’ B) a<=b C) a || b+c&&b-c D) ! ((a= ‘A’ && ch <=‘Z’) ? ( ch + 32):ch,则表达式ch的值是()字符。 A) A B) a C) Z D) z 3.若x和y都是int 型变量,x=100,y=200,且有程序段:printf (“%d”,(x,y));则输出结果是()。 A) 200 B)100 C) 100,200 D)输出格式不够,输出不确定的值4.C语言中最简单的数据类型包括()。 A)整型、实型、逻辑型 B) 整型、单精度型、双精度、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型5.C语言中,运算对象必须是整型的运算符是()。 A)% B) / C) % 和 / D) ** 6.数学关系x≥y≥z ,它对应C语言表达式是()。 A)(x>=y)&& (y>=z ) B) (x>=y) AND (y>=z ) C) (x>=y>=z) D) (x>=y) & (y>=z ) 7.以下说法中正确的是()。 A)C语言程序总是从第一个定义的函数开始执行 B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序的开始部分 8.设int x=10,y=3,z;则语句printf (“%d\n”,z=(x%y,x/y));的输出结果是()。 A) 1 B) 0 C) 4 D) 3 9.C语言表达式10 != 9 的值是()。 A)true B) 非零值 C) 0 D) 1 10.合法的C语言字符常量是()。 A)’\t’B) “A” C) 65 D) A 11.若int类型数据占两个字节,则下列语句的输出为()。 int k = -1 ; printf (“%d,%u\n ”,k,k); A)- 1,- 1 B) – 1,32767 C) –1,32768 D) –1,65535 12.组成C语言程序的是()。 A)子程序 B) 过程 C) 函数 D) 主程序和子程序

C语言基础题

第一单元C语言概述 一、选择题 1、C语言中主函数的个数为()个。 A)1 B)2 C)无穷个D)任意个 2、以下关于C语言描述错误的是()。 A)一个C程序总是从main函数开始执行 B)每个语句和数据声明的最后必须有一个分号 C)C语言的注释符是以“/*”开始并以“*/”结束的 D)一个C程序可以包含多个main函数 3、C 语言源程序文件后缀为()。 A).EXE B).OBJ C) .C D).ASM 4、C语言是由()组成的。 A)子程序 B)主程序与子程序C)函数D)过程 5、C语言属于()语言 A)机器语言B)汇编语言C)高级语言D)面向对象语言 第二单元 C语言基础 一、选择题 1、C语言中普通整型变量int在内存中占()字节。 A)1 B)2 C)3 D)4 2、下列不是C语言基本数据类型的是()。 A)字符型 B) 整型 C) 浮点型 D) 结构体 3、有关自增、自减运算,以下只有()是正确的。

A) ---f B) ++78 C) a—b++ D) d++ 4、已知A=,B=2,C=,表达式(A>B && C>A) || (AB)的值是()。 A)0 B)10 C)1 D)5 5、若有x=1,y=2,z=3,则表达式(x=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 7、判断整型变量digit是否为数字的正确表达式是()。 A) ‘0’<=ch<=‘9’ B) (ch>=‘0’)&(ch<=‘9’) C) (ch>=‘0’)&&(ch<=‘9’) D) (‘0’<= ch)AND(‘9’>= ch) 8、一个C程序的执行是从()。 A)本程序的main函数开始,到main函数结柬 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 9、在以下标识符中,合法的是() A)if B) 0xy C)_xy D)case 10、C语言中各种类型的数据其实决定了占用内存的字节数。float占()。 A)一字节 B)二字节 C)四字节 D)八字节 11、下列各选项中,()是有效的标识符。 A)ab B)3day C)day-3 D)#abc 12、以下叙述正确的是()。。 A) 在C程序中,每行只能写一条语句 B) 若a是实型变量,C程序中不允许a=10这种赋值。 C) 在C程序中,%是只能用于整数运算的运算符

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

C语言基础练习100题(含答案) 雷柳青编排 1、下面程序的输出是________ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是________. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C语言字符常量是__________. A) '\t' B) "A" C) 65 D) A 4、字符(char)型数据在微机内存中的存储形式是____. A) 反码B) 补码C) EBCDIC码D) ASCII码 5、设int a=12,则执行完语句a+=a-=a*a后,a的值是________ A) 552 B) 264 C) 144 D) -264 6、执行下面程序中的输出语句后,输出结果是______. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 7、下面程序的输出是__________. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 8、下面程序的输出是___________. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 9、以下程序的输出结果是________. #include void main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 10、若x和y都是int型变量,x=100,y=200,且有下面的程序片段: printf("%d",(x,y)); 上面程序片段的输出结果是_______. A) 200 B) 100 C) 100 200 D) 输出格式符不够,输出不确定的值 11、阅读下面的程序 #include void main() { int i,j; i=010; j=9; printf("%d,%d",i-j,i+j); } 则程序的运行结果是________. A) 1,19 B) -1,19 C) 1,17 D) -1,17 12、阅读下面的程序 #include void main() { int i,j,m,n; i=8;j=10; m=++i; n=j++; printf("%d,%d,%d,%d",i,j,m,n); } 程序的运行结果是_________. A) 8,10,8,10 B) 9,11,8,10 C) 9,11,9,10 D) 9,10,9,11

C语言基础选择试题

C语言基础选择试题(一) 2123 答案 :C 所谓“裸机”是指( )。 a:没有安装机箱 b:没有安装应用软件 c:没有安装任何软件的计算机 c:只安装操作系统的计算机 2145 答案 :D 可用于大小写字母转换的键是 ( )。 a:Esc b:CapsLock c:Shift c:CapsLock或Shift 1068 答案 :D 计算机病毒的主要特征是()。a:只会感染不会致病 b:造成计算机器件永久失效 c:格式化磁盘 c:传染性、隐蔽性、破坏性和潜伏性 1054 答案 :D 个人计算机属于( ) 。 a:小型计算机 b:中型计算机c:巨型计算机 d:微型计算机 1080 答案 :B 用汉语拼音输入“长沙”两个汉字,输入“changsha”8个字符,那么,“长沙”两字的内码所占用的字节数是()。 a:2 b:4 c:8 c:16 1053 答案 :A 操作系统的功能是( )。 a:提高系统资源的利用率,方便用户使用计算机 b:负责给程序和数据分配内存空间 c:负责各种文件的管理 c:管理磁盘文件和I/O设备管理 1055 答案 :C 组建以太网时,通常都是用双绞线把若干台计算机连到一个中心的设备上,这个设备叫做()。 a:网络适配器 b:服务器 c:集线器 c:总线 1057 答案 :D

应用软件是指( )。 a:所有能够使用的软件 b:能被各应用单位共同使用的某种软件c:所有微机上都应用的基本软件 c:专门为某一应用目的而编制的软件 1078 答案 :B 为网络提供共享资源并对这些资源进行管理的计算机称之为()。 a:网卡 b:服务器 c:工作站 c:网桥 1082 答案 :B 在Windows98中运行应用程序时,下列哪个操作调不出帮助信息()。 a:按F1键 b:按F10键 c:单击“帮助”菜单 c:单击窗口右上角“”按钮 1068 答案 :A ISO/ OSI参考模型七层协议中第一层是()。 a:物理层 b:数据链路层 c:网络层 c:传输层2083 答案 :A 解释程序的功能是()。 a:解释执行高级语言程序 b:解释执行汇编语言程序 c:将汇编语言程序翻译成目标程序 c:将高级语言程序翻译成目标程序 1071 答案 :B 在计算机网络术语中,WAN的中文意义是()。 a:以太网 b:广域网 c:互联网 c:局域网 1055 答案 :C 主存储器又称为()。 a:RAM b:ROM c:内存 c:外存 1056 答案 :D 把同种或异种类型的网络相互连接起来称为()。 a:广域网 b:万维网(WWW c:城域网 c:互联网

相关文档
最新文档