C语言课件程序 第8章补充作业

合集下载

第8章存储过程补充作业_第2部分

第8章存储过程补充作业_第2部分

第7章存储过程补充作业第二部分1. 创建一个存储过程,输入三角形的三条边,计算三角形面积并使用输出参数将其输出。

运行成功的程序---------------------create procedure 三角形@a int=0,@b int=0,@c int=0,@s char(20) output ASdeclare @l floatset @l=(@a+@b+@c)/2if @a+@b>@c and @a+@c>@b and @b+@c>@a beginset @s=CAST(sqrt(@l*(@l-@a)*(@l-@b)*(@l-@c)) AS CHAR(20)) print '三角形的面积为' end elseset @s='不能构成三角形'调用存储过程代码如下:DECLARE @ANS CHAR(20) EXec 三角形6,7,8,@ANS output PRINT @ANS2a. 创建一个存储过程,输入一个自然数,计算它的阶乘并使用输出参数将其输出。

运行成功的程序---------------------create procedure 阶乘@n int=0,@jc float outputASdeclare @i INTset @i=1set @jc=1while @i<=@nbeginset @jc=@jc*@iset @i=@i+1end调用存储过程代码如下:DECLARE @ANS float EXec 阶乘8,@ANS output PRINT @ANS2b. 编写存储过程,求n的阶乘n! 要求:n<=20, 当n >20 时提示重新输入.运行成功的程序---------------------create procedure 阶乘@i int=0,@jc float outputASset @i=1set @jc=1while @i<=20beginset @jc=@jc*@iset @i=@i+1print @jcwhile @i>20print '重新输入'end调用存储过程代码如下:DECLARE @ANS float EXec 阶乘4,@ANS output PRINT @ANS3. 创建一个存储过程,输入一个自然数,判断其是否为素数并使用输出参数将判断结果输出。

C语言第七、八章补充作业

C语言第七、八章补充作业

第七章补充作业【1】在C语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【2】以下对一维整型数组a的正确说明是。

A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n); int a[SIZE];int a[n];【3】若有说明:int a[10];则对a数组元素的正确引用是。

A)a[10] B)a[3.5] C)a(5) D)a[10-10]【4】以下能对一维数组a进行正确初始化的语句是。

A)int a[10]=(0,0,0,0,0); B)int a[10]={};C)int a[]={0}; D)int a[10]={10*1};【5】以下对二维数组a的正确说明是。

A)int a[3][]; B)double a[1][4];C)float a(3,4); D)float a(3)(4);【6】若有说明:int a[3][4];则对a数组元素的正确引用是。

A)a[2][4] B)a[1,3] C)a(2)(1) D)a[1+1][0]【7】以下不能对二维数组a进行正确初始化的语句是。

A) int a[2][3]={0};B) int a[][3]={{1,2},{0}};C) int a[2][3]={{1,2},{3,4},{5,6}};D) int a[][3]={1,2,3,4,5,6};【8】指出下面各说明语句中哪些是合法的:(多选)A. int abcd[0x80];B. char 9ab[10];C. char chi[-200];D. int aaa[5]={3,4,5};E. float key[]={3.0,4.0,1,0};F. char disk[];G. int n,floppy[n]; H. int cash[4]={1,2,3,4,5,6};【9】下面程序中有错误的行是(每行程序前面的数字表示行号)。

C语言第8章习题及答案

C语言第8章习题及答案

第八章用一个数组存放图书信息,每本书是一个结构,包括下列几项信息:书名、作者、出版年月、借出否,试写出描述这些信息的说明,并编写一个程序,读入若干本书的信息,然后打印出以上信息。

