C语言答案参考

C语言答案参考
C语言答案参考

1、杨辉三角形的每一项数据正好是组合(即n!/m!/(n-m)!)的值,其中n是行数(从0行开始);m是列数(从0列开始)。请使用上述算法得到杨辉三角形每一个位置的值并按下图打印。要求用函数f计算一个正整数的阶乘(用递归函数来实现),通过主函数调用f完成计算。

2. 编写一个函数,要求对n个学生的成绩进行排序,要求用数组名作函数参数。在数组a中存放了10个学生某门课程的成绩,调用上述函数,实现对10个学生的成绩排序。三、程序运行结果示例:

二、实验内容:按题目要求完成程序的改错、调试、填空和编写。

1、以下程序中,main函数通过调用fun()函数统计整数序列中的负数的个数以及平均值。本题约定平均值由函数返回,负数的个数由参数返回。程序有若干错误,请先阅读程序,找出其中的错误行,并写出出错的原因,最后上机调试该程序验证自己的预测。

#1 double aver(int a[], int n, int *p)

#2 { int i,sum=0 ;

#3 *p=0 ;

#4 for(i=0;i

#5 { sum=sum+a[i] ;

#6 if(a[i]<0) *p++;

#7 }

#8 return sum/n;

#9 }

#10 #include "stdio.h"

#11 main()

#12 { int count,x[]={0,12,33,-9,-5,27,80,0,54,63};

#13 double av;

#14 av=aver(x,10,count);

#15 printf("count: %d\naverage: %.2f\n",count,av);

#16 }

2、设有如下结构定义,且struct link为链表的结点类型,由该结构类型创建的链表中的a结点已被指针p指向(见下图),请完成下面的操作:

struct link

{ int score;

struck link *next;

}*p,*q;

(1) 写出删除b结点(包括释放其存储空间)的语句序列(允许借助于q指针),但要求链表的连续结构不能破坏,不能移动p指针。

答案:

(2) 阅读下面程序说明,按注释提示,在划线处补充细节,使程序达到预期功能。[程序说明]

以下程序中,函数create的功能是创建一个结点类型为struct link的学生成绩链表,main函数中,首先调用create函数创建一个包含N个结点的成绩链表,然后调用问题(1)的算法,将链表的第2个结点删除掉,要求输出结点删除前、后链表的内容,以验证问题(1)算法的正确性。

#include

#define N 5

#define L sizeof(struct link)

struct link

{ int score; /* 成绩*/

(1) ; /* 定义结点的指针域next */

};

struct link *create(void)

{ struct link *head,*p;

int i;

head=NULL;

printf("Input %d records\n",N);

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

{ p= (2) ; /* 创建一个动态结点*/

scanf("%d",&p->score);

(3) ; /* 新结点进栈*/

head=p;

}

return (4) ; /* 返回所创建链表的头指针*/

}

void printlist(struct link *head) /* 输出链表*/

{ struct link *p;

p=head;

while(p!=NULL)

{ printf("%d,",p->score);

(5) ; /* 使p后移一个结点*/

}

printf("\n");

}

main( )

{ struct link *base,*new;

(6) ; /* 调用create函数,创建链表*/

printlist(base); /* 输出原始链表*/

/* 借助于new指针删除第2个结点*/

(8) ; /* 输出结点删除以后的链表内容*/

printf("ok!\n");

}

跪求那位电脑高手来帮我下!!!我有附件,请一定帮帮忙!谢了!

问题补充:

跪求!!!!!搜啦,后面的还可以,但是第一个死活搜不到

2010-6-23 21:38

最佳答案

下面是我给的答案,有问题的联系我,再讨论。从12点多一直做到现在,别忘了给我选成推荐答案哈。累傻了我了都

