当前位置:首页 » 编程语言 » 周信东c语言程序设计实验一答案
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

周信东c语言程序设计实验一答案

发布时间: 2023-02-19 16:52:04

A. 帮忙给个《c语言程序设计》 练习题 答案 这次考试题就在其中。。。。

1A(B 中第四个选项首行是数字,D选型有关键字) 2D 3A 4A 5C(我在TC上运行的) 6A 7D 8D(0147是8进制转换成十进制即103即‘g’) 9D(属自动类型转换) 10 D 11C 12A(条件运算符运算方式是从右向左的) 13B(算术运算符-的优先级高于关系运算符<=,最后是逻辑判断 为真1,假0)14C
15 D(考察逗号运算符) 16D

B. C语言程序设计(201803)测试求大佬帮忙!

  1. 选D

  2. 选C;"my name"算上空格一共7个字符,加上结尾的''为8个字符,所以如果m前没有空格,那么答案为C

  3. 选C;p指向a[3]=4的地址,即p及其之后地址中的数值为{4,5,6,7,8,9,10},所以其中第5个数为p[4]=8

  4. 选C

  5. 选D;A错误,字符串应为char型;B错误,数组长度不够;C错误,没有vhst类型;D正确,可看作字符数组,{}内的数值可转为相应的ASCII字符

  6. 选C;字符数组即字符串不能直接通过"="赋值,要使用strcpy函数

  7. 选C;函数实参可以是常量、变量或表达式,该题中逗号表达式(exp2,exp3)返回exp3,(exp4,exp5,exp6)返回exp6,因此一共3个实参

  8. 选C;A错误,函数调用时不用指明其参数类型;B错误,fun函数没有返回值,不能赋给k;C正确;D错误,函数调用时不用指明其返回类型

  9. 选A;n++表示先返回n的值,再对n进行自增操作,即先令k=n,再执行n=n+1

  10. 选C;if-else不是循环结构

  11. 选D;aa表示数组首地址,即&aa[0],而不是&aa[1]

  12. 选B

  13. 选B;a[2]=3,a[2]+1=4,所以a[a[2]+1]=a[4]=5

  14. 选C;A错误,除非函数定义在调用语句之后的位置,才需要提前声明;B错误,函数返回值不一定要显示给出,没有返回值类型的默认为整型;C正确;D错误,在类的定义中,当构造函数和析构函数不需要完成操作时可用空函数来表示,但它们又是有意义的

  15. 选B;scanf需指明读入变量的地址,字符串名称c就表示字符串的地址,也即字符数组首元素的地址,不用再加取地址符&

  16. 选A

  17. 选D;同第6题

码字不易,望采纳~

C. c语言程序设计课后习题解答与实验指导

#include<stdio.h>
int max(int x,int y,int z)
{
int t;
t=x>y?x:y;
t=t>z?t:z;
return(t);
}
int min(int x ,int y,int z)
{
int t;
t=x<y?x:y;
t=t<z?t:z;
return(t);
}
int aver(int x ,int y,int z)
{
int t;
t=(x+y+z)/3;
return(t);
}
void main()
{ int x,y,z,a,b,c;
scanf("%d,%d,%d",&x,&y,&z);
a=(*max)(x,y,z);
b=(*min)(x,y,z);
c=(*aver)(x,y,z);
printf("%d,%d,%d\n",a,b,c);
}
建议改成:
#include<stdio.h>
int max(int x,int y,int z)
{
int t;
t=x>y?x:y;
t=t>z?t:z;
return(t);
}
int min(int x ,int y,int z)
{
int t;
t=x<y?x:y;
t=t<z?t:z;
return(t);
}
float aver(int x ,int y,int z)
{
int t;
t=(float)((x+y+z)/3.0);
return(t);
}
void main()
{ int x,y,z,a,b;float c;
scanf("%d,%d,%d",&x,&y,&z);
a=(*max)(x,y,z);
b=(*min)(x,y,z);
c=(*aver)(x,y,z);
printf("max=%d\nmin=%d\naver=%g\n",a,b,c);
}

D. c语言程序设计答案

444444

E. 《C语言程序设计》试题1 求解 请勿乱填 非常感谢

CCCBA,DBD9D
CDBBB,BCBAC不敢保证全对。。。
第九题我觉得答案是2.。。。