#include <>typedef struct{char Name[20];char Author[20];int Date_Year;int Date_Month;int loaned;} BOOK;#define N 10void main(){BOOK books[N];int i;for (i=0;i<N;i++){printf("Input Book's Name:");gets(books[i].Name);printf("Input Book's Author:");gets(books[i].Author);printf("Input Book's Year of Publishing:");scanf("%d",&books[i].Date_Year);printf("Input Book's Month of Publishing:");scanf("%d",&books[i].Date_Month);printf("Input Book's Status, 1-Loaned, 2-Keepin:");scanf("%d",&books[i].loaned);}for (i=0;i<N;i++){printf("Book: %s, Author: %s, Publishing:%d-%d, Status:%d\n", books[i].Name, books[i].Author, books[i].Date_Year, books[i].Date_Month, books[i].loaned);}}编写一个函数,统计并打印所输入的正文中的各个英文单词出现的次数,并按次数的递减顺序输出。

c语言第8章-编译预处理及位运算习题答案doc资料

c语言第8章-编译预处理及位运算习题答案doc资料

c语言第8章-编译预处理及位运算习题答案编译预处理习题一.单项选择题1.在宏定义#define A 3.897678中,宏名A代替一个()。

A)单精度数 B)双精度数 C)常量 D)字符串2.以下叙述中正确的是A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间3.C语言的编译系统对宏命令的处理()。

A)在程序运行时进行的B)在程序连接时进行的C)和C程序中的其它语句同时进行的D)在对源程序中其它语句正式编译之前进行的4.在文件包含预处理语句的中,被包含文件名用“< >”括起时,寻找被包含文件的方式是()。

A)直接按系统设定的标准方式搜索目录B)先在源程序所在目录搜索,再按系统设定的标准方式搜索C)仅仅在源程序所在目录搜索D)仅仅搜索当前目录5.以下说法中正确的是A)#define和printf都是C语句 B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C 语句6.#define A 3.897678#include <stdio.h>main( ){ printf(“A=%f ”,A);}程序运行结果为()。

A) 3.897678=3.897678 B) 3.897678=A C) A=3.897678 D)无结果7.有宏定义:#define LI(a,b) a*b#define LJ(a,b) (a)*(b)在后面的程序中有宏引用:x=LI(3+2,5+8);y=LJ(3+2,5+8);则x、y的值是()。

A) x=65,y=65 B) x=21,y=65 C) x=65,y=21 D)x=21,y=218.有以下程序# define f(x) (x*x)main(){ int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;printf("%d, %d\n",i1,i2);}程序运行后的输出结果是A)64, 28 B)4, 4 C)4, 3D)64, 649.以下程序的输出结果是#define M(x,y,z) x*y+zmain(){ int a=1,b=2, c=3;printf(“%d\n”, M(a+b,b+c, c+a));}A) 19 B) 17 C) 15 D) 1210.有以下程序#define N 5#define M1 N*3#define M2 N*2main(){ int i;i=M1+M2; printf(“%d\n”,i);}程序编译后运行的输出结果是:A) 10 B) 20 C) 25 D) 3011.有如下程序#define N 2#define M N+1#define NUM 2*M+1#main(){ int i;for(i=1;i<=NUM;i++)printf(“%d\n”,i);}该程序中的for循环执行的次数是A) 5 B) 6C) 7 D) 812.位运算是对运算对象按二进制位进行操作的运算,运算的对象是____数据,以___的形式参与运算。

高树芳C语言程序设计--第八章

高树芳C语言程序设计--第八章

30
8.5 知识拓展
案例8-11 指针的高级应用 [案例任务] 阅读下列程序 ,分析运行结果,了解指 针的各种应用。
程序代码
31
8.5 知识拓展
相关知识:
1.有关指针的数据类型小结 2.案例说明 3.main函数的参数
32
12
8.2 指针变量
[课堂训练8-1] void swap(int *p1,int *p2) { int *t; t=p1; p1=p2; p2=t; }
1.分析下面的程序,写出运行结果。 #include <stdio.h> void main() { void swap(int *p1,int *p2); int *p1,*p2,a=6,b=8; p1=&a; p2=&b; printf(" 交换前:*p1=%d,*p2=%d\n",*p1,*p2); swap(p1,p2); printf(" 交换后:*p1=%d,*p2=%d\n",*p1,*p2); }
17
8.3 指针与数组
案例8-6 [案例任务]
冒泡排序
使用指针指向一维整型数组,使用冒泡排 序法对数组元素从小到大排序并输出。
程序代码
18
8.3 指针与数组
相关知识: 1.冒泡排序法 2.指针变量的其他运算
19
8.3 指针与数组
案例8-7 [案例任务]
逆置一维数组
使用数组名或指针变量作为函数形参与实 参,完成一维数组元素的逆置。请分析程 序运行结果,并对两个方法进行比较。
6
8.2 指针变量
案例8-2 用指针交换两整数 案例8-3 用指针比较两数大小 案例8-4 用指针参数交换两整数