1、杨辉三角形的每一项数据正好是组合(即s(n!/m!/(n-m)!)的值,其中n 是行数(从0行开始);m是列数(从0列开始)。请使用上述算法得到杨辉三角形每一个位置的值并按下图打印。要求用函数f计算一个正整数的阶乘(用递归函数来实现),通过主函数调用f完成计算。

答:下面是我的源代码,程序输出的部分在最后的注释里面

/*

* https://www.360docs.net/doc/b05658809.html,

*

* Created on: 2010-6-14

* Author: LiuFeng

* Email: sohu2000000@https://www.360docs.net/doc/b05658809.html,

*/

#include

#include

using namespace std;

int fac(int base){

if(base==1){

return 1;

}

return fac(base-1)*base;

}

int triDisplay(int** a, int row, int col){

if(row != col){

perror("must : row=col");

return (-1);

}

int sz=row;

printf("\n");

for(int i=0;i

*((int*)a+i*sz+0)=1;

*((int*)a+i*sz+i)=1;

}

for(int n=2;n

for(int m=1;m

*((int*)a+n*sz+m) = fac(n)/fac(m)/fac(n-m);

}

for(int n=0;n

for(int m=0;m<=n;++m){

printf("%5d", *((int*)a+n*sz+m) );

}

printf("\n");

}

return 0;

}

int

main(void){

int data[10][10];

int size=10;

if(triDisplay((int**)data,size,size)<0){

perror("bad mtria");

exit(-2);

}

return 0;

}

/*

[Administrator@ /<7>06/14]$ g++ -g -O3 -o tri https://www.360docs.net/doc/b05658809.html,

[Administrator@ /<7>06/14]$ ./tri.exe

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

*/

2. 编写一个函数,要求对n个学生的成绩进行排序,要求用数组名作函数参数。在数组a中存放了10个学生某门课程的成绩,调用上述函数,实现对10个学生的成绩排序。

答:程序的源代码如下,程序的输出在最后面的注释里面

/*

* https://www.360docs.net/doc/b05658809.html,

*

* Created on: 2010-6-14

* Author: LiuFeng

* Email: sohu2000000@https://www.360docs.net/doc/b05658809.html,

*

* g++ -g -O3 https://www.360docs.net/doc/b05658809.html, -Wall -o dsort

*/

#include

#include

#include

typedef struct

{

char _sname[30];

double _sscore;

} stu;

int

Partition(stu * stus, int l, int h)

{

stu pivot = stus[l];

while(l

while(l= (pivot._sscore))) h--;

if(l

while(l

if(l

}

stus[l]=pivot;

return l;

}

void DcSort(stu* stus, int low, int high){

int pivotpos;

if(low

pivotpos=Partition(stus,low,high);

DcSort(stus,low,pivotpos-1);

DcSort(stus,pivotpos+1,high);

}

}

int main(void){

stu s[10]={

{"zhao",60},

{"qian",40},

{"sun",80},

{"li",90},

{"zhou",70},

{"wu",50},

{"zheng",80},

{"jiang",90},

{"shen",100},

{"han",80},

};

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

printf("student: name: %s, score: %f\n", s[i]._sname, s[i]._sscore);

}

DcSort(s,0,10);

printf("\n===================after sorted ==================\n");

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

printf("student: name: %s, score: %f\n", s[i]._sname, s[i]._sscore);

}

return 0;

}

/*

输出结果:

[Administrator@ ~/<1>preInterView/SortAndFind]$ g++ -g -O3 https://www.360docs.net/doc/b05658809.html, -Wall -o dsort

[Administrator@ ~/<1>preInterView/SortAndFind]$ clear

[Administrator@ ~/<1>preInterView/SortAndFind]$ ./dsort.exe

student: name: zhao, score: 60.000000

student: name: qian, score: 40.000000

student: name: sun, score: 80.000000

student: name: li, score: 90.000000

student: name: zhou, score: 70.000000

student: name: wu, score: 50.000000

student: name: zheng, score: 80.000000

student: name: jiang, score: 90.000000

student: name: shen, score: 100.000000

student: name: han, score: 80.000000

===================after sorted ==================

student: name: qian, score: 40.000000

student: name: wu, score: 50.000000

student: name: zhao, score: 60.000000

student: name: zhou, score: 70.000000

student: name: han, score: 80.000000

student: name: sun, score: 80.000000

student: name: zheng, score: 80.000000

student: name: jiang, score: 90.000000

student: name: li, score: 90.000000

student: name: shen, score: 100.000000

[Administrator@ ~/<1>preInterView/SortAndFind]$

*/

三、程序运行结果示例:

第一题:

/*

[Administrator@ /<7>06/14]$ g++ -g -O3 -o tri https://www.360docs.net/doc/b05658809.html, [Administrator@ /<7>06/14]$ ./tri.exe

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

*/

第二题:

/*

输出结果:

[Administrator@ ~/<1>preInterView/SortAndFind]$ g++ -g -O3 https://www.360docs.net/doc/b05658809.html, -Wall -o dsort

[Administrator@ ~/<1>preInterView/SortAndFind]$ clear

[Administrator@ ~/<1>preInterView/SortAndFind]$ ./dsort.exe

student: name: zhao, score: 60.000000

student: name: qian, score: 40.000000

student: name: sun, score: 80.000000

student: name: li, score: 90.000000

student: name: zhou, score: 70.000000

student: name: wu, score: 50.000000

student: name: zheng, score: 80.000000

student: name: jiang, score: 90.000000

student: name: shen, score: 100.000000

student: name: han, score: 80.000000

===================after sorted ==================

student: name: qian, score: 40.000000

student: name: wu, score: 50.000000

student: name: zhao, score: 60.000000

student: name: zhou, score: 70.000000

student: name: han, score: 80.000000

student: name: sun, score: 80.000000

student: name: zheng, score: 80.000000

student: name: jiang, score: 90.000000

student: name: li, score: 90.000000

student: name: shen, score: 100.000000

[Administrator@ ~/<1>preInterView/SortAndFind]$

*/

二、实验内容:按题目要求完成程序的改错、调试、填空和编写。

1、以下程序中,main函数通过调用fun()函数统计整数序列中的负数的个数以及平均值。

本题约定平均值由函数返回,负数的个数由参数返回。程序有若干错误,请先阅读程序,找出其中的错误行,

并写出出错的原因,最后上机调试该程序验证自己的预测。

#1 double aver(int a[], int n, int *p) // p所谓返回的参数之一,应该使用二级指针,或者指针的引用;

#2 { int i,sum=0 ; // 这里的*p指向了函数内部的临

时变量,且该变量在函数结束时,

// 会同时被系统从栈上释放掉, 那么你在main函数中读取p指向的地址,得到的

// 就是一个不可以预期的值了,也就是“野指针”

// 使用二级指针或者指针的引用,是可以将内存在函数体内外带入带出的,但是

// 注意要在main中先申请好

#3 *p=0 ;

#4 for(i=0;i

#5 { sum=sum+a[i] ;

#6 if(a[i]<0) *p++;

#7 }

#8 return sum/n;

#9 }

#10 #include "stdio.h"

#11 main()

#12 { int count,x[]={0,12,33,-9,-5,27,80,0,54,63};

#13 double av;

#14 av=aver(x,10,count);

#15 printf("count: %d\naverage: %.2f\n",count,av);

#16 }

2、设有如下结构定义,且struct link为链表的结点类型,由该结构类型创建的链表中的a结点已被指针p指向(见下图),请完成下面的操作:

struct link

{ int score;

struct link *next;

}*p,*q;

(1) 写出删除b结点(包括释放其存储空间)的语句序列(允许借助于q指针),但要求链表的连续结构不能破坏,不能移动p指针。

答:

void

deleteNode(link* p, link* q, int b)

{

q = p;

int len=0;

while(q->next)++len;

if(len < b) {perror("You input a overflow position"); exit(-1);}

q=p;

while(--b){ // move to b

q=q->next;

}

while(q->next) { // overwrite the prenode,one by one

q->score=q->>next->score;

}

free(q) // q point to the last node;

}

(2) 阅读下面程序说明,按注释提示,在划线处补充细节,使程序达到预期功能。[程序说明]以下程序中,函数create的功能是创建一个结点类型为struct link的学生成绩链表,main函数中,首先调用create函数创建一个包含N个结点的成绩链表,然后调用问题(1)的算法,将链表的第2个结点删除掉,要求输出结点删除前、后链表的内容,以验证问题(1)算法的正确性。

#include

#define N 5

#define L sizeof(struct link)

struct link

{ int score; /* 成绩*/

(1);/* 定义结点的指针域next */

};

struct link *create(void)

{

struct link *head,*p;

int i;

head=NULL;

printf("Input %d records\n",N);

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

{

p=(2) ; /* 创建一个动态结点*/

scanf("%d",&p->score);

(3); /* 新结点进栈*/

head=p;

}

return (4) ; /* 返回所创建链表的头指针*/

}

void printlist(struct link *head) /* 输出链表*/

{ struct link *p;

p=head;

while(p!=NULL)

{ printf("%d,",p->score);

(5) ; /* 使p后移一个结点*/

}

printf("\n");

}

int

main( void)

{ struct link *base,*new;

(6) ; /* 调用create函数,创建链表*/

printlist(base); /* 输出原始链表*/

/* 借助于new指针删除第2个结点*/

(8) ; /* 输出结点删除以后的链表内容*/

printf("ok!\n");

}

(2)答:

【(1)link * next; 】

【(2)p= (link*)malloc(sizeof(struct link)); 】

【(3)p->next = head 】

【(4)head 】

【(5)p=p->next 】

【(6)base = create(); 】

【(7)deleteNode(base, new, int b); // 利用我们上一问中,写好的函数】【(8)printlist(base);】

C语言题库及答案

C语言题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

C语言上机作业题及答案

实验一: 1、已知华氏温度,根据转换公式计算相应的摄氏温度。 摄氏温度= 5*(华氏温度-32)/9 2.任意输入一个有五位数字的正整数,逆序输出每一数位上的数字。 如: 输入 12345 输出 5 4 3 2 1 #include"stdio.h" main() { double t,T; printf ("已知华氏温度,根据转换公式计算相应的摄氏温度"); scanf ("%lf",&t); T=(5*(t-32)/9); printf ("摄氏温度=%lf",T); } #include"stdio.h" main() { int value,a,b,c,d,e,m,n,h; printf ("任意输入一个有五位数字的正整数,逆序输出每一数位上的数字"); scanf ("%d",&value); a=value/10000; m=value%10000; b=m/1000; n=m%1000; c=n/100; h=n%100; d=h/10; e=h%10; printf ("%d%d%d%d%d",e,d,c,b,a); } 实验二: 1.一个成年人的身高与其父母的身高密切相关,根据以下人体标准身高预测公式计算自己或某个同学的身高,并跟实际身高比较,给出结论是否符合该公式(误

差在3厘米范围内即视为相符)。 男性身高=(父亲身高+母亲身高)×1.08÷2(厘米) 女性身高=(父亲身高×0.923+母亲身高)÷2(厘米) 2.从键盘上输入税前收入,根据以下公式及规则,计算个人所得税税额并输出。应纳个人所得税税额=(税前收入—起征点额度)*适用税率—速算扣除数 其中,起征点额度是3500元,其他如下: 应纳税所得额税率速算扣除数 不超过1500元的部分 3% 0 超过1500元至4500元的部分 10% 105 超过4500元至9000元的部分 20% 555 超过9000元至35000元的部分 25% 1005 超过35000元至55000元的部分 30% 2755 超过55000元至80000元的部分 35% 5505 超过80000的部分 45% 13505 如:某人月收入5000元,则应纳个人所得税税额为(5000-3500)* 10% - 105 = 45元。 #include #include main() { float A,a,H,h,b; printf("父亲身高(厘米)\n"); scanf("%f",&A); printf("母亲身高(厘米)\n"); scanf("%f",&a); printf("孩子实际身高(厘米)\n"); scanf("%f",&H); printf("请选择孩子性别:女=0,男=1\n"); scanf("%f",&b); if(b) h=(A+a)*1.08/2; else h=(A*0.923+a)/2; if(fabs(H-h)<=3) printf("实际身高符合该公式\n"); else

C语言习题级参考答案

测试题11 1.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(B)。 A、char s[10];strcpy(s,"abcdefg"); B、char s[10];s="abcdefg"; C、char s[10]="abcdefg"; D、char t[]="abcdefg",*s=t 2.下列语句的输出结果是(B)。 printf("%d\n",(int)(2.5+3.0)/3); A、2 B、1 C、有语法错误不能通过编译 D、0 3.以下程序段的输出结果是 A main() { char ch1, ch2; ch1 = …A? + …5? - …3?; ch2 = …A? + …5? - …3?; printf(“%d,%c\n”, ch1,ch2); } A、67, C B、B,C C、不确定的值 D、C,D 4.以下程序段的输出结果为(B)。 char c[]="abc"; int i=0; do ;while(c[i++]!='\0');printf("%d",i-1); A、abc B、3 C、ab D、2 5.相同结构体类型的变量之间,可以(C)。 A、比较大小 B、地址相同 C、赋值 D、相加 6. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为(B)的可执行文件 A、.obj B、.exe C、.c

D、.bas 7.以下程序的输出结果是 C main() { char s[] = “ABCD”, *p; for(p = s; p < s + 4; p++) printf(“%s\n”, p); } A、 B、 C、 D、 8.当调用函数时,实参是一个数组名,则向函数传送的是(B)。 A、数组每一个元素的地址 B、数组的首地址 C、数组每个元素中的值 D、数组的长度 9.如果int a=2,b=3,c=0,下列描述正确的是(D) A、a>b!=c和a>(b!=c)的执行顺序是一样的 B、a&&b>c的结果为假 C、a||(b=c)执行后b的值为0 D、!a!=(b!=c)表达式的值为1 10.当调用函数时,实参是一个数组名,则向函数传送的是(B)。 A、数组每个元素中的值 B、数组的首地址 C、数组的长度

C语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #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、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #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) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

C语言上机作业试题5套含答案

第一次上机作业(2014): 要求: ?独立完成,上机调试通过后上交 ?作业提交邮箱: ?邮件主题命名:班级学号姓名(第1次作业), 例如:电1301班2王鹏(第1次作业) ?以附件形式将每次作业的所有程序源程序压缩打包后提交,压缩文件命名格式同上。 ?程序必须采用缩进格式 1.大写字母转换成小写字母 从键盘输入一个大写英文字母,输出相应的小写字母。 例:输入G 输出g 2.求平方根 输入一个实数x,计算并输出其平方根(保留1 位小数)。 例:输入17 输出The square root of 17.0 is 4.1 3.温度转换 设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32) a)输入华氏温度(实型) b)输出的摄氏温度结果保留两位小数 例:Please input Fahrenheit temperature: 76.8 The corresponding Celsius temperature is 24.89 4. 计算旅途时间 输入二个整数time1 和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 (输入的有效的时间范围是0000 到2359,不需要考虑出发时间晚于到达时间的情况。) 例:输入712 1411 (出发时间是7:12,到达时间是14:11) 输出The train journey time is 6 hours 59 minutes. 5. 数字加密 输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。 例:输入1257 输出The encrypted number is 4601 思考题:你能否编程找出谁做的好事? 有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 ?A说:不是我。 ?B说:是C。 ?C说:是D。 ?D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。 第二次上机作业(2014): 要求: ?独立完成,程序必须采用缩进格式,上机调试通过后上交

