急需c语言程序设计教程第四版实验指导与习题解答课后习题答案,谢谢!!

急需c语言程序设计教程第四版实验指导与习题解答课后习题答案,谢谢!!,第1张

你把这个拿去试试,我到网上找了一个帮你改的,看看可以不,

#include<stdioh>

int main()

{

//int a[10][10];

int n;

printf("please input the line:\n");

scanf("%d\n",&n);

getchar();

int i,j;

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

{

a[i][0]=1;

a[i][i]=1;

}

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

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

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

{

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

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

printf("\n");

}

return 0;

}

特点不同。

特点不同:C程序设计谭浩强版本的第四版比较简单被普遍认为是学习C语言的好教材,并被全国大多数高校选用。苏小红设计的第四版比较困难该教材兼具趣味性和实用性,以应用为背景,面向编程实践和问题求解能力的训练,从实际问题出发,在案例的不断深化中逐步引出知识点,形成程序设计方法由自底向上到自顶向下和数据结构由简单到复杂的两条逻辑清晰的主线。

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。

(第一题)#include <stdioh>

void main()

{

int gy(int m, int n);

int x,y,max, min;

printf("请输入两个大于0的正整数,以空格或者回车间隔:\n");

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

while(x<1 || y<1)

{

printf("输入数据不正确,请重新输入。\n");

printf("请输入两个大于0的正整数,以空格或者回车间隔:\n");

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

}

max=gy(x,y);

min=xy/max;

printf("%d与%d的最大公约数是:%d,最小公倍数是:%d\n",x,y,max,min);

}

int gy(int m, int n)

{

int max, t;

while(m%n != 0) // while(m%n)

{

t=n; n=m%n; m=t;

}

max=n;

return max;

}

第二题#include <stdioh>

#include <mathh>

void main()

{

void root(double a, double b, double c);

double a, b, c;

printf("请输入一元二次方程的系数,用空格或者回车间隔:\n");

scanf("%lf%lf%lf",&a,&b,&c);

root(a,b,c);

}

void root(double a, double b, double c)

{

double disc, x1, x2, real , imag;

disc = bb-4ac;

if(disc>0)

{

x1 = (-b+sqrt(disc))/(2a);

x2 = (-b-sqrt(disc))/(2a);

printf("方程有两个实根,分别是:%f 与 %f\n", x1, x2);

}

else if(disc==0)

{

x1 = (-b)/(2a);

printf("方程有一个实根,它是:%f\n ", x1);

}

else

{

real=(-b)/(2a);

imag=sqrt(-disc)/(2a);

printf("方程有两个虚根,分别是:%f+%fi, %f-%fi\n", real,imag,real,imag);

}

}

测试1:请输入一元二次方程的系数,用空格或者回车间隔:1 2 1

方程有一个实根,它是:-1000000

测试2:请输入一元二次方程的系数,用空格或者回车间隔:1 6 5

方程有两个实根,分别是:-1000000 与 -5000000

测试3:请输入一元二次方程的系数,用空格或者回车间隔:1 1 1

方程有两个虚根,分别是:-0500000+0866025i, -0500000-0866025i

第三题#include <stdioh>

#include <mathh>

void main()

{

int isprime(int n);

int n;

scanf("%d",&n);

while(n<2)

{

printf("Please reinput(n>=2):");

scanf("%d",&n);

}

if(isprime(n))

printf("%d是素数。\n",n);

else

printf("%d不是素数。\n",n);

}

int isprime(int n)

{

int i,k=sqrt(n);

for(i=2;i<=k;i++)

{

if(n%i==0)

return 0;

}

return 1;

}

第四题#include <stdioh>

#include <mathh>

void main()

{

void printA(int a[3][3]);

void reverse(int a[3][3]); //转置函数的声明

int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

printf("原二维数组:\n");

printA(a);

reverse(a); //函数转置

printf("转置后的数组:\n");

printA(a);

}

void printA(int a[3][3])

{

int i,j;

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

{

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

{

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

}

printf("\n");

}

}

void reverse(int a[3][3]) //函数转置的定义