第八章补充习题

第八章补充习题

第八章补充习题一、选择题1、以下程序段输出结果是A)11 B)20 C)21 D)31 func(int a,int b){ int c;c=a+b;return c;}main(){ int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf(“%d\n”,r);}2. 以下程序段输出结果是A)-1 B)0 C)1 D)2 main(){ int i=2,p;p=f(i,i+1);printf(“%d”,p);}int f(int a,,int b){ int c;c=a;if(a>b)c=1;else if(a=b)c=0;else c=-1;return(c);}3. 以下程序段输出结果是A)0 B)1 C)6 D)无定值fun(int a,int b,int c){ c=a*b; }main(){ int c;fun(2,3,c);printf(“%d\n”,c);}4. 以下程序段输出结果是A)5.500000 B)3.000000 C)4.000000 D)8.25{ int i; double s;s=1.0;for(i=1;i<=n;i++) s+=1.0/i;return(s);}main(){ int i,m=3; float a=0.0;for(i=0;i<m;i++) a+=f(i);printf(“%f\n”,a);}二、填空题1.以下程序段的输出结果是。

unsigned fun6(unsigned num){ unsigned k=1;do{ k*=num%10; num/=10; }while(num);return(k);}main(){ unsigned n=26;printf(“%d\n”,fun6(n));}2. 以下程序的输出结果是。

double sub(double x, double y, double z) { y-=1.0;z=z+x;return(z);}main(){ double a=2.5,b=9.0;printf(“%f\n”,sub(b-a,a,a));}3. 以下程序段的输出结果是。

C语言程序设计(第八章)

C语言程序设计(第八章)
字符读写函数fgetc()和fputc()是以字符(字节)为单位
的读写函数。 每次可从文件读出或向文件写入一个字符。
第八章
1.读字符函数fgetc()
fgetc() 函数的功能是从指定的文件中读一个字符,函
数调用的形式为:
字符变量 = fgetc(文件指针);
例如:
ch = fgetc(fp);
的意义是从打开的文件fp中读取一个字符并送入ch中 。
(1)字符读/写函数 :fgetc()/fputc()
(2)字符串读/写函数:fgets()/fputs()
(3)数据块读/写函数:freed/()fwrite()
(4)格式化读/写函数:fscanf()/fprinf()
以上函数原型都在头文件stdio.h中加以声明。
第八章
8.5.1字符读/写函数 :fgetc()/fputc()
关闭文件则断开指针与文件之间的联系,禁止再对该文
件进行操作。
第八章
8.3.1 文件打开的函数fopen()
open函数用于打开一个文件,其调用的一般形式为: 文件指针名 = fopen(文件名, 使用文件方式);
“文件指针名”:必须是被说明为FILE 类型的指针变量。
“文件名”:被打开文件的文件名,“文件名”是字符串常 量、字符数组或字符指针。 “使用文件方式”:指文件的类型和操作要求。
/* 输出系统提示信息 */
上面程序段的意义是,如果返回的指针为空,表示不能 打开test.dat文件,则给出提示信息“打开文件test.dat出 错!”,然后输出系统提示信息,当用户从键盘敲任一键后 执行exit(1)退出程序 。
第八章
8.3.2 文件关闭的函数fclose()

精品课件-C++语言程序设计-第8章 文件