C语言习题全集+答案

第一单元程序设计和C语言 一、选择题 1.C语言的基本构成单位是:。 A. 函数 B. 函数和过程 C. 超文本过程 D. 子程序 2.一个C语言程序总是从开始执行。 A. 主过程 B. 主函数 C. 子程序 D.主程序 3.C语言的程序一行写不下时,可以。 A. 用逗号换行 B. 用分号换行 C. 在任意一空格处换行 D. 用回车符换行 4.以下叙述不正确的是:。 A. 在C程序中,语句之间必须要用分号";"分隔 B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数 C. 在C程序中,无论是整数还是实数都能正确无误地表示 D. 在C程序中,%是只能用于整数运算的运算符 5.以下不正确的C语言标识符是。 A. ABC B. abc C. a_bc D. 6.下列字符串是标识符的是:。 A. _HJ B. 9_student C. long D. LINE 1 7.以下说法中正确的是:。 A. C语言程序总是从第一个定义的函数开始执行 B. 在C语言程序中,要调用的函数必须放在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 8.不合法的常量是:。 A. ‘\2’ B. " " C. ‘3’ D. ‘\483’ 9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:。 int k,a,b; unsigned long w=5; double x=; A. x%(-3) B. w+=-2 C. k=(a=2,b=3,a+b) D. a+=a=+(b=4)*(a=3) 10.在C语言中,字符型数据在内存中以形式存放。 A. 原码 B. BCD码 C. 反码 D. ASCII码 11.若有定义:int a=7; float x=; y=;