F. c语言程序设计(周信东版)的综合程序设计如下:编写程序,从键盘输入某楼6家住户某月的水电消耗及水费和电费

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
char user[4];
char waterNum[4];
char elecNum[4];
char inlinebuf[32];
char outlinebuf[32];
char pbuf[256];
FILE *fp1;
FILE *fp2;

int WaterNum=0;
int ElecNum=0;
int length =0;
int m=0;
int n=0;
int weishuflag=0;
int flagnum=0;
int i=0;
int j=0;

float waterPrice=0.0;
float elecPrice=0.0;

if((fp1=fopen("./input.dat","r"))==NULL)
{
printf("open input data error!\n");
return -1;
}

if((fp2=fopen("./change.dat","w"))==NULL)
{
printf("open input data error!\n");
return -1;
}

fseek(fp1,0,SEEK_END);
length = ftell(fp1);
fseek(fp1,0,SEEK_SET);
memset(pbuf,0,sizeof(pbuf));

printf("the input data length == %d\n",length);
fread(pbuf,length,1,fp1);

fseek(fp2, 0, SEEK_SET);
sprintf(outlinebuf,"住户\t\t水费\t\t电费\n");
fputs(outlinebuf, fp2);

while(length--)
{
if(pbuf[m]!='\n')
{
inlinebuf[n]=pbuf[m];
n++;
}
else
{
j = 0;
inlinebuf[n++]='\t'; //为处理每一行的最后一个数据(即用电量),需加入一个tab或空格键
inlinebuf[n] = '\0';//一行数据结束
while( inlinebuf[j] != '\0')
{
switch(flagnum)
{
case 0: //用户
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
user[i]=inlinebuf[j];
i++;
}
else
{
user[i]='\0';
flagnum++;//表示之前获取的是住户,下两个数据分别获取用水量与用电量
i=0;
}
break;

case 1: //用水量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
waterNum[i]=inlinebuf[j];
i++;
}
else
{
waterNum[i]='\0';
weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内
flagnum++;//表示下个数据获取的是用电量
if(weishuflag == 1)
{
WaterNum = waterNum[0] - 48;
}
else if(weishuflag == 2)
{
WaterNum = (waterNum[0] - 48)*10 + (waterNum[1] - 48);
}
else
{
WaterNum = (waterNum[0] - 48)*100 + (waterNum[1] - 48)*10 + (waterNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;

case 2: //用电量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
elecNum[i]=inlinebuf[j];
i++;
}
else
{
elecNum[i]='\0';
weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内
flagnum = 0;//表示一行三个数据获取完毕
if(weishuflag == 1)
{
ElecNum = elecNum[0] - 48;
}
else if(weishuflag == 2)
{
ElecNum = (elecNum[0] - 48)*10 + (elecNum[1] - 48);
}
else
{
ElecNum = (elecNum[0] - 48)*100 + (elecNum[1] - 48)*10 + (elecNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;
default:
break;
}
j++;
}
waterPrice = (float)WaterNum * 1.5;
elecPrice = (float)ElecNum * 0.5;
printf("The user == %s,waterNum == %d,elecNum == %d\n",user,WaterNum,ElecNum);//打印用户,用水量,用电量
printf("The user == %s,waterPrice == %.1f,elecPrice == %.1f\n\n",user,waterPrice,elecPrice);//打印用户,水费,电费
sprintf(outlinebuf,"%3s \t\t%4.1f \t\t%4.1f\n",user,waterPrice,elecPrice);

fputs(outlinebuf, fp2);//写入每一行数据(数据格式为 住户 + 水费 + 电费)
memset(outlinebuf,0,sizeof(outlinebuf));
memset(inlinebuf,0,sizeof(inlinebuf));
n=0; //一行数据处理结束,开始新的一行
}
m++;
}

fclose(fp1);
fclose(fp2);
return 0;
}
input.dat(每一行数据分别为住户 用水量 用电量,以空格或tab键隔开,且每行数据必须以回车结尾)
101 5 150
201 4 90
301 4 120
401 3 78
501 4 60
601 6 105
charge.dat (输出文件格式如下)
住户 水费 电费
101 7.5 75.0
201 6.0 45.0
301 6.0 60.0
401 4.5 39.0
501 6.0 30.0
601 9.0 52.5

G. C语言程序设计2015A卷-

一、判断题(每小题1分,共15分)

1.标准C中,只有数值型数据才能进行4则混合运算。

2.标准C中,_a是合法的自定义标识符。

3.有定义:float f;表达式f+=(int)3.6%2”不符合C语言语法。

4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。

6.以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。

7.语句for(;;);是非法的。

8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。

9.while和do-while的主要区别是后者至少无条件执行一次。

10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。

11.当函数没有返回值类型时,表示函数类型为void。

12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。

13.一个函数中只允许有一条return语句。

14.在C语言中,如果没有说明变量的存储类型是auto类型的。

15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。

二、填空题(每空1分,共15分)

1. 若a=4;b=5,c=6;则表达式c==(b=-a); 中c的值是 (1) 。

2. 计算表达式的值:

4&&-4的值: (2) ;

设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3) ;

设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4) ;