精品课件-C++语言程序设计-第8章 文件
#define putchar(c) putc((c),stdout)
8.4 文件的读写
18
8.4.1 文件的字符输入输出函数
说明:
(1)被写入的文件可以用写、读写、追加方式打开,用写 或读写方式打开一个已存在的文件时将清除原有的文件内容, 写入字符从文件首开始。如需保留原有文件内容,希望写入的 字符从文件末开始存放,必须以追加方式打开文件。被写入的 文件若不存在,则创建该文件。
8.4 文件的读写
21
8.4.2 文件的字符串输入输出函数
1. 字符串输入函数fgets( )
① 从文件读取字符的过程中,如果读到回车符 (‘\15’)舍去,如果读到换行符(‘\12’)仍按字符读 出,再加上 ‘\0’ 作为一个字符串,同时结束文本行读取 操作,函数正常返回。当读到文件结束时,直接加上‘\0’ 作为一个字符串,函数正常返回。
文件是操作系统管理数据的最小单位,其总原则是“按名 存取”。
例如:程序文件中保存着程序,数据文件中保存着数据。
*.C C语言的源程序
文本文件
*.OBJ 目标文件
二进制文件
*.EXE 可执行文件 二进制文件
8.1 文件概述
4
2. 文件的种类
按文件编码方式分为: ASCII文件(或称文本文件) ASCII码文件中每个字节存放一个ASCII代码,代表一
个字符,此种存储形式便于输出显示,在DOS操作系统下可 以直接阅读。
二进制文件 二进制文件中的数据是按照在内存中的二进制存储格
式存放的,此种存储形式节省存储单元。二进制文件在DOS 操作系统下不能直接阅读。
8.1 文件概述
5
2. 文件的种类
例如:将短整数1949分别存储在这两种数据文件中。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf(“%c”,*p-32); p++; } A.LANGUAGE B.language C.LANG D.langUAGE
2、填空题
1)若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储
单元a[4]的语句是

2)若有以下定义和语句:则*--p的值是 。
int a[4]={0,1,2,3},*p;
C.&a[0][0]+4*i+j D.&a[0][0]+6*j+i
7)若有以下定义,则数值不为3的表达式是 。
int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;
A.x[3]
B.p1=x+3, *p1++
C.p1=x+2, *(p1++) D.p1=x+2, *++p1
8)若有说明语句:int x[3][4];则以下关于x,*x,x[0],&x[0][0]的正确描述
空。
main()
{
int a[2][3]={2,4,6,8,10,12};
int (*p)[3],i,j;
p=a;
scanf(“%d, %d”,&i,&j); /*0≤i<2, 0≤j<3*/
printf(“a[%d][%d]=%d\n”,i,j,
);
}
6)下面程序的运行结果是 。
main()
{ int x[ ]={0,1,2,3,4,5,6,7,8,9}; int s,i,*p; s=0; p=&x[0]; for(i=1; i<10; i+=2) s+=*(p+i); printf(“sum=%d”,s);
} 7)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返 回。请填空。
int mystrlen(char *str) {
char *p; for(p=str; !=’\0’; p++); return( ); } 8)下面程序段的运行结果是 。 char a[ ]=“12345”,*p; int s=0; for(p=a; *p!=’\0’; p++) s=10*s+*p-‘0’; printf(“%d\n”,s); 9)下面程序的运行结果是 main() { int va[10],vb[10],*pa,*pb,i; pa=va; pb=vb; for(i=0; i<3; i++,pa++,pb++) {
C.char *s=“china”; 等价于char *s; s=“china”;
D.char c[4]=“abc”,d[4]=“abc”; 等价于char c[4]=d[4]=“abc”;
5)以下合法的定义是 。
A.static str[ ]={“china”};
B.char *p=“china”;
printf(“%s %s”,p,q);
}
14)以下程序的输出结果是
#include<stdio.h>
main()
{
char str[ ]=“abc”, *ps=str;
while(*ps)
ps++;
for(ps--; ps-str>=0; ps--)
puts(ps);
}
15)设有以下程序:
#include<stdio.h>
char s[10],*p;
p=s;
do{
b=a%16;
if(b<10)
*p=b+48;
else
*p=b+55;
p++;
a=a/5;
}while(a>0);
*p=’\0’;
puts(s);
}
A.10 B.2 C.51 D.\0
12)下面程序的运行结果是 。
#include<stdio.h>
main()
C.char *p; strcpy(p,”china”); D.char str[13]; str[
]=“china”;
6)若有定义:int a[4][6];则能正确表示a数组中任一元素a[i][j](此处0≤i
<4,0≤j<6)地址的表达式是 。
A.&a[0][0]+6*i+j B.&a[0][0]+4*j+i
13)以下程序中调用scanf函数给变量a输入数值的方法是错误,其错误
原因是 。
main()
{
int *p,*q,a,b;
p=&a;
printf(“input a:”);
scanf(“%d”,*p);

}
A.*p表示的是指针变量p的地址
B.*p表示的是变量a的值,而不是变量a的地址
C.*p表示的是指针变量p的值
{
static char a[ ]=“Language”,b[ ] =“programe”;
char *p1,*p2;
int k;
p1=a; p2=b;
for(k=0; k<=7; k++)
if(*(p1+k)= =*(p2+k))
printf(“%c”,*(p1+k));
}
A.gae B.ga C.Language D.有语法错误
return t;
}
12)以下程序的输出结果是