扬州大学C语言上机作业1-9整理

答案仅供参考 实验一 4.设计main函数实现从键盘上输入两个整型变量a、b的值,交换它们的值并输出。#include void main() { int a,b,c; printf("enter first integer : "); scanf("%d",&a); printf("enter second integer : "); scanf("%d",&b); c=a; a=b; b=c; printf("%d,%d\n",a,b); getch(); } 5.设计main函数实现从键盘上输入两个整型变量a、b的值,并将b的值加入到a中,输出a的值。 #include void main() { int a,b,c; printf("enter first integer : "); scanf("%d",&a); printf("enter second integer : "); scanf("%d",&b); c=a+b; a=c; printf("a=%d,b=%d\n",a,b); getch(); } 6.从键盘输入整数x的值,根据公式y=x3+3x2+x-10求y的值,输出x和y的值。 #include void main() { int x,y; printf("enter first integer : "); scanf("%d",&x); y=x*x*x+3*x*x+x-10;

printf("x=%d,y=%d\n",x,y); getch(); } 实验二 1.编写程序,从键盘上输入一个整数(例如560)表示分钟,将其换算成用小时和分钟表示,然后输出至屏幕。 #include void main() { int a,b,hour,min; printf("enter first integer : "); scanf("%d",&a); b=60; hour=a/b; min=a%b; printf("hour=%d,min=%d\n",hour,min); getch(); } 2.编写程序,输入两个整数(例如1500和350),求出它们的商和余数并进行输出。 #include void main() { int a,b,c,d; a=1500,b=350; c=a/b; d=a%b; printf("%d,%d",c,d); getch(); } 3.编写程序,读入3个整数给分别变量a,b,c,然后将a,b,c的值输出到屏幕,再交换它们中的数值,把a中原来的值给b,把b中原来的值赋给c,把c中原来的值赋给a,然后再次输出a,b,c的值到屏幕。 #include void main() { int a,b,c,d; printf("enter first integer : "); scanf("%d",&a);

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言期末上机考试题及答案