{

int i,j,t;

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

{

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

{

t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

}

}

第五题#include <stdioh>

#include <stringh>

void main()

{

char str[30];

void fanxu(char p);

printf("请输入一个字符串:");

gets(str);

printf("进行反序\n");

fanxu(str);

printf("反序后的字符串:");

puts(str);

}

void fanxu(char p)

{

int len=strlen(p);

char q,c;

q=p+len-1; //字符串最后一个字符位置

for(;p<q;p++,q--)

{

c=p; p=q; q=c;

}

}

第六题#include <stdioh>

#include <stringh>

void main()

{

char str1[60],str2[30];

void str_copy(char p, char q);

printf("请输入第一个字符串:");

gets(str1);

printf("请输入第二个字符串:");

gets(str2);

str_copy(str1, str2);

printf("连接后的字符串:");

puts(str1);

}

void str_copy(char p, char q)

{

for(;p!='\0';p++);

for(;q!='\0';p++,q++)

{

p=q;

}

p='\0';

}

(0808)#include <stdioh>

#include <stringh>

void main()

{

char str[80];

void insert(char str[]); //插入空格的函数

printf("请输入一个字符串:");

gets(str);

insert(str); //插入空格

puts(str); //输出字符串

}

void insert(char str[])

{

int len, i;

len=strlen(str);

for(i=len; i>0; i--) // 设置空格

{

str[2i]=str[i];

str[2i-1]=' ';

}

}

(0809)#include <stdioh>

int letter; //字母个数

int digit; //数字个数

int space; //空格个数

int others; //其它字母个数

void main()

{

void count(char str[]); //统计个数的函数的声明

char s[81];

printf("请输入一个字符串:");

gets(s);

letter=0; digit=0;

space=0; others=0;

count(s);

printf("字符串中共有 %d 个字母,%d 个数字,%d 个空格,%d个其它字母。\n",letter,digit,space,others);

}

void count(char str[]) //统计个数的函数的定义

{

int i;

char c;

for(i=0; str[i]!='\0';i++)

{

c=str[i];

if(c>='a' && c<='z' || c>='A' && c<='Z')

{ letter++; }

else if(c>='0' && c<='9')

{ digit++; }

else if(c==' ')

{ space++; }

else

{ others++; }

}

}

(0810)#include <stdioh>

#include <stringh>

void main()

{

int i;

char line[81];

int alphabetic(char c); //判断一个字符是空格还是其它字母

int longest(char str[]);//寻找最长单词的起始位置

printf("请输入一行字符串:\n");

gets(line);

printf("最长的字符串是:");

for(i=longest(line); alphabetic(line[i]); i++)

{ printf("%c",line[i]);}

printf("\n");

}

int alphabetic(char c) //如果为空格返回0,其它字母返回1

{

if(c!=' ')

return 1;

else

return 0;

}

int longest(char str[])

{

int len=0; // 记录每一个单词的长度

int length=0; // 记录最长单词的长度

int flag=1; // 其值为0时表示当前位置处于字符串中,为1时表示当前位置为空格

int place=0; // 记录最长字符串(单词)的起始位置

int point; // 每个字符串的起始位置

for(int i=0; i<=strlen(str); i++)

{

if(alphabetic(str[i])) //如果当前位置为非空格

{

if(flag) //如果前一字符为空格

{

point = i; // 设置当前单词的起始位置

flag = 0; // flag设为0,表示处于单词中

}

else //如果前一字符为非空格

{ len++; } // 单词的长度加1

}

else //当前位置为空格

{

flag = 1; //flag设为1,表示当前位置为空格

if(len >= length) //如果最近单词的长度大于最长长度

{

length = len;

place = point; //设置最长单词的起始位置

len = 0; //len归0,重新开始计算单词的长度

}

}

}

return place;

}

(0811)#include <stdioh>

#include <stringh>

void main()

{

void inputNum(int a[], int n);

void outputNum(int a[], int n);

void bubble(int a[], int n);

int a[11], n;

printf("请输入你要排序的数的个数:");

scanf("%d",&n);

inputNum(a,n);

outputNum(a,n);

bubble(a,n);

printf("从小到大排序为:\n");

outputNum(a,n);

}

void inputNum(int a[], int n)

{

int i;

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

{

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

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

}

}

void outputNum(int a[], int n)

{

int i;

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

{

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

}

printf("\n");

}

void bubble(int a[], int n)

{

int i,j,t;

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

{

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

{

if(a[j]>a[j+1])

{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

}

}

}

(0813)#include <stdioh>

void main()

{

double lrd(int, double);

double x;

int n;

printf("请输入n阶勒让德多项式的阶数:\n");

scanf("%d",&n);

printf("请输入x的值:\n");

scanf("%lf",&x);

printf("参数为%f 的 %d 阶勒让德多项式的值为 %f\n",x,n,lrd(n,x));

}

double lrd(int n, double x)

{

if(n==0)

return 1;

else if(n==1)

return x;

else

return ((2n-1)x - lrd(n-1,x) -(n-1)lrd(n-2,x))/n;

}

/

测试1:请输入n阶勒让德多项式的阶数:0请输入x的值:9999参数为99990000 的 0 阶勒让德多项式的值为 1000000

测试2:请输入n阶勒让德多项式的阶数:1请输入x的值:9999

参数为99990000 的 1 阶勒让德多项式的值为 99990000

测试3:请输入n阶勒让德多项式的阶数:2

请输入x的值:9999 参数为99990000 的 2 阶勒让德多项式的值为 99490000

测试4:请输入n阶勒让德多项式的阶数:10

请输入x的值:11

参数为1100000 的 10 阶勒让德多项式的值为 0888677

(0817)#include <stdioh>

void main()

{

int num;

void convert(int num); // 转换为字符串的函数的声明

printf("请输入一个整数:\n");

scanf("%d",&num);

printf("转换成字符串:");

if(num<0)

{

putchar('-');

num = -num;

}

convert(num);

printf("\n");

}

void convert(int n)

{

int i;

if((i = (n/10)) != 0)

{

convert(i);

}

putchar(n%10 + '0');

}

(0818)#include <stdioh>

int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

void main()

{

int year,month,day;

int days;

int count(int year,int month, int day);

int leap(int y);

printf("请输入年份:");

scanf("%d",&year);

while(year<=0)

{

printf("年份不能为负,请重新输入:");

scanf("%d",&year);;

}

if(leap(year)) //如果为闰年,2月份的天数为29

{ d[2]=29; }

printf("输入月份:");

scanf("%d",&month);

while(month<1 || month>12)

{

printf("月份在1月和12月之间,你的输入有误,请重新输入:");

scanf("%d",&month);

}

printf("输入日数:");

scanf("%d",&day);;

while(day<1 || day >d[month])

{

printf("日数应在1和%d之间,请重新输入:",d[month]);

scanf("%d",&day);

}

days=count(year,month,day);

printf("%d年%d月%d日是该年的第%d天\n",year,month,day,days);

}

int leap(int y)

{

if(y%4==0 && y%100!=0 || y%400==0)

return 1;

else

return 0;

}

int count(int year,int month, int day)

{

int i,days=0;

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

{ days += d[i]; }

days+=day;

return days;

}

(08050)#include <stdioh>

#include <stringh>

void main()

{

char str[30];

void fanxu(char str[]);

printf("请输入一个字符串:");

gets(str);

printf("进行反序\n");

fanxu(str);

printf("反序后的字符串:");

puts(str);

}

void fanxu(char str[])

{

int len=strlen(str);

int i,j;

char c;

i=0; j=len-1;//i,j分别存储第一个字符和最后一个字符的下标

for(;i<j; i++,j--)

{

c=str[i]; str[i]=str[j]; str[j]=c;

}

}

(08051)#include <stdioh>

#include <stringh>

void main()

{

char str[30];

void fanxu(char s[]);

printf("请输入一个字符串:");

gets(str);

printf("进行反序\n");

fanxu(str);

printf("反序后的字符串:");

puts(str);

}

void fanxu(char s[])

{

int len=strlen(s);

int i;

char c;

for(i=0;i<=len/2;i++)

{

c=s[i];

s[i]=s[len-i-1];

s[len-i-1]=c;

}

}

(08061)#include <stdioh>

#include <stringh>

void main()

{

char str1[60],str2[30];

void str_copy(char s1[], char s2[]);

printf("请输入第一个字符串:");

gets(str1);

printf("请输入第二个字符串:");

gets(str2);

str_copy(str1, str2);

printf("连接后的字符串:");

puts(str1);

}

void str_copy(char s1[], char s2[])

{

int i,j;

for(i=0;s1[i];i++); // s1[i]!='\0'

for(j=0;s1[i]=s2[j];i++,j++);

// (s1[i]=s2[j])!='\0'

}

(08110)#include <stdioh>

#include <stringh>

void main()

{

void inputNum(char a[], char n);

void outputNum(char a[], char n);

void bubble(char a[], char n);

char a[11], n;

printf("请输入你要排序的数的个数:");

scanf("%d",&n);

inputNum(a,n);

outputNum(a,n);

bubble(a,n);

printf("从小到大排序为:\n");

outputNum(a,n);

}

void inputNum(char a[], char n)

{

char i;

printf("请连续输入%d个字符:",n);

fflush(stdin); //一般在输入字符或者字符串之前要清空输入缓冲区

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

{

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

}

}

void outputNum(char a[], char n)

{

char i;

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

{

printf("%2c",a[i]);

}

printf("\n");

}

void bubble(char a[], char n)

{

char i,j,t;

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

{

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

{

if(a[j]>a[j+1])

{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

}

}

}

(08112)#include <iostreamh>

#include <iomaniph>

void main()

{

void inputNum(int a[], int n);

void outputNum(int a[], int n);

void bubble(int a[], int n);

int a[11], n;

cout<<"请输入你要排序的数的个数:";

cin>>n;

while(n<1 || n>10)

{

cout<<"请重新输入,(1<=n<=10):";

cin>>n;

}

inputNum(a,n);

outputNum(a,n);

bubble(a,n);

cout<<"从小到大排序为:\n";

outputNum(a,n);

}

void inputNum(int a[], int n)

{

int i;

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

{

cout<<"a["<<i<<"]=";

cin>>a[i];

}

}

void outputNum(int a[], int n)

{

int i;

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

{

cout<<setw(6)<<a[i];

}

cout<<endl;

}

void bubble(int a[], int n)

{

int i,j,t;

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

{

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

{

if(a[j]>a[j+1])

{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

}

}

}

(08181)#include <iostreamh>

#include <iomaniph>

int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

void main()

{

int year,month,day;

int days;

int count(int year,int month, int day);

int leap(int y);

cout<<"请输入年份:";

cin>>year;

while(year<=0)

{

cout<<"年份不能为负,请重新输入:";

cin>>year;

}

if(leap(year)) //如果为闰年,2月份的天数为29

{ d[2]=29; }

cout<<"输入月份:";

cin>>month;

while(month<1 || month>12)

{

cout<<"月份在1月和12月之间,你的输入有误,请重新输入:";

cin>>month;

}

cout<<"输入日数:";

cin>>day;

while(day<1 || day >d[month])

{

cout<<"日数应在1和"<<d[month]<<"之间,请重新输入:"<<endl;

cin>>day;

}

days=count(year,month,day);

cout<<year<<"年"<<month<<"月"<<day<<"日是该年的第"<<days<<"天\n";

}

int leap(int y)

{

if(y%4==0 && y%100!=0 || y%400==0)

return 1;

else

return 0;

}

int count(int year,int month, int day)

{

int i,days=0;

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

{ days += d[i]; }

days+=day;

return days;

}

中文名:C语言程序设计

作者:吴国凤

图书分类:科技

资源格式:PDF

版本:高清文字版

出版社:合肥工业大学出版社

书号:9787565008405

发行时间:2012年8月1日

地区:大陆

语言:简体中文

本书是高清文字版非扫描拒绝模糊享受清晰!

无法下载的用户请到评论区一楼查看网盘地址!

内容介绍:

本文章由第1章 C语言概述、第2章 数据类型、运算符与表达式等组成。

内容截图:

目录:

第1章 C语言概述10

11 程序设计与C语言10

12 C程序初识12

13 程序设计方法与算法16

14 C程序运行环境与学习方法20

15 例题精解24

16 本章小结25

习题25

第2章 数据类型、运算符与表达式27

21 C语言基础27

22 常量30

23 变量32

24 基本运算符与表达式33

25 不同数据类型间的转换和运算39

26 例题精解41

27 本章小结42

习题43

第3章 顺序结构程序设计45

31 C语言中的语句45

32 数据的输入输出47

33 例题精解54

34 本章小结57

习题57

第4章 选择结构程序设计62

41 关系运算和逻辑运算62

42 if语句65

43 switch语句70

44 例题精解72

45 本章小结75

习题75

第5章 循环结构程序设计80

51 概述80

52 while语句80

53 dowhile语句82

54 for语句84

55 循环嵌套88

56 break语句、continue语句和goto语句与标号90

57 例题精解92

58 本章小结97

习题97

第6章 数组105

61 一维数组105

62 二维数组108

63 字符数组和字符串112

64 例题精解117

65 本章小结121

习题122

第7章 指针126

71 指针的基本概念126

72 指针与数组133

73 指针数组和指向指针的指针142

74 例题精解147

75 本章小结149

习题150

第8章 函数154

81 函数的基本概念154

82 函数参数和函数的值155

83 函数的调用157

84 数组作为函数参数158

85 指针作为函数参数161

86 嵌套调用与递归调用163

87 存储类型166

88 命令行参数170

89 例题精解171

810 本章小结175

习题175

第9章 编译预处理181

91 宏定义181

92 文件包含184

93 条件编译185

94 例题精解186

95 本章小结188

习题189

第10章 结构体与共用体192

101 结构体192

102 共用体208

103 枚举211

104 用户定义类型212

105 例题精解213

106 本章小结214

习题215

第11章 位运算219

111 位运算的概念219

112 位运算219

113 位域(位段)223

114 本章小结226

习题226

第12章 文件228

121 文件概念228

122 文件指针229

123 文件的打开与关闭230

124 文件的读写231

125 文件的定位 *** 作238

126 文件的错误检测240

127 本章小结241

习题241

附录243

1 常用字符与ASCII代码对照表243

2 C语言运算符的优先级与结合性244

3 C库函数245

4 常见错误信息表252

下载地址:

2分,共60分)下列各题A、B、C、D四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

1微型计算机的运算器、控制器及内存储器组合在一起,称之为()(本题分值:1分)

D

AALU

BCPU

CMPU

D主机

2下列存储器中,存取速度最快的是()(本题分值:1分)

D

A软盘

B硬盘

C光盘

D内存

3系统软件中最重要的是()(本题分值:1分)

A

A *** 作系统

B语言处理程序

C工具软件

D数据库管理系统

4、CPU处理的数据基本单位为字,一个字的字长()(本题分值:1分)

D

A为8个二进制位

B为16个二进制位

C为32个二进制位

D与CPU芯片的型号有关

5打印当前屏幕内容应使用的控制键是()(本题分值:1分)

D

AScroll-Lock

BNum-Lock

CPgDn

DPrtSc(Print Screen)

6能将高级语言源程序转换成目标程序的是()(本题分值:1分)

C

A调试程序

B解释程序

C编译程序

D编辑程序

7二进制数111011111转换成十进制数是()(本题分值:1分)

B

A119375

B11975

C119125

D1193

8十六进制数FF1转换成十进制数是()(本题分值:1分)

A

A2550625

B255125

C1270625

D127125

9中国国家计算机网络设施是()(本题分值:1分)

A

ANCFC

BCERNET

CISDN

DInternet

10控制键^C的功能为()(本题分值:1分)

A

A终止当前 *** 作

B系统复位

C暂停标准输出设备的输出

D结束命令行

11COMMANDCOM为命令处理程序,DOS系统启动后,它()(本题分值:1分)

B

A驻留在外存,需要时装入内存

B常驻内存,包含所有内部命令

C不能处理外部命令

D不能处理后缀为EXE的可执行文件

12为了将所有扩展名为PAS的文件改成扩展名为P,应使用命令()(本题分值:1分)

C

AREN PAS AS

BREN PAS P

CREN PAS P

DREN PAS P

13设当前盘中文件XYC的路径为\A\B\XU,当前目录为\A\B。为了查看文件XYC的内容,应使用命令()(本题分值:1分)

A

ATYPE XU\XYC

BTYPE \XU\XYC

CDIR XU\XYC

DDIR \A\B\XU\XYC

14要将提示符改成当前盘当前目录后加一个大于号“>”,应使用命令()(本题分值:1分)

B

APROMPT

BPROMPT $ p $ g

CPROMPT $ $

DPROMPT C\>

15在多媒体计算机系统中,CD-ROM属于()(本题分值:1分)

D

A感觉媒体

B表示媒体

C表现媒体

D存储媒体

16设当前盘为C盘,将A盘根目录下的文件目录信息存放到当前盘当前目录下的文件AB中,应使用命令()(本题分值:1分)

C

ATYPE A:\>AB

BDIR >AB

CDIR A:\>AB

DDIR \>AB

17在位运算中, *** 作数每右移一位,其结果相当于()(本题分值:1分)

B

A *** 作数乘以2

B *** 作数除以2

C *** 作数除以16

D *** 作数乘以16

18在当前盘当前目录下有一个文件ABAT,其内容为

CD \

MD \XYZ\AB\B\C

CD XYZ\AB\B

在正确执行上述文件后,接着执行下列命令时,不会发生错误的是()(本题分值:1分)

C

AMD C

BRD \XYZ

CRD C

DRD B

19下列命令组中两个DOS命令互相等价的是()(本题分值:1分)

D

ATYPE ABTXT与DIR ABTXT

BDISKCOMP A:B:与COMP A: B:

CTYPE ABTXT>>XYTXT与COPY ABTXT XYTXT

DTYPE ABTXT>XYTXT与COPY ABTXT XYTXT

20设A盘为启动盘,其目录结构为

根目录

DOS子目录 COMANDCOM

USER子目录 AUTOEXECBAT

其文件AUTOEXECBAT的内容如下:

MD \XYZ

CD \DOS\USER

则由A盘启动成功后,A盘的当前目录是()(本题分值:2分)

C

A\DOS\USER

B\XYZ

C根目录

D\DOS

21C语言提供的合法关键字是()(本题分值:1分)

C

Aswitch

Bcher

Ccase

Ddefault

22在C语言中,合法的字符常量是()(本题分值:1分)

B

A′\084′

B′\x43′

C′ab′

D′\0′

23若已定义x和y为double类型,则表达式: x=1,y=x+3/2的值是()(本题分值:1分)

C

A1

B2

C20

D25

24合法的数组定义是()(本题分值:1分)

D

Aint a[]=〃string〃;

Bint a[5]=;

Cchar a=〃string〃;

Dchar a[]=;

25设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是()(本题分值:1分)

A

A10<a<15

Ba==11||a==12||a==13||a==14

Ca>10&&a<15

D!(a<=10)&&!(a>=15)

26若t为double类型,表达式t=1,t+5,t++的值是()(本题分值:1分)

C

A1

B60

C20

D10

27若有定义和语句:

char s[10];s=〃abcd〃;printf(〃%s\n〃,s);

则结果是(以下μ代表空格)()(本题分值:1分)

D

A输出abcd

B输出a

C输出abcdμμμμμ

D编译不通过

28若有定义和语句:

int pp,p,a=10,b=20;

pp=&p;p=&a;p=&b;printf(〃%d,%d\n〃,p,pp);

则输出结果是()(本题分值:1分)

D

A10,10

B10,20

C20,10

D20,20

29若有以下定义和语句:

int u=010,v=0x10,w=10;

printf(〃%d,%d,%d\n〃,u,v,w);

则输出结果是()(本题分值:1分)

A

A8,16,10

B10,10,10

C8,8,10

D8,10,10

30若有以下定义和语句:

char c1=′b′,c2=′e′;

printf(〃%d,%c\n〃,c2-c1,c2-′a′+′A′);

则输出结果是()(本题分值:1分)

B

A2,M

B3,E

C2,E

D输出项与对应的格式控制不一致,输出结果不确定

31若有定义:int a[3][4];,()不能表示数组元素a[1][1]。(本题分值:1分)

D

A(a[1]+1)

B(&a[1][1])

C((a+1))[1]

D(a+5)

32若i、j已定义为int型,则以下程序段中内循环体的总的执行次数是()(本题分值:1分)

for(i=5;i>0;i--)

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

A

A20

B24

C25

D30

33若有以下定义和语句:

char s1=〃12345〃,s2=〃1234〃;

printf(〃%d\n〃,strlen(strcpy(s1,s2)));

则输出结果是()(本题分值:1分)

A

A4

B5

C9

D10

34若有以下定义和语句:

int a[10]=,p=a;

则不能表示a数组元素的表达式是()(本题分值:1分)

B

Ap

Ba[10]

Ca

Da[p-a]

35下面程序的输出结果是()(本题分值:2分)

C

Ak=3 a=2 b=3

Bk=3 a=3 b=2

Ck=2 a=3 b=2

Dk=2 a=2 b=3

36下面程序的输出结果是()(本题分值:1分)

main()

{unsigned a=32768;

printf(〃a=%d\n〃,a);}

C

Aa=32768

Ba=32767

Ca=-32768

Da=-1

37执行下面语句后的输出结果为()(本题分值:1分)

int i=-1;

if(i<=0) printf(〃\n〃);

else printf(〃%%%%\n〃)

D

A

B%%%%

C%%%%c

D有语法错误,不能正确执行

38对于条件表达式(M)(a++):(a--),其中的表达式M等价于()(本题分值:1分)

C

AM==0

BM==1

CM!=0

DM!=1

39下述程序段的输出结果是()(本题分值:1分)

int x=10;

int7nbspy=x++;

printf(〃%d,%d〃,(x++,y),y++);

A

A11,10

B11,11

C10,10

D10,11

40若有以下的定义:

int a[]=,p=a

则值为3的表达式是()(本题分值:1分)

A

Ap+=2,(p++)

Bp+=2,++p

Cp+=3,p++

Dp+=2,++p

41假定所有变量均已正确说明,下列是程序段运行后x的值是()(本题分值:2分)

a=b=c=0;x=35;

if(!a) x--;

else if(b);

if(c) x=3;

else x=4;

B

A34

B4

C35

D3

42在以下一组运算中,优先级最高的运算符是()(本题分值:2分)

C

A<=

B=

C%

D&&

43若有以下定义和语句:

int w[2][3],(pw)[3];pw=w;

则对w数组元素的非法引用是()(本题分值:2分)

A

A(w[0]+2)

B(pw+1)[2]

Cpw[0][0]

D(pw[1]+2)

44若有以下程序片段: char str[ ]=〃ab\n\012\\\\〃; printf(〃%d〃,strlen(str));

上面程序片段的输出结果是()(本题分值:2分)

C

A3

B4

C6

D12

45函数调用:strcat(strcpy(str1,str2),str3)的功能是()(本题分值:2分)

C

A将串str1复制到串str2中后再连接到串str3之后

B将串str1连接到串str2之后再复制到串str3之后

C将串str2复制到串str1中后再将串str3连接到串str1之后

D将串str2连接到串str1之后再将串str1复制到串str3中

46以下对C语言函数的有关描述中,正确的是()(本题分值:2分)

A

A在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

BC函数既可以嵌套定义又可以递归调用

C函数必须有返回值,否则不能使用函数

DC程序中有调用关系的所有函数必须放在同一个源程序文件中

47以下叙述中不正确的是()(本题分值:2分)

C

A在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C在C中,外部变量的隐含类别是自动存储类别

D在C中,函数形参可以说明为register变量

48设有以下定义或语句,则输出的结果是(用small模式编译,指针变量占2个字节)()(本题分值:2分)

struct date

{long cat;

struct date next;

double dog;

}too;

printf(〃%d〃,sizeof(too));

D

A20

B16

C14

D12

49设有定义:struct sk

data,p;

若有p=&data;,则对data中的a域的正确引用是()(本题分值:2分)

B

A(p)dataa

B(p)a

Cp->dataa

Dpdataa

50以下对枚举类型名的定义中正确的是()(本题分值:2分)

B

Aenum a=;

Benum a;

Cenum a=;

Denum a;

二、填空题(每空2分,共40分)请将答案分别写在答题卡中序号至的横线上,答在试卷上不得分。

1、与十进制数101等值的二进制数为。(本题分值:2分)

1100101

2、DOS命令分为内部命令与外部命令,XCOPY命令属于命令。(本题分值:2分)

外部

3、设当前盘为A盘,当前系统提示符为“>”,在不改变当前盘的情况下,显示C盘的当前目录路径,应使用命令。 (本题分值:2分)

CD C:

4、自动批处理文件名必须是。(本题分值:2分)

AUTOEXECBAT

5、设在当前盘当前目录下有两个文件WTXT与PTXT,现要将文件PTXT连接到文件WTXT的后面,若使用COPY命令,则完整的命令为。(本题分值:2分)

COPY WTXT+PTXT WTXT

6、表示条件10<x<100或x<0的C语言表达式是。(本题分值:2分)

(x>10&& x<100)||x<0

或(10<x&&x<100)||x<0

或x<0 ||(x>10&&x<100)

或0>x ||(10<x&&x<100)

7、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最笾怠G胩羁铡br> #define N 3

#define M 4

void LineMax(int x[N][M])

{ int i,j,p;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j]) ;

printf(〃The max value in line is %d\n〃,);

}

}