#include<stdio.h>
main()
{
char *ptr1, *ptr2;
ptr1=ptr2=“abcde”;
while(*ptr2!=’\0’)
putchar(*ptr2++);
while(--ptr2>=ptr1)
putchar(*ptr2);
18)以下正确的程序段是 。
A.char str1[]=“12345”,str2[]=“abcdef”; strcpy(str1,str2);
B.char str[10],*st=“abcde”; strcat(str,st);
C.char str[10]=“ “, *st=“abcde”; strcat(str,st);
main()
{
int k=0;
char a[80],b[80],c[80]={‘\0’},*p,*q;
p=a; q=b; gets(a); gets(b);
while(
)
{
if( )
c[k]=*q;
else
c[k]=*p;
A.17
B.18
C.19
D.20
15)有如下程序:
#include<stdio.h>
main()
{
char ch[2][5]={“6937”, “8254”}, *p[2];
int i, j, s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]!=’\0’; j+=2)
是。
A.x,*x,x[0],&x[0][0]均表示元素x[0][0]的地址
B.只有x,x[0],&x[0][0]表示的是元素x[0][0]的地址
C.只有x[0]和&x[0][0]表示的是元素x[0][0]的地址
D.只有&x[0][0]表示的是元素x[0][0]的地址
9)若有以下说明语句:
static int i, a[2][3]={1, 3, 5, 7, 9,11};
int m, n;
且0≤m≤1,0≤n≤2,则 是对数组元素的正确引用。
A.a[m]+n
B.*(a+5)
C.*(*(a+m)+3) D.*(*(a+m)+n)
10)以下程序运行的结果是 。
#include<stdio.h>
#include<string.h>
main()
{
char *p1,*p2,str[50]=“abc”;
p1=“abc”; p2=“abc”;
strcpy(str+1, strcat(p1,p2));
printf(“%s\n”,str);
}
A.abcabcabc B.bcabcabc C.aabcabc D.cabcabc
11)下面程序的运行结果是 。
#include<stdio.h>
main()
{
int b,a=28;
scanf(“%d”,p); sum=s(p); printf(“sum=%d\n”,sum); } } s(int *p) { int sum=10; sum=sum+*p; return(sum); } 11)以下程序的运行结果是 。 #include<stdio.h> main() { int i,k; for(i=0; i<4; i++) { k=sub(&i); printf(“%3d”, k); } printf(“\n”); } int sub(int *s) { static int t=0; t=*s+t;
3)若已定义a为int型变量,则 是对指针p的正确说明和初始化。
A.int *p=a; B.int *p=*a;
C.int p=&a; D.int *p=&a;
相关文档
最新文档