C语言上机考试题—01 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++ ) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判 断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年 \n"); else printf("不是闰 年\n"); } C语言上机考试题—02 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i #include main() { char str[81]; int i,j=0,w=1,s=0; printf("请输入一串字符: \n"); gets(str); for(i=0;i

C语言习题及参考答案

C语言习题集 习题一 一.填空题 1.C程序是由(函数)构成的,一个C程序中至少包含(main函数)。因此,( 函数) 是C程序的基本单位。 2.C程序注释是由( /*) 和( */ ) 所界定的文字信息组成的。3.函数体一般包括( 变量声明) 和( 语句) 。 二.判断题 1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。【错】 2.main函数必须写在一个C程序的最前面。【错】 3.一个C程序可以包含若干的函数。【对】 4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【对】 5.C程序的注释只能是一行。【错】 6.C程序的注释不能是中文文字信息。【错】 8.可以使用Visual C++ 6.来编译和连接一个C程序。【对】 9.可以使用Visual C++ 6.来运行一个C程序。【对】 10.可以使用Visual C++ 6.来实时调试(即动态调试)一个C程序。【对】三.简答题 1.写出一个C程序的基本结构。 2.简要叙述使用Visual C++ 6.0编译和运行一个程序的步骤。 四.编程题 1.提高题:参照课本例1.1,试编写一个C程序,输出如下信息。(提示:使用键盘上的一些符号)。 2.提高题:试编写一个C程序,输出如下信息。 ********************** *** @ @ *** *** @ *** ********************** 试试看,可以输出其他组合图案吗?