main()

;

;

}

(本题分值:6分)

p=j

x[i][p]

LineMax(x)

8、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。

main()

{float x[1000],sum=00,ave,a;

int n=0,i;

printf(〃Enter mark:\n〃);scanf(〃%f〃,&a);

while(a>= 00 && n<1000)

{sum+=;x[n]=;

n++; scanf(〃%f〃,&a);

}

ave= ;

printf(〃Output:\n〃);

printf(〃ave=%f\n〃,ave);

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

if() printf(〃%f\n〃,x[i]);

}

(本题分值:8分)

a

a

sum/n或sum/(float)n或sum/(double)n

x[i]<ave或!(x[i]>=ave)或ave>x[i]

9、执行以下程序,输入-10的结果是,输入5的结果是,输入10的结果是,输入30的结果是。

(本题分值:8分)

0

5

10

5

10、以下程序的功能是。

main()

int sum=0,i;

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

if(num[i]>0)

sum=num[i]+sum;

printf(〃sum=%6d〃,sum);

}

(本题分值:2分)

计算数组num中大于零的数据之和

11、以下程序可以把从键盘上输入十进制数(long型)以二到十六进制数的形式输出,请填空。

#include

main()

{char

b[16]=;

int c[64],d,i=0,base;

long n;

printf(〃Enter a number:\n〃); scanf(〃%1d〃,&n);

printf(〃Enter new base:\n〃); scanf(〃%1d〃,&base);

do

{c[i]=;

i++;

n=n/base;

}while(n!=0);

printf(〃The result is:\n〃);

for(--i;i>=0;--i)

{d=c[i];

printf(〃%c〃,b);

}

}

(本题分值:4分)

n%base

[d]

以上就是关于急需c语言程序设计教程第四版实验指导与习题解答课后习题答案,谢谢!!全部的内容,包括:急需c语言程序设计教程第四版实验指导与习题解答课后习题答案,谢谢!!、c语言程序设计苏小红第四版和谭浩强有什么区别、求<c语言程序设计>的答案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9303516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存