朱昌杰 C语言程序设计课本习题解答 - 图文
更新时间:2024-05-31 13:49:01 阅读量: 综合文库 文档下载
- 朱昌杰推荐度:
- 相关推荐
习题1
一.选择题
(1) 以下叙述正确的是( )
A. 计算机不仅能执行机器语言程序,也可以直接执行其它高级语言编写的程序
B. 汇编语言是一种面向机器的低级语言,所以计算机可以直接执行用汇编语言编写的源程序
C. 高级语言是与自然语言或数学语言相近的计算机语言,用高级语言编写的源程序计算机都不能直接执行 D. 用高级语言编写的源程序只能经过解释程序边解释边执行 (2) 以下不正确的概念是( ) A. 一个C程序必须包含一个main函数 B. 一个C程序可以只有一个语句 C. 一个C程序可以由一个或多个函数组成 D. 一个C语言函数可以没有任何可执行语句 (3) 在C语言程序中( )。 A. main函数必须放在程序最前头 B. main函数必须放在程序最后 C. main函数必须放在所有函数之前
D. main函数可以放在程序任何允许放置函数的位置 (4) 以下C语言源程序的书写格式不正确的是( ) A. 正确的函数首部,其后必须加上分号 B. 分号是语句的一部分 C. 一行上可以书写多条语句 D. 一个语句可以写在多行之上 (5) 以下不正确的叙述是( )
A. 一个#include命令只能指定一个被包含文件 B. 一个#include命令可以指定多个被包含文件
C. 在#include命令中,文件名可以用尖括号或双引号括起来 D. 一个C程序中,可以使用多个#include文件包含命令 二.填空题
(1) 计算机程序设计语言分为 语言、 语言和 语言。
(2) 正确的算法应具有五个重要的特征是:① ,② ,③ ,④ ,⑤ 。 (3) 算法的表示方法主要有 、 、 、自然语言和 语言等。(4) 程序设计方法主要分为 程序设计方法和 程序设计方法。 (5) C语言的函数一般由 和 两部分组成。 (6) 注释部分从 开始,以 结束。 (7) 任何C程序的执行都是从 函数开始。 (8) 函数体一般包括 部分和 部分。
(9) 一个C语言程序由若干个函数组成,其中必须有一个 函数。 三.编程题
(1) 上机运行本章例题,熟悉所用C语言系统(如:Turbo C/C++和Visual C++ 6.0等)的上机方法与步骤。(2) 参照本章例题编写一个C语言程序,并上机运行,要求输出一下信息: **************************** Hello,World!
****************************
1
【参考答案】
一.选择题 (1) C (2) B (3) D (4) A (5) B
二.填空题 (1) 机器语言、汇编语言、高级语言 (2) ①有穷性、②确定性、③有效性、④输入、⑤输出。 (3) 传统流程图、N-S图、伪代码、计算机程序 (4) 面向过程、面向对象
(5) 函数首部、函数体 (6) /* 、*/ (7) main (8) 声明、执行 (9) main 三.编程题
(1) 例1.3 输出一行信息,内容为:This is my first C program. /* exa1-3.c */ #include
}
例1.4 键盘输入两个整数,求两个整数中的较大者。 /* exa1-4.c */
#include \头文件 */ void main() /* 主函数 */ { int max(int x,int y); /* 对被调用函数max的声明 */ int a,b,c; /* 定义三个整型变量a,b,c */ printf(\提示输入 */ scanf(\键盘输入变量a和b的值 */
c=max(a,b); /* 调用max函数,将函数返回值赋值给变量c */ printf(\输出c的值 */ }
int max(int x,int y) /* 定义整型函数max,其两个形式参数x,y也为整型 */ { int z; /* 函数max的声明部分 */ if(x>y) z=x; /* 如果x>y,将x赋值给z */ else z=y; /* 否则,将y赋值给z */
return(z); /* 将z的值返回给调用函数的位置 */ } (2)解答:
/* exe1-3-2.c */ #include
printf(\
}
2
习题2
一.选择题
(1)以下哪一个可以作为正确的变量名( )。 A.for
B.$abc
C.3*x
D._file
(2)以下哪一个不是正确的C语言常量( )。 A.0x2ac
B.3.25e-8 C.800
D.0486
(3)以下哪一个是合法的C语言实型常量( )。 A.3E2.5
B.E6 C.2A8
D.218
(4)以下哪一个整型常数值最大( )。 A.35 B.035
C.0x35
D.50
(5)以下不是字符型常量的是( )。 A.′m′
B.\
C.′\\115′ D.′\\x8c′
(6)以下哪一个字符与其他3个字符不相等( )。 A.′a′
B.′A′
C.′\\X41′ D.′\\101′
(7)以下哪一个是C语言合法的字符串常量( )。 A.I am a student.
B.\中国\C.′\\hello′
D.$abc$
(8)C语言中short型整数占2个字节,则unsigned short型数据的其值范围是:( )。 A.0~65535
B.0~65536
D.-65535~65535
C.-32768~32767
(9)在C语言中,数字018是一个( )。 A.十进制数 B.八进制数 C.十六进制数
D.非法数
(10)在C语言中,不同数据类型占用内存的字节长度是( )。 A.相同的 C.任意的
B.与编译环境有关的 D.由用户自己定义的
(11)以下哪一个不是C语言中的数据类型( )。 A.实型
B.浮点型 C.空类型 D.关系型
(12)以下哪一个是C语言中的数据类型( )。 A.集合型 B.双精度型 C.复数型 D.逻辑型 二、填空题
(1)C语言的常量分为:________常量、________常量、________常量、________常量和________常量。 (2) C语言中的整型数据有三种表示方法,分别是:________进制、________进制和________进制。 (3)C语言规定,变量必须________定义,________使用。
(4)C语言中,sizeof( )是分别是测定某种类型数据所占存储空间长度的________。
(5)C语言中,运算符的结合性有两种:左结合和右结合,左结合是________计算,右结合是________计算。 (6)C语言中,++i是先________,后________;i--是先________,后________。 (7)赋值运算符比逗号运算符的优先级别________。 (8)________运算符的优先级别最低,级别为15。
(9)C语言的类型转换有三种方式:________类型转换、________类型转换和________类型转换。 三、计算与编程题
(1)给出下列公式的C语言表达式。 ① y=ax2+bx+c
② y=ax+b/cx+d ③ 3.25×10+√(b2-4ac)-x2-y3 ④ y=1/2+2/3+(x2+y2)/(a2+b2)
8
⑤ 求表达式3*2+4.0/5?15%?4+(5*8/9+4)%5?1/2+1.0/2的值。 (2)上机运行本章例题,熟悉所用C语言编译系统的使用。
(3)用运算符sizeof( )测试以下数据类型在内存中所占空间的大小:char、unsigned char、int、short、long、unsigned、
3
unsigned short、unsigned long、float、double、long double,输出时一行输出一种数据类型的内存字节大小,并给出清晰的提示信息。
【参考答案】 一.选择题
(1) D (2) D (3) D (4) C (5) B (6) A (7) B (8) B (9) D (10) B (11) D (12) B 二.填空题
(1) 字符、整型、实型、字符串、符号 (2) 十、八、十六 (3) 先、后 (4) 运算符
(5) 从左到右、从右到左 (6) 加1、引用、引用、减1 (7) 高 (8) 逗号
(9) 自动、赋值、强制 三、计算与编程题 (1) ① y=a*x*x+b*x+c ② y=(a*x+b)/(c*x+d)
③ 3.25e8+sqrt(b*b-4*a*c)-x*x-y*y*y ④ y=1.0/2+2/3.0+x*x/(a*a)+y*y/(b*b) ⑤ 7.3 (2) 略 (3)
/* exe2-3-3.c */ #include
printf(\
printf(\ printf(\ printf(\ printf(\ printf(\
printf(\ printf(\ printf(\ printf(\
printf(\}
4
习 题 3
一.选择题
(1)若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是( ) A. a=a++,i++; B. i=(a+k)<=(i+k); C. i=a; D. i=!a;
(2) 若有定义:int x,y; char a,b,c; 并有以下输入数据(此处,
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是() A. scanf(\B. scanf(\C. scanf(\D. scanf(\
(3)若有定义:int a,b;,通过语句scanf(“%d;%d”,&a,&b);,能把整数3赋给变量a,5付给变量b的输入数据是()A. 3 5 B. 3,5 C. 3;5 D. 35
(4)若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为() A. 0和1 B. 0和20 C. 10和1 D. 10和20
(5)以下不能输出字符A的语句是()(注:字符A的ASCII码值为65,字符a的ASCII码值为97) A.printf(“%c\\n”,’A’-32) B.printf(“%d\\n”,’A’); C.printf(“%c\\n”,65); D.printf(“%c\\n”,’B’-1); 二.填空题
(1) 有以下程序(说明:字符0的ASCII码值为48) void main(void) #include
a=50.0;b=20.0;
{ char c1,c2; printf(\scanf(\printf(\c2=c1+9;
printf(\printf(\printf(\}
}
若程序运行时从键盘输入48<回车>,则输出结果为将缺少的部分填在空白处。
____________。
(4)下列程序的输出结果是____________。 (2) 以下程序的输出结果为:____________。 #include
main() { float a=3.14, b=3.14159; {
char a;
printf(\a='A';
}
printf(\(3) 编制程序对实数a与b进行加,减,乘,除计算,要求}
显示如下结果。 (5)分析下面程序 jia=70.000000 main() jian=30.000000 {
int x=2,y,z;
cheng=1000.000000 x*=3+2;printf(\chu=2.5000000 x*=y=z=4;printf(\程序:
x=y=1;
#include
z=x++-1;printf(\
5
z+=-x++ +(++y);printf(\(1) 从键盘上输入一个大写字母,要求改用小写字母输出。 }
(2) 请编写一个程序,能显示出以下两行文字。 程序的输出结果是____________。 I am a student. 三.编程题 I love China.
【参考答案】 一.选择题
(1) C (2) C (3)A (4) B (5) B 二.填空题
(1)09 (2)3.140000, 3.142 double a,b a+b a-b a*b a/b (4)65A (5) 10 40 2.0 3.0 三、编程题 (1)
#include
else
printf(\输入的不是大写字母\\n\ } (2)
#include
}
6
习 题4
一.选择题 (1) 以下程序段: int i,a=3,b=2; i=(--a==b++)?--a:++b;
printf(\输出结果是 。 A)i=1 a=1 b=3 B)i=3 a=2 b=3 C)i=4 a=1 b=4
D)i=4 a=2 b=4
(2)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是 。
A)1 B)0 C)2 D)不知道a的值,不能确定
(3)能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是 。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100) B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100) C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100) D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100) (4)以下程序的运行结果是 。 main( ) {
int c,x,y; x=1; y=1; c=0;
c=x++||y++;
printf(“\\n%d%d%d\\n”,x,y,c); }
A)110 B)211 C)011 D)001 (5)两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 。 main( ) { int x;
scanf(“%d”,&x);
if(x++>5) printf(“%d”,x); else printf(“%d\\n”,x--);
}
A)7和5 B)6和3 C)7和4 D)6和4 (6)写出下面程序的执行结果 。 main( ) { int x,y=1; if(y!=0) x=5; printf(“%d\\t”,x);
if(y= =0) x=3; else x=5;
printf(“%d\\t\\n”,x); }
A)1 3 B)1 5 C)5 3 D)5 5
(7)写出下面程序的执行结果 。 main() {
int x=1,y=1,z=0;
if(z<0) if(y>0) x=3; else x=5; printf(\if(z=y<0) x=3; else if(y= =0 ) x=5; else x=7; printf(\printf(\}
A)1 7 0 B)3 7 0 C)5 5 0 D)1 5 1
(8)假定所有变量均已正确说明,下列程序段运行后x的值是 。 a=b=c=0;x=35; if(!a) x=-1; else if(b); if(c) x=3; else x=4;
A)34 B)4 C)35 D)3 (9)以下选项中与if(a==1)a=b;else a++;语句功能不同的switch语句是 。 A)switch(a) {
case1:a=b; break;
default:a++; }
B)switch(a==1) {
case 0:a=b; break;
case 1:a++; }
C)switch(a) {
default:a++;break;
case1:a=b; }
7
D)switch(a==1) {
case 1:a=b;break;
if(a++<9) printf(\ else printf(\}
程序运行时从键盘输入9<回车>,则输出的结果是 。 A)10 B)11 C)9 D)8
(15) 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、case 0:a++; }
(10)有如下嵌套的if语句 if(a
以下选项中与上述if语句等价的语句是 。 A)k=(a
B)k=(a main() {
int a=1,b=0; if(--a) b++; else if(a==0) b+=2; else b+=3; printf(“%d\\n”,b); }
程序运行后的输出结果是 。 A)0 B)1 C)2 D)3
(12)下列条件语句中输出结果与其他语句不同的是 。
A)if(a) printf(“%d\\n”,x); else printf(“%d\\n”,y); B)if(a==0) printf(“%d\\n”,y); else printf(“%d\\n”,x); C)if(a!=0) printf(“%d\\n”,x); else printf(“%d\\n”,y); D)if(a==0) printf(“%d\\n”,x); else printf(“%d\\n”,y); (13) 以下选项中与if(a==1)a=b; else a++;语句功能不同的switch语句是 。
A)switch(a) {case 1:a=b;break; default:a++; } B)switch(a==1) {case 0:a=b;break;case 1:a++; } C)switch(a) {default:a++;break;case 1:a=b;} D)switch(a==1) {case 1:a=b;break; case 0:a++;} (14) 有以下程序 #include
scanf(\
z的值分别为: 。 if (x>y||x
A)x=50, y=80, z=80 B)x=50, y=30, z=30 C)x=30, y=50, z=80 D)x=80, y=30, z=50 二.填空题
(1) 以下程序运行的输出结果是 。 main()
{ int p=30;
printf(\
(2) 有以下程序 #include
{int a=1,b=2,c=3,d=0; if(a==1) if(b!=2) if(c==3) d=1; else d=2;
else if(c!=3) d=3; else d=4; else d=5;
printf(“%d\\n”,d); }
程序运行后的输出结果是 。 (3) 有以下程序 #include
if(x>15) printf(\if(x>10) printf(\if(x>5) printf(\
若程序运行时从键盘输入12<回车>,则输出结果为(4)以下两条if语句可合并成一条if语句为 if(a<=b) x=1; else y=2;
if(a>b) printf(\
。 8
。、else printf(\
(5)输入一个字符,如果是大写字母,则把其变成小写字母;如果是小写字母,则变成大写字母;其它字符不变。请在( )内填入缺省的内容。 main( ) { char ch; 三.编程题
scanf(“%c”,&ch); if (_______) ch=ch+32;
else if(ch>=’a’&&ch<=‘z’) (_____); printf(”%c\\n”,ch); }
1.编写一个程序,要求有键盘输入三个数,计算以这三个数为边长的三角形的面积。
2.输入圆的的半径r和一个整型数k,当k=1时,计算圆的面积;但k=2时,计算圆的周长,当k=3时,既要求求圆的周长也要求出圆的面积。编程实现以上功能。 3. 编写程序,判断某一年是否是闰年。
4. 有一函数,其函数关系如下,试编程求对应于每一自变量的函数值。 x2 (x<0) y = -0.5x+10 (0≤x<10) x- (x≥10)
【参考答案】
一.选择题
(1) A (2) A (3) B (4) B (5) A (6) D (7) A (8) B (9) B (10) C (11)C (12) D (13) B (14) A (15) A 二.填空题 (1) 0 (2) 4 (3) 1217
(4) if(a<=b) {x=1; printf(\ else {y=2; printf(\ 'A'<=ch && ch<='Z' ch=ch-32 编程题
1 #include
else {
printf(\您输入的三角形边长有误\float a,b,c,z,n,s;
printf(\请输入三角形边长:a,b,c:\scanf(\
if(a+b<=c||fabs(a-b)>=c)//fabs为求浮点数绝对值
z=a+b+c; n=z/2;
s=sqrt(n*(n-a)*(n-b)*(n-c));//sqart为平方
根函数 }
2 #include
int main() {
float r; int k;
printf(\请输入半径r: \\n\scanf(\
printf(\请输入处理要求\\n 1. 计算圆的面积 \\n }
printf(\三角形面积是 %f\\n:\
2. 计算圆的周长\\n 3. 计算圆的周长和圆的面积 \\n\
scanf(\switch(k) { case 1:
printf(\圆的面积为: %f\\n\
break;
case 2:
9
printf(\圆的周长为: %f\\n\break; case 3: printf(\圆的面积为: %f\\n\
printf(\圆的周长为: %f\\n\
break; default: printf(\错误要求!! \\n\
}
}
3 #include
int year,result=0; printf(\输入一个年份:\\n\ scanf(\ if(year0==0) { if(year@0==0) printf(\是闰年\\n\
else
printf(\不是闰年\\n\
}
else if(year%4==0)
printf(\是闰年\\n\
}
4 #include
printf(\输入x: \ scanf(\
if(x<0) printf(\
else if(x>=0&&x<10)
printf(\ else if(x>=10)
printf(\
}
10
long factorial(int n) { long t=1;int i; for(i=1;i<=n;i++)
t=t*i;
return t; }
long sum(int m) { long s=0;int i; for(i=1;i<=m;i++)
s=s+factorial(i); return s;
} main() {
int k,num; long result=0; scanf(\for(k=1;k<=num;k++)
result=result+sum(k); printf(\result); }
(7) 编写函数reverse(s),s是一个字符串,实现将字符串s逆序存放。
#include
for(i=0,j=t-1;i } } (8) 写一个函数transpose(b),b是一个3阶方阵,实现对方阵的转置,即行列互换。 int transpose(int b[3][3]) { int i,j,t; for(i=0;i<3;i++) for(j=i+1;j>=i&&j<3;j++) { t=b[i][j];b[i][j]=b[j][i];b[j][i]=t; } } main() { int a[3][3];int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } transpose(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } } (9) 某数列为K(n)的定义为:用递归的方法求该数列的第6项k(6)。 #include int k(int n) { int c; if(n==1) c=1; else if(n%2==0) c=k(n-1)*2; else c=k(n-1)*3; return c; } main() { int m; 26 scanf(\if(m>=1) printf(\ } else printf(\ 习题8 一、选择题 (1)下面有关宏替换的叙述不正确的是( )。 A.宏替换不占用运行时间 B.宏名无类型 C.宏替换只是字符替换 D.宏名必须用大写字母表示 (2)以下叙述中正确的是( )。 A.预处理命令行必须位于C源程序的起始位置 B.在C语言中,预处理命令行都以“#”开头 C.每个C程序必须在开头包括预处理命令行:#include D.C语言的预处理不能实现宏定义和条件编译的功能 (3)下列关于#include命令的叙述中,错误的是( )。 A.#include命令中,文件名可以用双引号或尖括号括起来 B.一个被包含文件中又可以包含另一个被包含文件 C.一个#include命令中可以指定多个被包含文件 D.一个#include命令中只能指定一个被包含文件 二、填空题 (1)以下程序输出结果是 【1】 。 #include (2)以下程序运行的输出结果是 【2】 。 #include (3)以下程序中的for循环执行的次数是 【3】 。 #define N 2 #define M N+1 #define NUM 2*M+1 void main() { int i; for(i=1;i<=NUM;i++)printf(\} 三、编程题 1、用带参数的宏来实现从3个数中找出最大数。 2、请设计输出整数的格式,整数用“]”格式输出。要求: ① 一行内输出2个整数; ② 一行内输出3个整数。 3、输入两个整数,求它们相除的余数,请用带参数的宏来实现。 27 一.选择题 D B C 二.填空题 (1) 100 (2) 161 (3) 1 2 3 4 5 三.编程题 1、用带参数的宏来实现从3个数中找出最大数。具体程序为: #include #define MAX2(x,y) (x)>(y)?(x):(y) int max(int a,int b, int c) { int t1 = MAX2(a, b); int t2 = MAX2(b, c); int t3 = MAX2(t1, t2); return t3; } void main() { int d,e,f,m; scanf(\ m = max(d, e, f); printf(\最大数为%d\} 2、请设计输出整数的格式,整数用“]”格式输出。要求: ① 一行内输出2个整数; ② 一行内输出3个整数。 具体程序为: 3、输入两个整数,求它们相除的余数,请用带参数的宏来实现。 具体程序为: /* exa8-3-3.c */ #include #define MOD(a, b) ((a) % (b)) void main() { int a, b; printf(\ scanf(\ printf(\} 28 【参考答案】 习题9 29 30 【参考答案】 一.选择题 C B B A C B B C D C C C D C B B D B C C 二.填空题 (1) p (2) *p (3) 1 2 3 4 (4) 10,0 (5)strcmp(str2,str1); (6) 定义指针数组p,它由4个指向整型数据的指针元素组成 (7) p为指向含4个元素的一维数组的指针变量 (8) p是返回一个指针的函数,该指针指向整型数据 (9) p为指向函数的指针,该函数返回一个整型值 (10) abCdabCdabCd 三.编程题 (1)定义3个整数及整数指针,仅用指针方法按由小到大的顺序输出。 #include int *p1,*p2,*p3,i,j,k,temp; printf(\scanf(\p1=&i; p2=&j; p3=&k; if(*p1>*p2) { } 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 #include int m,i,j,a[10],*p1,*p2; p1=p2=a; } if(*p1>*p3) { } if(*p2>*p3) { } printf(\ temp=*p3; *p3=*p2; *p2=temp; temp=*p1; *p1=*p3; *p3=temp; temp=*p1; *p1=*p2; *p2=temp; for(i=0;i<10;i++) scanf(\输入 31 p2--; for(m=1,i=0;m<10;m++) if(a[m] i=m; //找出最小值 j=a[i]; a[i]=*p1; *p1=j; //交换最小值与第一个数 for(m=1,i=0;m<10;m++) if(a[m]>a[i]) i=m; //找出最大值 j=a[i]; a[i]=*p2; *p2=j; //交换最大值与第一个数 for(m=0;m<10;m++) printf(\ printf(\ return 0; } 编写程序实现将一个整数字符串转换为一个整数。 #include \#include \int Fun(char *str) { int num,i,digital,len; num = 0; len=strlen(str); while(*str!='\\0') { digital=*str-'0'; for(i=0; i return num; } int main() { char n[80 ]; int number; gets(n); number=Fun(n); printf(\ return 0; } 编写程序实现在主函数中输入字符串,并在lenth 函数中输出其长度。 #include while (str[++i]); // while循环在 str[++i] 为 '\\0' 时结束 return i; } int main() { char str[1000]; printf(\ gets(str); printf(\ return 0; } 编写transposition函数(参数用指针)将一个4×4矩阵转置。 #include \ void transposition(int *str) { int i,j,t; for(i=0;i<4;i++) for(j=i;j<4;j++) { t=*(str+4*i+j); *(str+4*i+j)=*(str+4*j+i); *(str+4*j+i)=t; } } int main() { int a[4][4],*p,i; printf(\ for(i=0;i<4;i++) 32 scanf(\[3]); printf(\ for(i=0;i<4;i++) printf(\[i][3]); p=&a[0][0]; transposition(p); printf(\ for(i=0;i<4;i++) printf(\[i][3]); return 0; } 不用字符串处理函数strcmp,编写自定义函数实现两个字符串的比较。 #include int scmp(char *p1,char *p2) { int i=0; while(*(p1+i)==*(p2+i)) if(*(p1+i++)=='\\0') return 0; return(*(p1+i)-*(p2+i)); } void main() { char str1[80],str2[80],*p1,*p2; int t; printf(\ gets(str1); printf(\ gets(str2); p1=str1; p2=str2; t=scmp(p1,p2); printf(\ } 编程实现统计子串substr在母串str中出现的次数。 #include int count(char *str,char *substr) { int i,j,k,num=0; for(i=0;str[i];i++) for(j=i,k=0;substr[k]==str[j];k++,j++) if(substr[k+1]=='\\0') { num++; break; } return(num); } void main() { char str[80], substr[80]; int n; printf(\ gets(str); printf(\ gets(substr); printf(\ } 不用字符串处理函数strcat,编程实现两个字符串s1和s2连接。 #include \#include \ char *stringcat(char s1[],char s2[]) { int i,j; for(i=0;s1[i]!=0;i++); for(j=0;s2[j]!=0;i++,j++) s1[i]=s2[j]; s1[i]=0; return s1; } int main() { char str1[1000],str2[80],*s; printf(\ gets(str1); printf(\ gets(str2); s=stringcat(str1,str2); printf(\33 return 0; 习 一、选择题 1.以下程序的运行结果是( )。 #include { int year,month,day; }today; union { long a; int b; char c; }m; printf(\ } A.6 4 B.8 5 C.10 6 D.12 7 2.若有以下定义和语句,不正确的引用是( )。 struct student { int age; int num; }; struct student stu[3]={{1001,20},{1002,19},{1003,21}}; main() { struct student *p; p=stu; ... } } 题10 A.(p++)->num B.p++ C . (*p).num D.p=&stu.age 3.以下程序的输出结果为( )。 #include s.a[2]=0x39; s.a[1]=0x38; printf(\} A.390039 39 B.380039 9 C . 3938 38 D.3839 8 二、填空题 1、在以下嵌套结构中填空,给出李冬的姓名、年龄(20岁)、性别(男)、生日(1993年5月16日)、语种(c)及系别(计算机系)的信息,并输出这些信息。 #include { int month; int day; int year; }; struct student { _________ name[20]; _________ age; 34 _________sex; _________date_birthday; _________Language; _________department[30]; }; main() { struct student s1=_________; printf ___________; } 2.结构体数组中存有3个人的姓名和年龄,以下程序输出3个人中最年长者的姓名和年龄,在横线上填上正确的内容。 static struct man { char name[20]; int age; }person[]={{\ng\main() { struct man *p,*q; int old=0; for(_______;______;p++) if (old ________; } printf(\ } 三、编程题 1.定义一个结构体变量(包括年、月、日),计算该天在本年中为第几天?(需考虑闰年问题)要求写一个days函数来实现。由主函数将年月日传递给days函数,计算后将天数传回主函数输出。 2.有若干个学生,每个学生的记录包括学号、姓名和三门课的成绩,从键盘输入学生数据(学号为0000时,输入结束),要求输出每个学生的三门课总平均成绩。 3.编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。 4.设计候选人得票统计的程序,要求随机设定候选人,每次输入一个得票候选人的名字,最后输出各人得票情况。 5.有一个链表,每个结点包括:学号、姓名、性别和年龄。编写函数,实现如下功能:每输入一个学生信息,比较新输入学生学号与框表中已有结点的学号信息是否重复,如果重复则提示“学号重复!”,并重新输入下一个学生信息;如果不重复,则把该学生信息放到链表的最后,输出该链表中的学生信息。 【参考答案】 一.选择题 1 D 2 D 3 B 二.填空题 1.char 、int、char、struct data、char、char、(“李冬,20,1,1993-5-16 , c, ” 计 算 机 系 “ 、 int days(date d) { int num = 0; int m, da, i; if ((d.year %4 == 0 && d.year 0!=0)||(d.year % 400 == 0)) { for (m = 1; m <= d.month ; m++) { if (m == 2) da = 29; else if (m==4||m==6||m==8||m==11) da = 30; else da = 31; for (i = 1; i <= da;i++) { (“%s,%d,%d,%s,%s\\n”,s1.name,s1.age,s1.data_birthday,s1.Language,s1.departmet) 2. p=person、p<3、old=p->age、q->nam,q->old 三.编程题 1、 #include int year; int month; int day; }date; 35
正在阅读:
人工鱼礁施工组织设计04-04
编制16种个性因素问卷的心理学家是( ) A.奥尔波特 B.卡特尔 C08-29
对加速发展重庆市非公有制经济的思考05-18
2019年乡镇组织委员述职报告09-27
2022年社区精神文明建设工作计划范本04-13
小学数学说课稿格式02-18
附子12-15
企业安全管理制度(标准版)05-22
一年级句段训练04-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 习题
- 课本
- 程序设计
- 解答
- 语言
- 图文
- 昌杰
- 《和教师的谈话》感悟
- 基础工业工程各章节作业习题
- 乐民镇第二中学2013年度学科渗透法制教育
- 2013年修订版毛概按章节复习提纲
- 西方文化概论任务1附答案
- 边坡事故应急预案 .
- 烟台在山东半岛蓝色经济区建设中的发展前景_李成林
- 杨氏之子教案及说课稿
- 员工职责及技能培训教材大纲
- 6上语文教案
- 北京市海淀区2014届高三下学期期末练习(二模)理综试题(WORD版
- 辩论赛 恋爱靠勤奋还是靠缘分 反方小结
- 中南大学离散考试试卷
- 高中语文粤教版必修5第二单元5“神五”载人航天飞行新闻两篇《心
- 虞永平:课程游戏化与教师专业能力
- 河流上该不该建大坝 导学案 - 图文
- 军民融合新城基础设施建设-PPP项目合同(编制大纲) - 图文
- 如何积极向党组织靠拢1
- 试论输变电工程设备管理中牵张设备的维护方法
- 高中语文学考复习—语病教案