习题二 一.选择题 1、合法的字符常量是(ACD)。 A)…\t?B) “A” C)…a?D)?\x32? 2、合法的字符常量是( D) 。 A)…\084?B) …\84? C)…ab?D)?\x43? 3、(B)是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 4、在以下各组标识符中,合法的标识符是((4))。 (1)A)B01 B)table_1 C)0_t D)k% (2)A)Fast_ B)void C)pbl D) (3)A)xy_ B)longdouble C)*p D)CHAR ( 4 ) A) sj B) Int C)_xy D)w_y23 5、属于合法的C语言长整型常量的是(BD)。 A)5876273 B)0L C)2E10 D)(long)5876273 6、下面选项中,不是合法整型常量的是(B )。 A)160 B)-0xcdg C)-01 D)-0x48a 7、判断int x = 0xaffbc;x的结果是(D)。 A)赋值非法B)溢出C)为affb D)为affbc 8、下面选项中,均是合法浮点数的是(B)。 A)+1e+1 B)-.60 C)123e D)-e3 A)5e-9.4 B)12e-4 C)1.2e-.4 D).8e-4 A)03e2 B)-8e5 C)+2e-1 D)5.e-0 9、在C语言中,要求参加运算的数必须时整数的运算符是(C)。 A)/ B)* C)% D) = 10、在C语言中,字符型数据在内存中以(D)形式存放。 A)原码B)BCD码C)反码D)ASCII码 11、下列语句中,符合语法的赋值语句是(C)。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=(7+b,b++,a+7);D)a=7+b,c=a+7; 12、是非法的C语言转义字符(B )。 A)…\b?B)…\0xf? C)…\037? D)… \?? 13、对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,( B )是正确的。A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 14、与代数式(x*y)/(u*v) 不等价的C语言表达式是(A )。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 15、在C语言中,数字029是一个(D)。

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