设a=12,则表达式a*=a/5的值: (5) ;

3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}

则循环语句执行完后,z值为 (6) 。

4. 变量的指针就是指该变量的 (7) 。

5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则标识符p是 (9) ;

6. 已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1));

的输出结果分别为: (10) 、 (11) 、 (12) 。

7. 已有定义: int x=65; 若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。

8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。

三、简答题(每题4分,共12分)

1、简述选择语句if和else语句对与switch语句的区别。

2、简述在循环语句中,break和continue的区别。

3、若int a[5],*p=a;简述*p++和(*p)++的区别。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)



五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)



七、编程题(8分)

编译程序,其功能是比较字符串的大小( 不允许 用系统提供的字符串比较函数strcmp)。要求是:

(1) 通过主函数调用一个函数strcompare来实现。

(2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。

(3) 并输出两个字符串中相同部分的子串。

《C语言程序设计基础》试卷参考答案

一、判断题(每小题1分,共15分)

1~5 ; 6~10 ; 11~15

二、填空题(每空1分,共15分)

(1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6

(7)地址 (8) 行指针,指向有四个元素的一维数组

(9)指针数组名,该数组有四个元素,每个元素都是指针

(10)Russia (11)i (12)h (13) %c (14) %d (15)7

三、简答题(每题4分,共12分)

1、if总是判断其后面的表达式的值是否为非零值,如是非零值则执行其后面的语句或由{}括起来的复合语句,否则执行else后面的语句。而switch语句则根据其后面表达式的可数值来判断,执行switch语句体内与其中的一个case:常量值相等语句后面的语句。执行break语句后,跳出switch语句体。

2、break是终止整个循环过程;continue是终止本次循环。

3、*p++首先取a[0]的值,然后p指向a[1];(*p)++使得a[0]的值自增1,但p保持不变。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4 分,共16分)

1、 (1)缺#include ; (2)scanf(“%f”,a); 改为 scanf(“%f”,&a);

2、 (1)缺sum=0; (2)for(i=1; i<=3; i++) 改为for(i=0;i<3;i++)

3、 (1)p1=p2 改为 *p1=*p2 (2)swap(&a, *p) 改为swap(&a, p)

4、 (1)在if(m<0)语句后添加else if(m==0) a=1; (2) 添加 return(a);

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

1、 (1)x=0; (2)if(n==x) (3)s++;或s=s+1;

2、 (4)&num[i] (5)max< num[i]? (6)num[i]!=0

3、 (7)n-i-1 (8)a[j]>a[j+1] (9)a[j+1]=temp

4、 (10)count=0; (11)n%10 (12)n>0或n!=0或n

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

1、 #*#*#*

2、 main i=1 j=2 k=2

sub i=1 j=2 k=1 x=2

sub i=1 j=2 k=1 x=3

七、编程题(8分)

#include

main()

{

int i,j, flag=0;

char str1[90],str2[90];

gets(str1);

gets(str2);

i=0;

do{

flag=strcompare(str1[i],str2[i]);

i++;

}while(str1[i]!=’’ && str2[i]!=’’ &&flag=0);

if(flag<0)printf(“%s小于%s ”,str1,str2);

else if(flag==0) printf(“%s 等于%s ”,str1,str2);

else printf(“%s大于%s ”,str1,str2);

printf(“两个字符串中相同的字串为:”);

j=0;

i--; 后3句可用str1[i]=’’; printf(“%s”,str1);代替//用str2也可以。

while(j<i){printf(“%c”,str1[i]);j++;} span=""> </i){printf(“%c”,str1[i]);j++;}>

}

int strcompare(char c1,char c2)

{

int v;

v=c1-c2;

return v;

}