c语言习题答案

实验一 (1)编程求37+29的值,实习VC环境。 #include void main() { int a,b,sum; a=37; b=29; sum=a+b; printf("sum=%d",sum); } (2)从键盘输入三个整数,求出最大数并输出。 #include void main() { int a,b,c,y; int max(int x,int y); printf("input a,b,and c:"); scanf("%d,%d,%d",&a,&b,&c); y=max(a,b); y=max(y,c); printf("\nmax=%d\n",y); } int max(int x,int y) { int z; if(x>y) z=x; else z=y; return(z); } (3)通过上机实践,运行下列程序并分析输出结果。 A 程序代码 #include void main() { char ch='a'; printf("%c对应的ASCII码是:%d\n",ch,ch); } 程序输出结果:a对应的ASC||码是:97

B 程序代码 #include void main() { int a=168; float b=123.456; float x=35.567,y; printf("a=%5d\n",a); printf("a=%-5d\n",a); printf("b=%6.2f\n",b); printf("b=%e\n",b); y=(int)(x*100+0.5)/100.0; printf("x=f,y=%f\n",x,y); } 程序输出结果: a=168 a=168 b=123.46b=1.234560e+002 x=f,y=35.567001 C程序代码 #include void main() { int a=168; printf("十进制数%d对应的八进制数是%o\n",a,a); printf("十进制数%d对应的十六进制数是%x\n",a,a); } 程序输出结果: 十进制数168对应的八进制数是250 十进制数168对应的十六进制数是a8

C语言函数题库及答案

C语言函数题库及答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

第六部分函数 一、单项选择题 1.C语言中的函数返回值的类型是由(D)决定 A.return语句中的表达式B.调用函数的主调函数 C.调用函数时临时D.定义函数时所指定的函数类型 2.下面不正确的描述是(B)。 A.调用函数时,实参可以是表达式 B.调用函数时,实参和形参可以共用内存单元 C.调用函数时,将形参分配内存单元 D.调用函数时,实参与形参的类型必须一致 3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是 (D) A.地址传递B.值传递 C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式 4.下面的函数调用语句中含有(A)个实参 inta,b,c; intsum(intx1,intx2); …… total=sum((a,b),c); A.2B.3C.4 D.5 5.在C语言中(C) A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义和调用均不可以嵌套 C.函数的定义不可以嵌套,但是函数的调用可以嵌套 D.函数的定义和调用均可以嵌套 6.关于C语言中的return语句正确的是(C) A.只能在主函数中出现 B.在每个函数中都必须出现 C.可以在一个函数中出现多次 D.只能在除主函数之外的函数中出现 7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D) (floatx[],intn) (float*x,intn) (floatx[10],intn) (floatx,intn) 8.在C语言中,函数的数据类型是指(A) A.函数返回值的数据类型 B.函数形参的数据类型 C.调用该函数时的实参的数据类型 D.任意指定的数据类型 9.已知如下定义的函数: fun1(a) {printf("\n%d",a); } 则该函数的数据类型是(C)

大连理工c语言第五次上机作业参考答案

第五次上机作业:(请用指针实现) 1.数据移位 有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m 个数变成最前面的m个数,如图所示。编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数和输出调整后的n个数。 SAMPLE OUTPUT Input n(n<=10):10 Input 10 integers:1 2 3 4 5 6 7 8 9 10 Output the original:1 2 3 4 5 6 7 8 9 10 Input m(m<=10):4 Output the shifted:7 8 9 10 1 2 3 4 5 6 #include #define N 10 void shift(int a[ ],int n,int m); void main( ) { int i,n,m; int a[N]; printf("Input n(n<=10):"); scanf("%d",&n); printf("Input %d integers:\n",n); for(i=0;i=0;j--) a[j+1]=a[j]; a[0]=t; } } n

C语言课后答案

习题一 一、简答题 1.顺序结构、选择(分支)结构和循环结构。 2. (1)

(2)

3.编辑、编译、连接和运行 二、填空题 1. Ctrl+F9;Alt+F5;F2。 2. main(主) 3. main(主) 4. 任意 5. /* */ 不 6. ; 7.。 程序: include studio.h main{} /* this program prints the number of weeks in a year. /* ( int s s:=52; print(There are s weeks in a year"); 正确的为: #include main() /* this program prints the number of weeks in a year. */ { int s; s=52; printf("There are s weeks in a year"); }

习题二 一、选择题 1、C 2、B,D,F,G 3、C 4、A 5、C 6、B 二、填空题 1、声明;使用。 2、整型、浮点型(实型)、字符型。 3、hat_1,cat1,all, Dollar, piece_f, SIN, _ , FALSE. 4、'A'(字符),005(整型),3e0(整型),'\\'(字符),'\05'(字符), 1.2e+5(整型),0xf12(整型)。 5、(1)6+(4+5)*(4+5)/(2+3) (2)sin(a+b)*ain(a+b)/ (4*2)/(3*2)+2 三、读程题 1.若x为float型,其原值为5,a=2,b=4.7。写出下列表达式运算后x的值。 (1)x=(int)(b-a)%3*a/4-a (2)x=(x=b+1)+(int)(b)%10/2.0 (3)x+=x (4)x-=x (5)x*=x+x (6)x/=x+x (7)x+=x-=x*=x (8)x%=x (9)x=3*4,5*6 答案:(1)-1,(2)7.7,(3)10,(4)0,(5)50,(6)0.5,(7)0,(8)非法,(9)12。 2.写出下面程序的运行结果。 #include void main() { int a=2; printf("abcdefghijk\n"); printf("lmnop/n"); printf("I am a /n beginner of C !"); printf("I am a \n beginner of C !"); printf("%d + %d = %d",a,a,a); } 答案: abcdefghijk

历年C语言考试题库及答案

C语言理论上机考试选择题部分(共200题,仅针对11级定向专业) 1、下面程序的输出是___D______ #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、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是________D____. A) true B) 非零值 C) 0 D) 1 5、C语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC码 D) ASCII码 7、C语言程序的基本单位是_____C______.A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句a+=a-=a*a后,a的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include<> void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include<> void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include<> void main() {int x=10,y=3; printf("%d\n",y=x/y); }

c语言上机考试训练题库及答案

上机考试习题集 1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。 #include "stdio.h" void main() { int score[5][3], i,j; float sum[5],average[5]; printf("请分别输入三个学生的成绩:\n"); for(i=0;i<5;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0; sum[i]+=score[i][j]; average[i]=sum[i]/5; } } for(i=0;i<5;i++) printf("第%d个学生的总分为:%f,平均成绩为:%f\n",i+1,sum[i],average[i]); } 2 、编写程序,提示用户从键盘输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后在显示器上输出此数,以便验证处理是否正确。 #include #include double rounding(double x,int n); void main() { double x,x1; int n; printf("请输入一个浮点数:\n"); scanf("%lf",&x); printf("请输入给定的小数位:\n"); scanf("%d",&n); x1=rounding(x,n); printf("圆整后的数为:\n%.*lf\n",n,x1); } double rounding(double x,int n)

相关文档
最新文档