文档库 最新最全的文档下载
当前位置:文档库 › 精华版c语言上机答案

精华版c语言上机答案

精华版c语言上机答案
精华版c语言上机答案

二级C语言上机试题汇编100套

第01套:

解题思路:

第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。

第二处:判断是否是奇数,所以应填:0。

第三处:最后通过形参n来返回新数x,所以应填:x。*******************

解题思路:

第一处:条件语句书写格式错误,应改为:if (n==0)。第二处:语句后缺少分号。请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

解题思路:

本题是将一个数字字符串转换为一个整数。

参考答案:

#include

#include long fun ( char *p) {

/* 以下代码仅供参考 */ int i, len, t; /* len为串长,t为正负标识 */ long x=0;

len=strlen(p);

if(p[0]=='-')

{ t=-1; len--; p++; } else t=1;

/* 以下完成数字字符串转换为一个数字 */

while(*p) x = x*10-48+(*p++);

return x*t;

}

main() /* 主函数 */ { char s[6];

long n;

printf("Enter a

string:\n") ;

gets(s);

n = fun(s);

printf("%ld\n",n);

NONO ( );

}

NONO ( )

{/* 本函数用于打开文件,

输入数据,调用函数,输出

数据,关闭文件。 */

FILE *fp, *wf ;

int i ;

char s[20] ;

long n ;

fp =

fopen("c:\\test\\in.dat

","r") ;

wf =

fopen("c:\\test\\out.da

t","w") ;

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

{

fscanf(fp, "%s", s) ;

n = fun(s);

fprintf(wf, "%ld\n",

n) ;

}

fclose(fp) ;

fclose(wf) ;

}

注意:由于NONO( )这个函

数是改卷人用的,与考生没

有什么关系,故下面从第2

套试题开始均省略NONO( )

※※※※※※※※※

第02套:

解题思路:

本题是考察先把给定的数

据写入到文本文件中,再从

该文件读出并显示在屏幕

上。

第一处:定义文本文件类型

变量,所以应填:FILE *。

第二处:判断文件是否结

束,所以应填:fp。

第三处:显示读出的字符,

所以应填:ch。

*******************解题

思路:

第一处: 要求是取出原字

符串中所有数字字符组成

一个新的字符串,程序中是

使用变量j 来控制新字符

串的位置,所以应改为:

s[j++]=s[i];。

第二处: 置新字符串的结

束符,所以应改为:

s[j]='\0';.

*******************

请编写函数fun, 函数的功

能是: 将M行N列的二维数

组中的字符数据, 按列的

顺序依次放到一个字符串

中。

参考答案:

void fun(char s[][N],

char *b)

{

int i,j,n=0;

for(i=0; i < N;i++) /* 请

填写相应语句完成其功能

*/

{

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

{

b[n] = s[j][i] ;

n = i * M + j + 1;

}

}

b[n]='\0';

}

第03套:

解题思路:

本题是考察如何从文件中

读出数据,再把结构中的数

据写入文件中。

第一处:从指定的文件中读

出数据,所以应填:

filename。

第二处:读取文件fp的最

后一条记录,所以应填:fp。

第三处:再把读出的记录,

写入文件fp指定的位置

上,所以应填:fp。

*******************

解题思路:

第一处: 指向刚分配的结

构指针,所以应改为:

p=(NODE

*)malloc(sizeof(NODE));

第二处: 在动态分配内存

的下一行语句是,使用临时

结构指针变量h保存p指针

的初始位置,最后返回不能

使用p,是因为p的位置已

经发生了变化,所以应改为

返回h。

*******************

请编写函数fun, 函数的功

能是:统计一行字符串中单

词的个数,作为函数值返

回。一行字符串在主函数中

输入, 规定所有单词由小

写字母组成,单词之间由若

干个空格隔开, 一行的开

始没有空格。

参考答案:

int fun( char *s)

{

int k = 1 ;

while(*s) {

if(*s == ' ') k++ ;

s++ ;

}

return k ;

}

第04套:

解题思路:

本题是考察把结构中的数据写入文件。

第一处:建立文件的类型,考虑到是把结构中的数据(结构中的数据包含不打印的字符)从文件中读出,所以应填:"rb"。

第二处:判断当前学号是否大于刚读出的学号进行相比,如果大于,则进行交换,所以应填:>。

第三处:把已排序的结构数据,重新写入文件,所以应填:fwrite。

*******************

解题思路:

第一处: 指针p应指向s,所以应改为:p=s;。

第二处: 死循环,当do while循环执行一次,临时变量p应该指向字符串的下一位置,所以应改为:while(*p++);。

*******************

请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0] 中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中, 其余依此类推, 把100岁 (含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。

解题思路:

参考答案:

void fun( int *a, int *b) {

int i, j ; for(i = 0 ; i < M ; i++)

b[i] = 0 ;

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

{

j = a[i] / 10 ;

if(j > 10) b[M - 1]++ ;

else b[j]++ ;

}

}

double rnd()

{ static

t=29,c=217,m=1024,r=0;

r=(r*t+c)%m;

return((double)r/m);

}

第05套:

解题思路:

本题是考察先把给定的数

据写入到文本文件中,再从

该文件读出并转换成相应

的整数、浮点数显示在屏幕

上。

第一处:定义文本文件类型

变量,所以应填:FILE *。

第二处:关闭刚写入的文

件,所以应填:fclose(fp)。

第三处:从文件中读出数

据,所以应填:fp。

*******************

解题思路:

第一处: 语句最后缺少分

号。

第二处: 应该使用方括号,

而不是圆括号。

像此类,使用编译,即可发

现。

*******************

请编写函数fun, 函数的功

能是: 删去一维数组中所

有相同的数, 使之只剩一

个。数组中的数已按由小到

大的顺序排列,函数返回删

除后数组中数据的个数。

参考答案:

int fun(int a[], int n)

{

int i, j = 1, k = a[0] ;

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

if(k != a[i]) {

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

k = a[i] ;

}

a[j] = 0 ;

return j ;

}

第06套:

解题思路:

本题是根据给定的公式来

计算函数的值。

第一处:程序中使用双精度

double类型进行计算,所

以函数的返回值类型也为

double,所以应填:double。

第二处:当i等于1时,则

返回f1函数的值,所以应

填:f1。

第三处:如果i不等于1,

则返回f2函数的值,所以

应填:f2。

*******************

解题思路:

第一处: 试题要求返回字

符串的首地址,所以应改

为:char *fun(char

*s,char *t)

第二处: 取字符串指针ss

的下一个位置,所以应改

为:ss++;。

第三处:取字符串指针tt

的下一个位置,所以应改

为:tt++;。

*******************

请编写函数fun,函数的功

能是: 移动字符串中的内

容,移动的规则如下: 把第

1到第m个字符, 平移到字

符串的最后, 把第m+1到

最后的字符移到字符串的

前部。

参考答案:

void fun1(char *w) /* 本

函数的功能是将字符串中

字符循环左移一个位置 */

{

int i; char t;

t=w[0];

for(i=0;i

++)

w[i]=w[i+1];

w[strlen(w)-1]=t;

}

void fun(char *w, int m)

/* 可调用fun1函数左移

字符 */

{

int i;

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

fun1(w);

}

第07套:

解题思路:

本题是利用结构体变量存

储了一名学生的信息。

第一处:tt变量在函数体

fun已经使用,所以应填:

tt。

第二处:利用循环分别输出

学生的成绩数据,所以应

填:tt.score[i]。

第三处:函数的调用,所以

应填:std。

*******************解题

思路:

第一处:外循环每循环一

次,把当前位置i赋值给m,

所以应改为:m=i;。

第二处:通过内循环来找出

最大的一个数的位置k,所

以应改为:if(a[k]>a[m]) m=k;。

*******************

请编写一个函数 unsigned fun ( unsigned w ),w 是一个大于10的无符号整数,若 w 是 n (n ≥ 2)位的整数,函数求出w的低n-1位的数作为函数值返回。

参考答案:

unsigned fun ( unsigned w )

{

if(w>10000) w %= 10000 ; else if(w>1000) w %= 1000 ;

else if(w>100) w %= 100 ; else if(w>10) w %=10 ; return w ;

}

第08套:

解题思路:

本题是利用结构体存储学生记录并由实参ss返回。

第一处:实参ss是一个结构型指针变量,所以应填:STU。

第二处:该学生的各科成绩都乘以一个系数a,所以应填:score[i]。

第三处:函数的调用,由于函数定义时使用的指针结构型变量,所以应填:&std。*******************解题思路:

第一处:条件判断缺少圆括号。

第二处:判断相等的符号是==。

*******************

程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int

a[][N], int n),函数的功

能是:使数组左下三角元素

中的值乘以n 。

参考答案:

int fun ( int a[][N], int

n )

{

int i, j;

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

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

a[i][j] *= n ;

}

第09套:

解题思路:

本题是考察使用链表方法,

使用两重while循环语句,

对链表的结点数据进行升

序排列。

第一处:由于外循环变量使

用p指针,内循环变量使用

q指针,所以q指向必须指

向p的next 指针,因此应

填写:p.next。

第二处:判断内循环q指针

是否结束,所以应填:q。

第三处:外循环控制变量p

指向自己的next指针,所

以应填:p.next。

*******************

解题思路:

第一处: 使用while循环

来判断字符串指针s是否

结束,所以应改为:

while(*s)。

第二处: 取字符串指针s

的下一个位置,所以应改

为:s++;。

*******************

请编写函数fun, 函数的功

能是: 移动一维数组中的

内容; 若数组中有n个整

数, 要求把下标从0到

p(含p,p小于等于n-1)的

数组元素平移到数组的最

后。

参考答案:

void fun(int *w, int p,

int n)

{

int i, j = 0, b[N] ;

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

b[j++] = w[i] ;

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

b[j++] = w[i] ;

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

w[i]= b[i] ;

}

第10套:

解题思路:

第一处:行列变量row和

colum的值初始化为0。

第二处:两个条件只要有一

个不满足就返回0,所以应

填:||。

第三处:如果矩阵是“幻

方”,则返回1。

*******************

解题思路:

第一处:在除法运算中,如

果除数和被除数都是整数,

所么所除结果也是整数,因

此应改为t-=1./i。

第二处:应是返回公式的

值,函数中公式的值是存放

在临时变量t中,所以应填

return t;。

*******************

请编写一个函数,函数的功

能是删除字符串中的所有

空格。

参考答案:

int fun(char *str)

{

char *p = str ;

int i = 0 ;

while(*p) {

if(*p != ' ') str[i++] =

*p ;

p++ ;

}

str[i] = 0 ;

}

第11套:

解题思路:

本题是考察使用链表方法,

对链表的结点数据进行降

序排列。

第一处:使用结构指针p,

来控制链表的结束,p必须

指向h结构指针的next指

针,来定位p 的初始位置。

所以应填写:h->next。

第二处:判断p指针是否结

束,所以应填写:0。

第三处:q指向原q的next

指针,所以应填:r。

*******************

解题思路:

第一处: 程序中子串是由

变量t来实现的,再根据下

面while循环体中语句可

知,所以应改为:r=t;。

第二处: 是判断相等的条

件,所以应改为:

if(*r==0)。

*******************

请编写函数fun, 函数的功

能是: 将放在字符串数组

中的M个字符串(每串的长

度不超过N), 按顺序合并

组成一个新的字符串。函数

fun中给出的语句仅供参

考。

参考答案:

#include

#define M 3

#define N 20

void fun(char a[M][N],

char *b)

{

/* 以下代码仅供参考 */ int i; *b=0;

for(i = 0 ; i < M ; i++) strcat(b, a[i]) ;

}

第12套:

解题思路:

本题是考察使用链表方法,对链表的结点数据进行降序排列,最后通过函数进行返回。

第一处:由于链表中的所有结果要求通过函数进行返回,所以应填:NODE *。

第二处:中间变量r用来保存q的next指针,所以应填:next。

第三处:q指向原q的next 指针,所以应填:r。

*******************

解题思路:

第一处: 根据试题分析,两个条件之间应该是“或”的关系,而不是“与”的关系,所以应改为:if(i%2 || s[i]%2==0)。

第二处: 当字符串处理结束后,应该补上字符串的结束符,那么字符串t的位置是由i来控制,所以应改为:t[j]=0;。

*******************

请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维数组中。函数fun中给出的语句仅供参考。

参考答案:

void fun(int (*s)[10], int *b, int *n, int mm, int nn)

{

/* 以下代码仅供参考 */

int i,j,np=0; /* np用作

b数组下标 */

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

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

{

b[np] = s[j][i] ;

np = i * mm + j + 1;

}

*n=np;

}

第13套:

解题思路:

本题是考察使用链表方法,

对链表的结点数据进行升

序排列。

第一处:使用结构指针p,

来控制链表的结束,p必须

指向h结构指针的next指

针,来定位p 的初始位置。

所以应填写:h->next。

第二处:使用while循环,

对链表中结点的数据进行

排序,q必须指向p结构指

针的next指针。所以应填

写:p->next。

第三处:如果当前结点中的

数据大于(大于等于)循环

中的结点数据,那么进行交

换,所以应填写:>(或>=)。

*******************

解题思路:

程序中是使用while循环

语句和结合结构指针p来

找到数据域中的最大值。

第一处: p指向形参结构指

针h的next指针,所以应

改为:p=h->next;。

第二处: p指向自己的下一

个结点,所以应改为:

p=p->next,

*******************

请编写函数fun, 函数的功

能是: 将M行N列的二维数

组中的数据,按行的顺序依

次放到一维数组中, 一维

数组中数据的个数存放在

形参n所指的存储单元中。

参考答案:

void fun(int (*s)[10],

int *b, int *n, int mm,

int nn)

{

int i, j, k ;

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

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

{

k = i * nn + j ;

b[k] = s[i][j] ;

}

*n = mm * nn ;

}

main()

{ int w[10][10] =

{{33,33,33,33},{44,44,4

4,44},{55,55,55,55}},i,

j ;

int a[100] = {0}, n = 0 ;

printf("The

matrix:\n") ;

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

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

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

printf("\n") ;

}

fun(w, a, &n, 3, 4) ;

printf("The A

array:\n") ;

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

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

tf("\n\n") ;

NONO() ;

}

第14套:

解题思路:

本题主要是考察用函数指

针指向要调用的函数。程序

中共有三处要填上适当的

内容,使程序能运行出正确

的结果。

第一处:定义函数指针的类

型,所以应填:double。

第二处:使f指向函数f1,

所以应填:f1。

第三处:使f指向函数f2,

所以应填:f2。

*******************

解题思路:

本题是考察如何使用单向

链表把数据域的值按条件

进行累加。

第一处:试题要求不计算头

结点,所以应改为:

p=h->next;

第二处:指向p的下一个结

点来实现循环,所以应改

为:p=p->next;

*******************请编

写函数fun, 函数的功能是:

判断字符串是否为回文?若

是, 函数返回1,主函数中

输出: YES, 否则返回0,

主函数中输出NO。回文是

指顺读和倒读都一样的字

符串。

参考答案:

int fun(char *str)

{

int i, j = strlen(str) ;

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

if(str[i] != str[j - i -

1]) return 0 ;

return 1 ;

}

main()

{ char s[N] ;

printf("Enter a string:

") ; gets(s) ;

printf("\n\n") ; puts(s) ;

if(fun(s)) printf(" YES\n") ;

else printf(" NO\n") ; NONO() ;

}

第15套:

解题思路:

本题是考察如何从指定文件中找出指定学号的学生数据,并进行适当的修改,修改后重新写回到文件中该学生的数据上,即用该学生的新数据覆盖原数据。

第一处:判断读文件是否结束,所以应填:fp。

第二处:从读出的数据中判断是否是指定的学号,其中学号是由形参sno来传递的,所以应填:==。

第三处:从已打开文件fp 中重新定位当前读出的结构位置,所以应填:fp。

*******************

解题思路:

第一处: 函数应该使用圆括号,所以应改为:n=strlen(aa) ;。

第二处: 变量c没有定义,但后面使用的是ch变量,所以应改为:ch=aa[i];。*******************

N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。

参考答案:

double fun( STREC *h ) { double max=h->s;

STREC *p;

p=h->next;

while(p)

{ if(p->s>max )

max=p->s;

p=p->next;

}

return max;

}

STREC * creat( double *s)

{ STREC *h,*p,*q; int

i=0;

h=p=(STREC*)malloc(size

of(STREC));p->s=0;

while(i

{ q=(STREC*)malloc(size

of(STREC));

q->s=s[i]; i++;

p->next=q; p=q;

}

p->next=0;

return h;

}

outlist( STREC *h)

{ STREC *p;

p=h->next;

printf("head");

do

{ printf("->%2.0f",p->s

);p=p->next;}

while(p!=0);

printf("\n\n");

}

第16套:

解题思路:

第一处:利用for循环语句

取当前字符串的长度,所以

应填:ss[i]。

第二处:在字符串的右边填

字符*,其开始位置是n+j,

其中n是该字符串本身的

长度,j是循环控制变量,

所以应填:n+j。

第三处:字符串处理结束应

置字符串结束符,其位置是

n+j+1,所以应填:1。

*******************

解题思路:

第一处:关键字int错写成

INT。

第二处:该行括号没有配

对,所以只要加上一个右括

号即可。

*******************

请编写函数fun, 对长度为

7个字符的字符串, 除首、

尾字符外,将其余5个字

符按ASCII码降序排列。

参考答案:

int fun(char *s,int num)

{

char ch ;

int i, j ;

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

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

{

if(*(s + i) < *(s + j)) {

ch = *(s + j) ;

*(s + j) = *(s +i) ;

*(s + i) = ch ;

}

}

}

第17套:

解题思路:

本题是对结构体数组中的

姓名按升序进行排列。

第一处:t是一个临时变量,

主要是存放学生数据的结

构变量,所以应填:struct

student。

第二处:利用两重for循环

进行排序操作,排序的终止

条件应该是总人数减1,所

以应填: n-1。

第三处:对姓名进行比较大

小,所以应填:

a[i].name,a[j].name。

*******************

解题思路:

第一处:在语句后缺少分

号,所应改为:q=p+i;。

第二处:保留字while写

错,所应改为:while(q>p)。

*******************

学生的记录由学号和成绩

组成,N名学生的数据已在

主函数中放入结构体数组s

中, 请编写函数fun,它的

功能是:把指定分数范围内

的学生数据放在b所指的

数组中,分数范围内的学生

人数由函数值返回。

参考答案:

int fun( STREC *a,STREC

*b,int l, int h )

{

int i,j = 0 ;

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

if(a[i].s >= l && a[i].s

<= h) b[j++] = a[i] ;

return j ;

}

第18套:

解题思路:

第一处:函数中申请了两个

内存空间,其p是存放字母

字符串,t是存放非字母字

符串,根据条件可知,p依

次存放字母字符串,其位置

由j来控制,所以应填:

s[i]。

第二处:利用for循环再把

t中的内容依次追加到p

中,其中t的长度为k,所

以应填:k。

第三处:字符串处理好后必须添加字符串结束符,所以应填:'\0'。

*******************

解题思路:

第一处:判断w指针所指的值是否是结束符,应改为:while(*w)。

第二处:if错写成If。

*******************

函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

参考答案:

void fun(char *s, char t[])

{

int i, j = 0 ;

for(i = 0 ; i < strlen(s); i++) if(s[i] % 2==0) t[j++] = s[i] ;

t[j] = 0 ;

}

第19套:

解题思路:

本题是利用形参对结构体变量中的值进行修改并通过地址把函数值返回。

第一处:必须定义结构指针返回类型,所以应填:struct student *。

第二处:分别对成绩增加1分,所以应填:a->score[i]。

第三处:返回结构指针a,所以应填:a。

*******************

解题思路:

第一处: 要求返回字符串的首地址,所以应改为:char *fun(char

(*sq)[M])。

第二处: 返回一个由变量

sp控制的字符串指针,所

以应改为:return sp;。

*******************

函数fun的功能是:将a、

b中的两个两位正整数合并

形成一个新的整数放在 c

中。合并的方式是:将a中

的十位和个位数依次放在

变量c的百位和个位上,b

中的十位和个位数依次放

在变量c的十位和千位上。

参考答案:

void fun(int a, int b,

long *c)

{

*c =

(b%10)*1000+(a/10)*100+

(b/10)*10+a%10;

}

第20套:

解题思路:

第一处:求出N个数的平均

值,所以应填:N。

第二处:利用for循环语

句,把数组x中小于平均值

的数,依次存放到数组y

中,其中位置由变量j来控

制,所以应填:j++。

第三处:i是while循环体

的控制变量,每做一次循环

均要加1。

*******************

解题思路:

第一处:num初始化错误,

应为:num[k]=0;。

第二处:由于s是指针型变

量,所以应改为:

switch(*s)。

*******************

请编写函数 fun,函数的功

能是求出二维数组周边元

素之和,作为函数值返回。

二维数组中的值在主函数

中赋予。

参考答案:

int fun ( int a[M][N] )

{

int tot = 0, i, j ;

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

{

tot += a[0][i] ;

tot += a[M-1][i] ;

}

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

{

tot += a[i][0] ;

tot += a[i][N-1] ;

}

return tot ;

}

第21套:

解题思路:

第一处:计算N个数的平均

值,所以应填:s/N。

第二处:利用for循环语

句,把数组x中大于平均值

的数,依次存放到数组y

中,同时把数组x上的该数

置为-1,其中位置由变量j

来控制,所以应填:j++。

第三处:再利用循环把不是

-1的数,依次仍存放到数

组y中,所以应填:-1。

******************** 解

题思路:

第一处:包含头文件的标识

错误,在include前漏写了

#。

第二处:由于传入的参数是

字符串,所以应为

upfst(char *p)。

*******************

程序定义了N×N的二维数

组,并在主函数中赋值。请

编写函数fun,函数的功能

是:求出数组周边元素的平

均值并作为函数值返给主

函数中的s。

参考答案:

double fun ( int w[][N] )

{

int i, j, n=0;

double sum=0;

for ( i =0; i

sum+=w[0][i]+w[N-1][i];

n+=2;

}

for ( i =1; i

{

sum

+=w[i][0]+w[i][N-1];

n+=2;

}

return sum/n;

}

第22套:

解题思路:

本题要求所求出的数写入

到指定的文件中保存。程序

中共有三处要填上适当的

内容,使程序能运行出正确

的结果。

第一处:int fprintf(FILE

*stream, const char

*format

[,argument, …]); 因此

本处只能填写文件流的变

量fp。

第二处:由于文件打开写操

作,所以必须要关闭,因此,

只能填写关闭文件的函数

fclose(fp)。

第三处:由于本题要把刚写

入文件中的数据重新显示出来,读方式已经给出,但没有给出文件名,所以本处只能写文件名变量fname 或者直接给出文件名"myfile3.dat"。

*******************

第一处:for循环的终止值应该

第二处:使用临时变量p来保存最小值位置i,所以应改为:p=i;。

*******************

函数fun的功能是: 将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是: 将a数的十位和个位数依次放在c 数的个位和百位上, b数的十位和个位数依次放在c 数的十位和千位上。

参考答案:

void fun(int a, int b, long *c)

{

*c=(b%10)*1000+(a%10)*1 00+(b/10)*10+(a/10); }

第23套:

解题思路:

第一处:把每列的第1值赋值给b[i],所以应填:a[0][i]。

第二处:如果b[i]值小于a[j][i]的值,则把a[j][i]重新赋值给b[i]中,保存最大的值,所以应填:<。

第三处:在主函数中,x是存放矩阵数据,y是存放每列的最大值,所以应填:x,y。

*******************

解题思路:第一处:函数形参定义不正

确,在定义第2个形参时,

也应加上int。由于通过该

函数实现两数交换,在C语

言中,必须交换地址中的

值,所以应定义为int

*x,int *y。

第二处:要交换地址中的值,

不能交换地址,必须指定地

址中的值,因此应改为

t=*x;*x=*y;*y=t;。

*******************

编写函数fun, 函数的功能

是求出小于或等于lim的

所有素数并放在aa数组中,

函数返回所求出的素数的

个数。

参考答案:

int fun(int lim, int

aa[MAX])

{

/* 以下代码仅供参考 */

int i,j,k=0;

/* 其中变量k用于统计素

数个数 */

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

{

/* 以下完成判断aa数组

中小于或等于lim的素数

并统计个数 */

for(j = 2 ; j <= (i/2) ;

j++)

if(i % j == 0) break;

if(j > (i/2)) aa[k++] =

i;

}

return k;

}

第24套:

解题思路:

本题是对结构体变量中的

值进行修改并通过函数值

返回。

第一处:必须定义结构返回

类型,所以应填:struct

student。

第二处:对姓名进行修改,

所以应填:https://www.wendangku.net/doc/ee4285735.html,。

第三处:分别对成绩增加1

分,所以应填:a.score[i]。

*******************

解题思路:

第一处: 条件语句中的小

写p错写成大写P了。

第二处: 删除元素,应该是

后面位置的元素值赋值给

前面的位置上,所以应改

为:

a[i]=a[i+1];。

*******************

学生的记录由学号和成绩

组成,N名学生的数据已在

主函数中放入结构体数组s

中, 请编写函数fun,它的

功能是:把分数最低的学生

数据放在b所指的数组中,

注意:分数最低的学生可能

不止一个,函数返回分数最

低的学生的人数。

参考答案:

int fun( STREC *a, STREC

*b )

{

int i, j = 0, min=a[0].s ;

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

if(min > a[i].s) {

j = 0 ; b[j++] = a[i] ; min

= a[i].s ;

}

else if(min == a[i].s)

b[j++] = a[i] ;

}

return j ;

}

第25套:

解题思路:

本题是要求从给定的人员

数据中找出编号相同的记

录数据。

第一处:从返回值来看,是

返回一个结构型的值,所以

应填:STU。

第二处:判断结构变量中的

编号num是否相等,所以应

填:stu[i].num。

第三处:返回编号相等的记

录值,所以应填:std[i]。

********************

解题思路:

第一处:语句后缺少分号。

第二处:判断r的当前字符

是否是字符串结束符,所以

应改为:if(*r==0)。

*******************参考

答案:

void fun(char *s, char

t[])

{

int i, j = 0 ;

for(i = 0 ; i < strlen(s);

i++) if(s[i] % 2) t[j++]

= s[i] ;

t[j] = 0 ;

}

第26套:

解题思路:

第一处:释放q指针所指的

内存空间,应填q。

第二处:q指针指向p的

next指针,重新完成链接,

应填next。

第三处:两个结点的值不相

同,那么q就指向q的next

指针,应填next。

*******************

解题思路:

第一处:语句后缺少分号。

第二处:保存最小值的位置,所以应改为:p = i;。*******************

请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n 返回这些数的个数

参考答案:

#include

#define M 100

void fun ( int m, int *a , int *n )

{

int i ;

*n=0 ;

for(i=7 ; i<=m; i++)

if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ;

}

第27套:

解题思路:

第一处:根据公式可知,累加和变量s,应置0。

第二处:for循环的终止值应为形参n。

第三处:根据公式以及函数体中t变量内容,所以应填:t*t。

*******************解题思路:

第一处:循环for语句中应有分号。

第二处:if错写成If。

*******************

请编写一个函数fun,它的功能是:根据以下公式求π

的值(要求满足精度0.0005, 即某项小于0.0005时停止迭代):

π 1 1×2 1×2×3 1×2×3×4 1×2×…×n

─ = 1+─+─—+────+──────+……+──

──────

2 3 3×5 3×5×7

3×5×7×9

3×5×…×(2n+1)

程序运行后,如果输入精度

0.0005,则程序输出为

3.14…。

参考答案:

double fun ( double eps)

{

double s=1,t=1./3;

int n=1;

while(t>=eps){ s+=t; n++;

t=t*n/(2.0*n+1); }

return (s*2.0);

}

main( )

{ double x;

printf("Input eps:") ;

scanf("%lf",&x);

printf("\neps = %lf,

PI=%lf\n", x, fun(x));

NONO();

}

第28套:

解题思路:

第一处:在for循环中终止

值要判断字符串是否结束

符,所以应填:s[i]。

第二处:判断是否是数字,

所以应填:'9'。

第三处:字符串中数字字符

出现的次数n,并存放在形

参t所指的变量中,所以应

填:*t=n。

*******************

解题思路:

第一处:由于x是整型指针

变量,所以地址不能赋值给

整型变量,因此必须取x地

址上的值,所以应改为

t=*x;*x=y;。

第二处:已交换后的值存放

在t中,所以返回值应为

return(t);。

*******************请编

写函数fun,它的功能是:

求出 1 到 1000 之间能被

7 或11整除、但不能同时

被 7 和 11 整除的所有整

数并将它们放在a所指的

数组中,通过 n 返回这些

数的个数。

参考答案:

void fun (int *a, int *n)

{

int i ;

*n = 0 ;

for(i = 7 ; i < 1000 ; i++)

if(((i % 7) == 0 || (i %

11) == 0) && (i % 77) !=

0) a[(*n)++] = i ;

}

第29套:

解题思路:

本题是对结构体变量中的

值进行修改并通过函数中

的参数进行返回。

第一处:对学号进行更改,

所以应填:->no。

第二处:对姓名进行更改,

所以应填:->name。

第三处:对函数的调用,所

以应填:&t。

*******************

解题思路:

第一处: 第二个变量定义

的保留字double写错。

第二处: 变量x0错写成xo

了。

*******************

学生的记录由学号和成绩

组成,N名学生的数据已在

主函数中放入结构体数组s

中, 请编写函数fun,它的

功能是:把高于等于平均分

的学生数据放在b所指的

数组中,高于等于平均分的

学生人数通过形参n传回,

平均分通过函数值返回。

参考答案:

double fun( STREC *a,

STREC *b, int *n )

{

double t=0 ;

int i ;

*n = 0 ;

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

t = t + a[i].s ;

t = t / N ;

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

if(a[i].s > t) b[(*n)++]

= a[i] ;

return t ;

}

第30套:

解题思路:

本题是对结构体变量中的

值进行修改。

第一处:要修改的结构体变

量是由形参a来传递的,所

以应填:a。

第二处:对结构体中的成员

name进行替换,所以应填:

https://www.wendangku.net/doc/ee4285735.html,。

第三处:分别输出结构体中

的成绩,所以应填:

score[i]。

*******************解题

思路:

第一处: 新字符串的位置

值是由变量j来控制的,但

程序中字符赋值后没有对j

进行增量的语句,所以应改

为:s[j++]=s[i];。

第二处: 对新字符串添加

字符串结束符,由于程序中

使用变量j对新字符串来控制的,所以应改为:s[j]=0;。

*******************

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

参考答案:

void fun( char *a ) {

/* 以下代码仅供参考 */ char *p,*q;

int n=0;

p=a;

while(*p=='*') /* 统计串头'*'个数n */

{n++; p++;}

q=a;

/* 向前复制字符串,请填写相应的语句完成其功能*/

while(*p) {

*q=*p;

p++;q++;

}

for(;n>0;n--) /* 在串尾补n个'*' */

*q++='*';

*q='\0';

}

第31套:

解题思路:

第一处:取外循环的控制变量,所以应填:t=i。

第二处:内循环的起始变量,应该是i+2,所以应填:i。

第三处:新字符串处理完后应添加字符串结束符,所以应填:'\0'。

******************* 给定程序MODI1.C中函数

fun 的功能是:用下面的公

式求π的近似值,直到最后

一项的绝对值小于指定的

数(参数num )为止:

π 1 1 1

┄┄≈1 - ┄┄ + ┄┄ -

┄┄ + ...

4 3

5 7

解题思路:

第一处:要判断t的最后一

项绝对小于指定的数,由于

t是实数,那么应改为

while(fabs(t)>=num)。

第二处:t是s除以n的值,

而不是取余数,所以应改

t=s/n;。

*******************请编

写一个函数void fun (char

a[],char b[],int n),其

功能是:删除一个字符串中

指定下标的字符。其中, a

指向原字符串, 删除指定

字符后的字符串存放在b

所指的数组中,n中存放指

定的下标。

参考答案:

void fun (char a[], char

b[], int n)

{

strncpy(b, a, n) ;

b[n] = 0 ;

strcat(b, a + n + 1) ;

}

第32套:

解题思路:

本题是根据给定的字符串

数组中删除串长大于某个

值的右边字符串。

第一处:函数的定义,试题

中已用M作为字符串的长

度,所以应填:M。

第二处:利用while循环,

分别对字符串数组中的每

个字符串置字符串结束符,

程序中已经给定了N个字

符串,所以应填:N。

第三处:置字符串结束符,

所以应填:0(或'\0')。

*******************解题

思路:

第一处: 初始化t的值,根

据程序中的计算程序和试

题的要求得出,t应为1。

第二处: 根据公式π/2得

出,所以返回时应原有s的

基础上乘以2作为返回值。

*******************

假定输入的字符串中只包

含字母和*号。请编写函数

fun,它的功能是:使字符

串的前导*号不得多于n个;

若多于n个,则删除多余的

*号; 若少于或等于n个,

则什么也不做,字符串中间

和尾部的*号不删除。

参考答案:

void fun( char *a, int n )

{

/* 以下代码仅供参考 */

int i=0,j,k=0;

while(a[k]=='*') k++; /*

k为统计*字符个数 */

if(k>n)

{

i=n;j=k;

/* 以下完成将下标为k至

串尾的字符前移k-n个位

置 */

for(; a[j] !=0 ; j++)

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

a[i] = 0;

}

}

第33套:

解题思路:

本题要求是把一个文件中

的内容复制到另一个文件

中。程序中共有三处要填上

适当的内容,使程序能运行

出正确的结果。

第一处:要求打开一个读方

式的源文件,因此可以填上

"r"或"r+"。打开读文件操

作的流是fs。

第二处:用while循环来判

断源文件是否已读到文件

结束符,int feof(FILE

*stream),因此,此处只能

填写fs。

第三处:把已经读取的字符

写入目标文件中,打开写文

件操作的流是ft,因此,

此处只能填写ft。

*******************解题

思路:

第一处:判断相等的条件是

==。

第二处:整除的符号是/。

*******************函数

fun的功能是:将两个两位

数的正整数a、b合并形成

一个整数放在c中。

合并的方式是:将a数的十

位和个位数依次放在c数

的十位和千位上,b数的十

位和个位数依次放在c数

的百位和个位上。

参考答案:

void fun(int a, int b,

long *c)

{

*c=(a%10)*1000+(b/10)*1

00+(a/10)*10+(b%10);

}

第34套:

解题思路:

第一处:所有2的倍数的数

从数表中删去,所以应填:a[i]。

第二处:找出下一个不是的a[i],所以应填:a[i]。

第三处:输出素数,只要判断a[i]不是0就是素数,所以应填:0。

*******************解题思路:

第一处:变量y错写成Y。第二处:给变量d进行赋值,所以应改为:d=a-i;。*************

请编写函数fun, 它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

参考答案:

double fun(int n)

{

int i;

double sum=0.0;

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

if(i%5 == 0 || i%9 == 0) /* 被5或9整除 */ sum+=1.0/i;

return sum;

}

第35套:

解题思路:

第一处:建立一个N×N的矩阵,所以应填:[N]。

第二处:j的起始变量值应i。

第三处:也应该填写i+1。*******************解题思路:

第一处:应该取模而不是整除,所以应为:aa[i]=m%k;。第二处:输出aa的位置不正确,所以应为:printf("%d",aa[i-1]);。*******************编写一个函数,从num个字符串

中找出最长的一个字符串,

并通过形参指针max传回

该串地址。(注意: 主函数

中用****作为结束输入的

标志,函数fun中给出的语

句仅供参考。)

参考答案:

fun(char(*a)[81],int

num,char **max)

{

/* 以下代码仅供参考 */

int i,k=0,maxlen; /* k

为a数组中最长串所在元

素的下标,初始为0,maxlen

为其串长 */

maxlen=strlen(a[k]);

for(i=1;i

{

/* 以下完成查找最长串

*/

if(strlen(a[i]) > maxlen)

{

maxlen = strlen(a[i]) ;

k = i ;

}

}

*max=a[k];

}

第36套:

解题思路:

本题是要求统计出带有头

结点的单向链表中结点的

个数。

第一处:对n所指的存储单

元进行初始化,所以应填:

*n。

第二处:指向p的下一个结

点,所以应填:next。

第三处:函数调用,在主函

数中已经给出了head,所

以应填:head。

*******************解题

思路:

第一处:指向空指针错误,

Null应NULL。

第二处:比较指针位置的值

是否相等,所以应改为:

if(*r==*p)。

*******************函数

fun的功能是:将s所指

字符串中除了下标为偶数、

同时ASCII值也为偶数的

字符外,其余的全都删除;

串中剩余字符所形成的一

个新串放在t所指的数组

中。

参考答案:

void fun(char *s, char

t[])

{

int i, j = 0 ;

for(i = 0 ; i < strlen(s) ;

i += 2)

if(s[i] % 2 == 0) t[j++]

= s[i] ;

t[j] = 0 ;

}

第37套:

解题思路:

本题是根据给定的字符串

数组中查找指定的字符串,

如果存在,则显示。

第一处:利用for循环,从

几个字符串中进行查找,程

序中已经给定了N个字符

串,所以应填:N。

第二处:查找子串,子串由

形参substr传递,所以应

填:substr。

第三处:试题要求,若没有

找到,函数值为0,所以应

填:0。

*******************解题

思路:

第一处: 函数中形参的定

义不正确,应改为:fun(int

x,int y, int z)。

第二处: 程序中三个数的

最小公倍数是用j处理的,

所以应返回j的值。

*******************假定

输入的字符串中只包含字

母和*号。请编写函数fun,

它的功能是:只删除字符串

前导和尾部的*号,串中字

母之间的*号都不删除。形

参n给出了字符串的长度,

形参h给出了字符串中前

导*号的个数,形参e给出

了字符串中最后*号的个

数。在编写函数时,不得使

用C语言提供的字符串函

数。

参考答案:

void fun( char *a, int

n,int h,int e )

{

char *p=a ;

int j=0,len=0;

while(*p) {p++; len++;}

while(j

a[j]=a[h+j];

j++;

}

a[j]=0;

}

第38套:

解题思路:

第一处:判断a[i]是否是

奇数,若是,则仍保留在原

数组中a[j],所以应填:1。

第二处:数组a中的元素位

置由j来控制,每增加一个

元素,则j加1,所以应填:

j++。

第三处:返回删除偶数后a

所指数组中数据的元素j,

所以应填:j。

*******************

解题思路:

第一处:交换值的次序有问题,所以应改为:t=a;a=b;b=t;。

第二处:返回值错误,应改为:return(b);。

*******************

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。

参考答案:

void fun( char *a ) {

int j =0 ;

char *p=a;

while(*p) {

if(*p != '*') a[j++]=*p ; p++ ;

}

a[j]=0;

}

第39套:

解题思路:

本题是根据给定的字符串数组中删除串长大于某个值的字符串。

第一处:利用for循环,从几个字符串中进行查找,程序中已经给定了N个字符串,所以应填:N。

第二处:串长由形参k来传递,所以应填:k。

第三处:如果字符串ss[i]的串长小于k,则该字符串仍存在原字符串数组中,位置由变量j 来控制,所以应填:ss[i]。

******************* 解题思路:

第一处: 存放字符串初始

位置也是从0开始存放的,

由于k是控制c字符串的位

置值,所以k应为0。

第二处: 判断两个字符串

中是否有字符串结束符产

生,所以应改为:while( *p

|| *q ),而不是两字符串

中对应位置的值不相等。

*******************

假定输入的字符串中只包

含字母和*号。请编写函数

fun,它的功能是:除了字符

串前导的*号之外,将串中

其它*号全部删除。在编写

函数时,不得使用C语言提

供的字符串函数。函数fun

中给出的语句仅供参考。

参考答案:

void fun( char *a )

{

/* 以下代码仅供参考 */

int i=0,k;

while(a[i]=='*') i++;

k=i;

while(a[i]!='\0') /* 以

下程序段实现非*字符前移

*/

{

if(a[i] != '*')

a[k++]=a[i];

i++;

}

a[k]='\0';

}

第40套:

解题思路:

本题是要求在一个有序的

链表中插入一个数,插入后

各结点仍然是有序的。程序

中共有三处要填上适当的

内容,使程序能运行出正确

的结果。

第一处:因此应填x。

第二处:因此,此处应填s。

*******************

解题思路:

第一处:由于在k定义时没

有赋初值,所以k是一个随

机数,根据试题要求,k应

赋值为1。

第二处:整除的符号是/。

*******************

请编写一个函数fun,它的

功能是:计算n门课程的平

均分,计算结果作为函数值

返回。

参考答案:

float fun ( float *a , int

n )

{

int i;

float ave=0.0;

for(i=0; i

ave=ave+a[i] ;

ave=ave/n;

return ave;

}

第41套:

解题思路:

第一处:计算好的平均值通

过形参av返回,所以应填:

*av。

第二处:计算小于平均值且

最接近平均值的位置j,所

以应填:i。

第三处:返回该数,所以应

填:x[j]。

*******************

解题思路:

第一处:函数的返回是浮点

型数,所以应改为:float

fun(int n)。

第二处:for的终止条件应

是i<=n。

*******************

程序定义了N×N的二维数

组,并在主函数中自动赋

值。请编写函数fun,函数

的功能是:使数组右上三角

元素中的值乘以m 。

参考答案:

int fun ( int a[][N], int

m )

{

int i, j;

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

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

a[i][j] *= m ;

}

第42套:

解题思路:

t2是存放数字字符串,t1

是存放非数字字符串。

第一处:t2存放数字字符

串的位置是由j来控制的,

每添加一个,j必须加1,

所以应填:j++。

第二处:利用for循环把

t1字符串添加到原字符串

s中,所以应填:

s[i]=t1[i]。

第三处:利用for循环把

t2字符串添加到原字符串

s的尾部,其中数字字符串

的长度为j,所以应填:j。

*******************

解题思路:

第一处:for循环语句中缺

少分号。

第二处:应该把pstr+j位

置上的值赋值给*(pstr+i)

上,所以应改为:

*(pstr+i)=*(pstr+j);。

******************* 请

编写函数fun,它的功能是:

求出ss所指字符串中指定

字符的个数,并返回此值。

参考答案: int fun(char *ss, char c) { int cnt =

0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ; } return cnt ; } 第43套:解题

思路:本题是考察在字符

串查找指定的子串。第一处:利用for循环,从几个

字符串中进行查找,程序中

已经给定了N个字符串,所

以应填:N。第二处:在字

符串已经找到,则返回字符

串数组中的位置(下标值),所以应填:i。第三处:如

果没有发现,则显示没有找

到信息,所以应填:-1。

*******************解题

思路:第一处: 取当前变

量k的十位数字上的数,所

以应改为:a2=k/10;。第

二处: 要求统计个数并存

入变量i中,最后返回i,

所以应改为:return i;。

*******************假定

输入的字符串中只包含字

母和*号。请编写函数fun,它的功能是:将字符串尾部

的*号全部删除,前面和中

间的*号不删除。参考答案: void fun( char *a ) { char *p = a ; while(*p)

p++ ; p-- ; while(*p == '*') p-- ; p++ ; *p = 0 ; } 第44套:函数fun的功能

是进行数字字符转换。若形

参ch中是数字字符'0'~

'9', 则'0'转换成'9','1'

转换解题思路:第一处:

要求返回处理好的字符,所

以应填:char。第二处:

判断该字符是否是数字,所

以应填:ch<='9'。第三处:只要减去'0'的ASCII值,即可得到要求的结果,所以

应填:'0'。

******************* 解

题思路:第一处:把指针

p所指的值赋值给b[k]中。

第二处:把空格字符赋值给

b[k++]中,而不是一个空格

的字符串。

******************* N名

学生的成绩已在主函数中

放入一个带头节点的链表

结构中,h指向链表的头节

点。请编写函数fun,它的

功能是:求出平均分,由函

数值返回。参考答案:

#include

#include

double fun( STREC *h )

{ STREC *p=h->next; /*

由于头结点中没有存放数

据 */ double av=0.0; /*

对计算成绩平均值的变量

进行初始化 */ int n = 0 ;

while(p!=NULL) { /* 判断

链表是否结束 */ av = av +

p->s ; /* 对成绩进行累加

*/ p=p->next; /* 到下一

个结点位置 */ n++; /* 人

数加1 */ } av /= n ; /*

计算成绩平均值*/

return av ; /* 返回成绩

平均值 */ } 第45套:

解题思路:第一处:判断

a[i]是否是偶数,若是,则

仍保留在原数组中a[j],

所以应填:a[i] % 2。第

二处:数组a中的元素位置

由j来控制,每增加一个元

素,则j加1,所以应填:

a[j]。第三处:返回删除

奇数后a所指数组中数据

的元素j,所以应填:j。

******************* 解

题思路:第一处:形参n

没有定义类型,所以应改

为:fun (int n)。第二处:

判断相等的符号是==。

******************* 假

定输入的字符串中只包含

字母和*号。请编写函数

fun,它的功能是:使字符

串中尾部的*号不得多于n

个;若多于n个,则删除多

余的*号;若少于或等于n

个,则什么也不做, 字符串

中间和前面的*号不删除。

参考答案: void fun( char

*a,int n ) { char *p=a ;

int j=0; while(*p) p++;

p--; /* 字符串的长度 */

while(*p == '*') p--; /*

字符串右的'*' */ p++;

while(j

j++; } *p = 0 ; } 第

46套:解题思路:本题

是按字符串的长短进行排

序。第一处:外循环每循

环一次,k应保存当前的i

值,所以应填:i。第二处:

使用内循环对i+1后面的

字符串长度进行比较,所以

应填:ps[j]。第三处:交

换内容,所以应填:tp。

******************* 解

题思路:第一处:由于函

数返回是实数,所以必须定

义返回的类型,只有整型或

无结果返回可以忽略,其他

必须定义返回的类型,所以

要在此行前加上double或

float。第二处:该行缺少

分号。

*******************编写

函数fun,它的功能是计算

下列级数和,和值由函数值

返回。参考答案:

#include

#include long

jc(int n) { long s = 1 ;

int i ; for(i = 1 ; i <=

n ; i++) s *= i ; return

s ; } double fun(double x ,

int n) { double s = 1.0,

y = x ; int i ; for(i = 1 ;

i <= n ; i++) { s += y /

(double)jc(i) ; y *= x ; }

return s ; } 第47套:

解题思路:本题是找出字

符串中出现频率最高的字

母并统计出其次数。第一

处:将当前字母转换为小写

字母,所以应填:*s。第

二处:把该字母出现的个数

累加到指定的数组中,所以

应填:1。第三处:如果当

前该字母出现次数大于最

大次数max,那么把该次数

赋值给max,所以应填:

k[n]。

******************* 解

题思路:第一处:由于函

数返回是实数,所以必须定

义返回的类型,只有整型或

无结果返回可以忽略,其他

必须定义返回的类型,所以

要在此行前加上double或

float。第二处:缺少分号。

*******************编写

函数fun,它的功能是:计

算并输出下列级数和: 1 1

1 S = ── + ── + … +

───1×2 2×3 n(n+1)

参考答案:double

fun( int n ) { double s =

0.0 ; int i ; for(i = 1 ;

i <= n ; i++) s = s + 1.0

/ (i * (i + 1)) ; return

s ; } 第48套:解题思

路:本题是把字符串中是

数字字符转换成对应的数

值并进行累加。第一处:

'0'字符对应的ASCII值是

48,因此数字字符转换成对

应数值时只要减去48,即

是该数字字符对应的数值,

所以应填:48。第二处:

到字符串下一个位置,所以

应填:s++。第三处:返回

累加和sum,所以应填:sum。******************* 解

题思路:第一处:判断相

等的条件是==,而不是=,

所以只能在比较处再添加

一个=。第二处:经过编译

可知,"{"和"}"没有配对,

所以在横线处加上"}"。

******************* 编

写函数fun,它的功能是:

求小于形参n同时能被3与

7整除的所有自然数之和的

平方根,并作为函数值返回。参考答案: double fun( int n) { double sum=0.0; int i; for(i=21; i<=n; i++) if((i % 3==0) && (i % 7==0)) sum+=i; return sqrt(sum) ; } 第49套:解题思路:本

题是根据条件组成新的字

符串并统计出符合条件的

个数n。第一处:把符合

条件的当前字符存放到t

字符串中,所以应填:*s。

第二处:到字符串下一个位置,所以应填:s++。第三处:返回符合条件的字符个

数n,所以应填:n。

*******************解题

思路:第一处:两种类型

变量定义之间应该用分号,

所以应改为:int j, c=0; float xa=0.;。第二处:

在C语言中,大于等于应表

达为>=。

*******************编写

函数fun,其功能是:根据以下公式求P的值,结果由

函数值带回。m与n 为两个

正整数且要求m > n。 m! P

= ─── n!(m-n)! 参考

答案:#include

long jc(int m)

{ long s=1; int i ;

for(i=1;i<=m;i++) s=s*i ;

return s; } float fun(int

m, int n) { float p;

p=1.0*jc(m)/jc(n)/jc(m-

n) ; return p; } 第50

套:解题思路:第一处:

形参t的定义,整数数组其

宽度为N,所以应填:[N]。

第二处:对称元素相加,其

结果仍存放在左下三角元

素中,所以应填:t[i][j]。

第三处:右上三角元素置为

0,所以应填:t[j][i]。

*******************解题

思路:第一处:define定

义错误,所以应改为:

#define FU(m,n)

((m)/(n))。第二处:

return错写成Return,变

量value错写成Value。

*******************规定

输入的字符串中只包含字

母和*号。请编写函数fun,

它的功能是:将字符串中的

前导*号全部删除,中间和

尾部的*号不删除。参考答

案: void fun( char *a )

{ int j=0; char *p = a ;

while(*p == '*') p++ ;

while(*p) { a[j++] = *p ;

p++; } a[j]=0 ; } 第

51套:解题思路:本题

是统计字符串中包含的单

词个数。第一处:单词个

数用变量n来统计,当当前

字母不是空格且flag状态

标志为0时,则单词数就加

1,将状态标志flag置为1,

所以应填:n++。第二处:

当当前字符是空格时,flag

状态标志置0,所以应填:

0。第三处:到字符串下一

个位置,所以应填:s++。

******************* 解

题思路:第一处:应求累

加和,而不赋值,所以应改

为t+=s[k];。第二处:ave

不需要取地址,直接赋给

*aver就可以了。

*******************请编

写函数fun,其功能是求出

数组的最大元素在数组中

的下标并存放在k所指的

存储单元中。参考答案:

int fun(int *s, int t,

int *k) { int i, pos = 0,

max = *s ; for(i = 1 ; i

< t ; i++) { if(max < *(s

+ i)) { max = *(s + i) ;

pos = i ; } } *k = pos ; }

第52套:解题思路:第

一处:函数fun是对N×N

矩阵进行操作,for循环的

终止值为N。第二处:把

最后一列的元素值赋值给

临时变量x保存用来交换,

所以应填:N-1。第三处:

第1列元素值使用x替换,

由于C语言的下标是从0开

始的,所以应填:0。

******************* 解

题思路:第一处:如果两

个整数类型相除,结果仍为

整数,所以必须转换其中一

个数的类型,所以应改为:

s+=(float)(n+1)/n;。第

二处:返回结果错误,应改

为:return t;。

******************* 编

写函数fun,它的功能是:

求Fibonacci数列中大于t

的最小的一个数,结果由函

数返回。其中Fibonacci数

列F(n)的定义为: F(0)=

0,F(1)=1 F(n)=F(n-1)

+F(n-2) 参考答案: int

fun( int t) { int f0 = 0,

f1 = 1, f ; do { f = f0 +

f1 ; f0 = f1 ; f1 = f ; }

while(f < t) ; return f ; }

第53套:解题思路:第

一处:根据公式可知,变量

t的值为x。第二处:根据

公式可知,此处应该除以n,

所以应填:n。第三处:根

据试题中条件的要求,所以

应填:fabs(t)。

******************* 解

题思路:第一处:错误在

for循环语句上,根据试题

要求,终止条件应该是

i<=y。第二处:要取低3

位的值时,应模1000取余

数,而不是整除1000取商。

******************** 例

如, 在主函数中从键盘给x

输入0.21后,输出

为:s=1.100000。double

fun(double x) { int n=1;

/* 循环计数*/ double

sn=1; /* 累计数*/ double

xn=1,xn1=0; /*x的n值,

以及x的n-1值;*/

while(fabs(xn-xn1)>=0.0

00001)/*绝对值是否满足

条件*/

{ xn=xn*x*(0.5-n+1)/n;

/*表达式分解以后

xn=(xn-1)*x*(0.5-n+1)/n

*/ n+=1; sn+=xn; /*sn累

加上xn*/ } return(sn); }

第54套:解题思路:本

题是计算出带有头结点的

单向链表中各结点数据域

中值之和。第一处:累加

数据域中的值,所以应填:data。第二处:指定p的下一个指针,所以应填:next。第三处:函数调用,在主函数中已经给出了head,所以应填:head。*******************解题思路:第一处:判断字符串当前字符是否是字符串结束符,所以应改为:while(*r)。第二处:语句后缺少分号。******************* 函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。参考答案: void fun(char *s, char t[]) { int i, j = 0 ; for(i = 1 ; i < strlen(s); i+=2) t[j++] = s[i] ; t[j] = 0 ; } 第55套:解题思路:本题是判断字符串是否是“回文”。第一处:根据函数体fun中,对变量lp的使用可知,lp应指向形参s,所以应填:s。第二处:rp 是指向字符串的尾指针,当每做一次循环rp指向就要指向前一个字符,所以应填:--。第三处:当lp和rp相等时,则表示字符串是回文并返回1,否则就返回0,所以应填:return 0。******************* 解题思路:第一处:由于计算的实型值要通过函数返回,所以必须定义函数的返回类型,只要int或void 可以省略,其他都要定义类型。由于返回是实型值,所以应在数名前加上double 或float等定义。第二处:根据公式可知,在for循环

内b的值应是c。

******************* 请

编写函数fun,函数的功能

是:将大于形参m且紧靠m

的k个素数存入xx所指的

数组中。参考答案: void

fun(int m, int k, int

xx[]) { /* 以下代码仅供

参考 */ int i, j=1, t=m+1;

while(j<=k) { /* 以下完

成判断素数,并存放到数组

xx中 */ for(i = 2 ; i <

t; i++) if(t % i==0)

break; if(i==t) { xx[j-1]

= i; j++; } t++; } } }

第56套:解题思路:本

题要求是把键盘上输入的

内容写到指定的文件中。程

序中共有三处要填上适当

的内容,使程序能运行出正

确的结果。第一处:要求

填写文件流的自变量名,在

这个函数中,已有的语句

fputs("\n",fw);分析可

知:由于文件流变量fw在

函数体没有定义过,所以本

处应填*fw或fw[]。第二

处:通过while循环语句,

把键盘上输入的内容,要写

入到指定的文件中,键盘上

输入的内容已存入字符串

str变量中,因此,本处应

填写str。第三处:要把

已存入文件中的内容,再从

文件中读出且已存入字符

串变量str中,最后在屏幕

显示出来,因此,此处应填

写str。

******************* 解

题思路:第一处:在函数

fun中使用了*t,但在函数

定义时没有使用*t,所以应

改为:void fun(long

s,long *t)。第二处:每

循环一次,sl的值就乘以

10,所以应改为:

sl=sl*10;。*************

函数fun的功能是:将两个

两位数的正整数a、b合并

形成一个整数放在c中。

合并的方式是:将a数的十

位和个位数依次放在c数

的个位和百位上, b数的

十位和个位数依次放在c

数的千位和十位上。参考

答案: void fun(int a,

int b, long *c)

{ *c=(b/10)*1000+(a%10)

*100+(b%10)*10+(a/10); }

第57套:解题思路:第

一处:外循环每循环一次均

把数组a当前位置的值,分

别赋值给max和min变量,

所以应填: a[i]。第二处:

判断max是否小于a[j],

若小于,则把a[j]赋值给

max,所以应填:a[j]。第

三处:判断min是否大于

a[j],若大于,则把a[j]

赋值给min,所以应填:

a[j]。************* 解题

思路:第一处:switch后

有多余的分号。第二处:

case 1后没有返回语句,

也应该为return 1;。所以

应改为:case 1: return 1;

case 2:return 1;。

************* 某学生的

记录由学号、8门课程成绩

和平均分组成,学号和8门

课程的成绩已在主函数中

给出。请编写函数fun,它

的功能是:求出该学生的平

均分放在记录的ave成员

中。参考答案:void

fun(STREC *a) { int i ;

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

a->ave = a->ave +

a->s[i] ; a->ave /= N ; }

第58套:解题思路:本

题是根据要求来复制字符

串。第一处:当给定的长

度n大于该字符串s的长

度,那么把该字符串直接拷

贝到t就可以了,所以应

填:t,s。第二处:使用

for循环语句,把最右边n

个字符依次添加到t中,所

以应填:s[i]。第三处:

字符串操作结束,需要到t

加一个字符串结束符,所以

应填:'\0'。*************

解题思路:第一处:判断

素数的条件是一个数i除

自身或1除外不被任何数k

整除的数,如果一个数i被

另一个数k取模,模值等于

零,那么这个不是素数并退

出循环体,所以应改为

if(i%k==0)。第二处:如

果i不被循环中任一个k值

不整除,那么循环结束后k

的值应该等于i,所以应改

为if(k==i)或if(k>=i)也

可以。************* 请编

写函数fun,它的功能是:

求出能整除形参x且不是

偶数的各整数,并按从小到

大的顺序放在pp所指的数

组中,这些除数的个数通过

形参n返回。参考答案:

void fun ( int x, int pp[],

int *n ) { int i; *n=0;

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

if((x % i== 0) && (i % 2))

pp[(*n)++]=i; } 第59

套:解题思路:本题是在

矩阵中找出在行上最大、在

列上最小的那个元素。第

一处:找出行上最大的数,

并该位置j(列)保存在c

中,所以应填:j。第二处:使用while循环语句和控制变量find,如果该数不是列是最小数,那么把find 置0,所以应填:0。第三处:i是while的控制变量,所以每做一次循环,该数均要加1,所以应填:i++。

************ 解题思路:第一处:使用for循环计算公式,必须计算到m,所以应改为for(i=2; i<=m; i++)。第二处:在除法运算中,如果除数和被除数都是整数,所么所除结果也是整数,因此应改为y-=1./(i*i)。*********************** m个人的成绩存放在score 数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。参考答案:int fun(int score[], int m, int below[]) { float av=0.0 ; int i, j=0 ; for(i=0; iscore[i])

below[j++]=score[i]; return j; } 第60套:解题思路:本题是要求对结构体数组中的三个元素按num成员升序排列。第一处:由于在函数体fun 中,已经使用了std变量,所以应填:*std。第二处:由于temp是存放交换记录的中间变量,所以应填:PERSON。第三处:函数的调用,所以应填:std。*******************解题思路:第一处:保留字int

错写成Int。第二处:字

符数组的字符串书写格式

错误。

******************* 程

序定义了N×N的二维数

组,并在主函数中自动赋

值。请编写函数fun( int

a[][N]),函数的功能是:

使数组左下三角元素中的

值全部置成0 。参考答案:

int fun ( int a[][N] )

{ int i, j; for(i = 0 ; i

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

<= i; j++) a[i][j] = 0 ; }

第61套:解题思路:第

一处:判断形参ch是否是

小写字母,所以应填:&&。

第二处:小写字母与大写字

母的ASCII值相差为32,

所以应填:'A'或65。第

三处:返回处理后的形参

ch,所以应填:ch。

******************* 解

题思路:第一处:在函数

fun体中,a是一个整型数

组,所以形参a应定义为指

针型整数变量。第二处:

变量书写错误,aa应为a。

*******************请编

写一个函数fun, 它的功能

是: 计算并输出给定整数n

的所有因子(不包括1与n

自身)之和。规定n的值不

大于1000。参考答案: int

fun(int n) { int s = 0, i ;

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

if(n % i == 0) s +=i ;

return s ; } 第62套:

解题思路:第一处:首先

判断字符串的长度是奇数

还是偶数,如果是奇数,则

k=n-1,所以应填:1。第

二处:取字符串最后一个奇

数位的字符,并由变量c保

存,所以应填:s[k]。第

三处:第1位奇数位用最一

个奇数位字符替换,所以应

填:c。

************* 解题思路:

第一处:根据for循环计算

t的值可知,变量t的初值

不正确,应为0。第二处:

每次循环都是取t除以10

的值,而不是取余数,所以

应改t=t/10;。

******************* 请

编写一个函数void

fun(char *tt, int pp[]),

统计在tt所指字符串中

'a' 到 'z' 26个小写字母

各自出现的次数,并依次放

在pp所指数组中。参考答

案: void fun(char *tt,

int pp[]) { char *p = tt ;

int i ; for(i = 0 ; i < 26 ;

i++) pp[i] = 0 ; while(*p)

{ if(*p >= 'a' && *p <=

'z') pp[*p - 'a'] += 1 ;

p++ ; } } 第63套:解

题思路:第一处:for循

环变量的增量,所以应填:

i++。第二处:由于右移m

个位置,所以应填:m。第

三处:左边m列均置于0,

所以for循环的终止值应

为m。************* 解题

思路:第一处:括号没有

匹配。Error: While

statement missing ) in

function fun 在函数fun

中While语句缺少)。第二

处:缺少分号。Error:

Break statement missing ;

in function fun 在函数

fun中break语句缺少;。

这种题型只要通过编译即

可发现程序的错误所在。

************* 编写函数

fun,它的功能是:利用以

下所示的简单迭代方法求

方程:cos(x)-x=0 的一个

实根。迭代步骤如下:(1)

取 x1 初值为0.0;(2)

x0 = x1,把x1的值赋给

x0;(3)x1 = cos(x0),

求出一个新的x1;(4)

若x0 - x1的绝对值小于

0.000001,执行步骤(5),

否则执行步骤(2);(5)

所求x1就是方程

cos(x)-x=0 的一个实根,

作为函数值返回。程序将

输出结果Root=0.739085。

参考答案: float fun()

{ float x0, x1=0.0; do

{ x0=x1; x1=cos(x0); }

while(fabs(x0-x1)>0.000

001); return x1; } 第

64套:解题思路:第一

处:外循环p的终止变量的

值,试题要求第k列左移,

所以应填:k。第二处:矩

阵共N列,所以应填:N-1。

第三处:把存放在临时变量

temp中的值,放到

a[i][N-1]中,所以应填:

temp。

*******************解题

思路:第一处:在函数体

fun中可知,a是一个字符

串数组型变量,所以应改

为:fun(int a[][M], int

m)。第二处:根据输出的

结果可知,应改为:

a[j][k]=(k+1)*(j+1);。

*******************函数

fun的功能是:将a、b中

的两个两位正整数合并形

成一个新的整数放在c 中。

合并的方式是:将a中的十

位和个位数依次放在变量c

的十位和千位上,b中的十

位和个位数依次放在变量c

的个位和百位上。参考答案: void fun(int a, int b, long *c) { *c=(a%10)*1000+(b%10)

*100+(a/10)*10+(b/10); } 第65套:解题思路:第

一处:变量k在函数体fun

中已经使用,所以应填:k。

第二处:共N行,所以应填:N。第三处:变量值交换,

所以应填:a[k][i]。

*******************解题

思路:第一处:外for循

环的初始值应是strlen(t)-1。第二处:由

于是按升序排序,所以应

if(t[j]>t[j+1])。

******************* 请

编写一个函数fun, 其功能是: 将ss所指字符串中所

有下标为奇数位置上的字

母转换为大写(若该位置上

不是字母, 则不转换)。void fun( char *ss ) { char *p = ss ; int i =

0 ; while(*p) { if((i % 2)

&& (*p >= 'a' && *p <=

'z')) *p -= 32 ; p++ ;

i++ ; } return ss ; } 第

66套:解题思路:本题

是从结构体中找出年龄最

大的记录。第一处:给存

放最大者max赋初值,所以

应填:*std。第二处:当

前最大者的年龄和结构中

所有的年龄进行比较,所以

应填:std[i].age。第三处:输出最大者的姓名和年龄,所以应填:https://www.wendangku.net/doc/ee4285735.html,。

******************* 解

题思路:第一处:函数形

参定义不正确,在定义第2个形参时,也应加上int。

由于通过该函数实现两数

交换,在C语言中,必须交

换地址中的值,所以应定义

为int *a,int *b。第二

处:要交换地址中的值,不

能交换地址,必须指定地址

中的值,因此应改为

t=*b;*b=*a;*a=t;。

******************* 请

编一个函数void fun(int

tt[M][N ], int pp[N]),

tt指向一个M行N列的二

维数组,求出二维数组每列

中最小元素,并依次放入

pp所指一维数组中。二维

数组中的数已在主函数中

赋予。参考答案: void

fun ( int tt[M][N], int

pp[N] ) { int i,j, min, k ;

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

{ min = tt[0][i] ; k = 0 ;

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

if(min > tt[j][i]) { \TAB

min=tt[j][i] ; k = j ; }

pp[i] = tt[k][i] ; } }

第67套:解题思路:第

一处:一共产生20个随机

数,所以应填:N。第二处:

要求产生不同的20个整

数,所以采用for循环对已

产生的随机数进行比较,是

否有相同数,如果有相同,

则退出循环体,所以应填:

break。第三处:当退出循

环体还是进行判断,i和n

的值是否相等,如果相等,

则表示该随机整数不重复,

可以存放到指定的数组中,

所以应填:n。

*******************解题

思路:第一处:变量sum

进行初始化,由于计算累加

和,所以应为:sum=0;。第

二处:读入整型数,应使用

地址读入,所以应为:

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

******************* 编

写程序, 实现矩阵(3行3

列)的转置(即行列互换)

参考答案: int fun(int

array[3][3]) { int

i,j,arr[3][3] ;

memcpy(arr, array,

9*sizeof(int)) ; for(i =

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

0 ; j < 3 ; j++)

array[i][j] =

arr[j][i] ; } 第68套:

解题思路:第一处:形参

ss的定义,它是一个字符

串数组的定义,其宽度为N,

所以应填:N。第二处:取

第一个字符串的长度赋值

给变量*n,所以应填:len。

第三处:每循环一次,判断

当前字符串的长度是否大

于*n,如果大于,则*n=len。

*******************解题

思路:第一处:在此变量

k没有定义过,再根据公式

和for循环语句中所用的

变量可知,这里的k实际上

是i。第二处:应是返回

公式的值,函数中公式的值

是存放在临时变量t中,所

以应填return t;。

*******************编写

一个函数,该函数可以统计

一个长度为2的字符串在

另一个字符串中出现的次

数。例如,假定输入的字符

串为: asd asasdfg asd as

zx67 asd mklo,子字符串

为:as,则应输出6。参考

答案:int fun(char

*str,char *substr) { int

cnt = 0 ; char *p = str,

*q ; while(*p) { q =

strstr(p, substr) ; if(q

== NULL) break; p = q +

strlen(substr) ; cnt++ ; }

return cnt ; } main()

{ char str[81],substr[3];

int n; printf("输入主字

符串: "); gets(str);

printf("输入子字符串:

"); gets(substr);

puts(str); puts(substr);

n=fun(str,substr);

printf("n=%d\n",n);

NONO(); } 第69套:解

题思路:第一处:数字字

符与其对应的数值相差48,

所以应填:48。第二处:

到字符串下一个位置,所以

应填:s++。第三处:返回

两个数字字符串经转换成

数值的和,所以应填:

ctod(a)+ctod(b)。

*******************解题

思路:第一处:在等式右

边应写*a。第二处:在等

式右边应写*b。

*******************请编

一个函数fun,函数的功能

是使实型数保留2位小数,

并对第三位进行四舍五入

(规定实型数为正数)。参

考答案:float fun

( float h ) { long w ; w

= h * 100 + 0.5 ; return

(float) w / 100 ; } 第

70套:解题思路:第一

处:计算平均值时,需对变

量av进行初始化为0。第

二处:利用for循环计算其

平均值,所以应填:x[i]/N。

第三处:把数组x中元素值

大于平均值的数依次存放

到形参y所指的数组中其

中位置由变量j 来控制,

所以应填:j++。

*******************解题

思路:第一处:由于计算

的实型值要通过函数返回,

所以必须定义函数的返回

类型,只要int或void 可

以省略,其他都要定义类型。由于返回是实型值,所

以应在数名前加上double

等定义。如果使用float则

精度不够,所以在这里不能

使用float定义。第二处:在for循环中,两个“;”

不可省略,在此把“;”错

写成“,”。

*******************已知

学生的记录由学号和学习

成绩构成,N名学生的数据

已存入a结构体数组中。请

编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

参考答案: fun( STU a[], STU *s ) { int i, min =

a[0].s, j = 0; for(i = 1 ;

i < N ; i++) if(min >

a[i].s) { /* 如果最低分min仍大于当前分 */ j = i ; /* 记住位置*/ min =

a[i].s ; /* 把当前分赋值

给min */ } *s = a[j] ; } 第71套:解题思路:第

一处:函数中申请了两个内

存空间,其p是存放数字字

符串,t是存放非数字字符串,根据条件可知,p依次

存放数字字符串,其位置由

j来控制,所以应填:j。第

二处:利用for循环再把t

中的内容依次追加到p中,

其中t的长度为k,所以应填:k。第三处:最后返回

p的首地址即可,所以应填:p。 *******************

解题思路:第一处:应该

判断i是否小于j,所以应

改为:while(i

处:if错写成If。

*******************函数

fun的功能是:将s所指字

符串中下标为偶数同时

ASCII值为奇数的字符删

除,s所指串中剩余的字符

形成的新串放在t所指的

数组中。解题思路:本题

是从一个字符串按要求生

成另一个新的字符串。我们

使用for循环语句来解决

这个问题。参考答案:

void fun(char *s, char

t[]) { int i, j = 0 ; for(i

= 0 ; i < strlen(s) ; i++)

if(!((i % 2) ==0 &&

(s[i] % 2))) t[j++] =

s[i] ; t[j] = 0 ; } 第

72套:解题思路:第一

处:根据公式以及下面的程

序,可以得出i应为0。第

二处:根据公式以及i的初

值为0,所以应填:i++。第

三处:根据公式要求,所以

应填: 2.0*i。

*******************解题

思路:第一处:从函数体

fun中可知,两个均为字符

指针型变量,应改为:void

fun (char *s, char *t)。

第二处:字符串结束位置错

误,应改为:t[2*d]=0;。

*******************函数

fun的功能是:将s所指

字符串中除了下标为奇数、

同时ASCII值也为奇数的

字符之外,其余的所有字符

都删除,串中剩余字符所形

成的一个新串放在t所指

的数组中。参考答案:

void fun(char *s, char

t[]) { int i, j = 0 ; for(i

= 1 ; i < strlen(s) ; i +=

2) if(s[i] % 2) t[j++] =

s[i] ; t[j] = 0 ; } 第

73套:解题思路:第一

处:根据公式,首项应该是

3.4,所以应填:3.。第二

处:当x大于e时,循环体

才会运行,所以应填:>。第

三处:分子的值是2i+1,

所以应填:2*i+1。

*******************解题

思路:第一处:由于计算

的实型值要通过函数返回,

所以必须定义函数的返回

类型,只要int或void 可

以省略,其他都要定义类

型。由于返回是实型值,所

以应在数名前加上double

或float等定义。第二处:

double的第1个字母错写

成大写D。

******************* 请

编写一个函数fun,它的功

能是:求出一个2×M整型

二维数组中最大元素的值,

并将此值返回调用函数。

参考答案:fun (int

a[][M]) { int i, j,

max=a[0][0]; for(i=0;

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

j++) if(max

max=a[i][j]; return

max; } 第74套:解题

思路:本题是从给定的人

员数据中找出年龄相同的

记录存入k中,并返回符合

条件的人数。第一处:断

结构变量中的编号year是

否相等,所以应填:

std[i].year。第二处:把

符合条件的记录依次存入

实参k中,所以应填:

std[i]。第三处:返回符

合满足条件的人数,所以应

填:n。

******************* 解

题思路:第一处:函数定

义的行尾有多余的分号。

第二处:条件判断缺少圆括

号。 *******************

已知学生的记录由学号和

学习成绩构成,N名学生的

数据已存入结构体数组 a

中。请编写函数 fun,函数

的功能是:找出成绩最高的

学生记录,通过形参指针传

回主函数(规定只有一个最

高分)。已给出函数的首部,

请完成该函数。参考答案:

fun( STU a[], STU *s )

{ int i, max = a[0].s, j

= 0; for(i = 1 ; i < N ;

i++) if(max < a[i].s) { j

= i ; max = a[i].s ; } *s

= a[j] ; } 第75套:解

题思路:本题是要求按字

符串的长短进行排序。第

一处:内循环赋初值,应填:

i+1。第二处:找出最短的

一个长度,所以应填:m=j。

第三处:交换字符串,所以

应填:t。

*******************解题

思路:第一处:第1个形

参应该是字符串类型,所以

应改为:void fun(char

*str, char ch)。第二处:

应该是判断不相等,所以应

改为:if(*str!=ch)。第

三次:置字符串结束符错

误,所以应改为:str[1] =

0;。 *******************

请编一个函数fun(char

*s),函数的功能是把s所

指字符串中的内容逆置。

参考答案: fun ( char *s )

{ char b[N] ; int i = 0,

j ; memset(b, 0, N) ; for(j = strlen(s) - 1 ;

j >= 0 ; j--) b[i++] =

s[j] ; strcpy(s, b) ; } 第76套:解题思路:第

一处:k是用来管理正负号的,公式中第一个值是正数,所以应填:1。第二处:根据公式,t是2i,所以应填:2*i。第三处:根据公式,第2个是负数,所以应填:(-1)。

******************* 解

题思路:第一处:语句后

缺少分号。第二处:条件

判断相等的符号是==。

*******************请编

写一个函数fun,它的功能是:找出一维整型数组元素

中最大的值和它所在的下标,最大的值和它所在的

下标通过形参传回。数组元

素中的值已在主函数中赋予。参考答案:void fun(int a[], int n , int *max, int *d ) { int i ; *max=a[0];*d = 0 ; /* 把

数组的第1个元素值赋值

给最大值变量*max */ for(i = 1; i < n; i++)

if(*max < a[i]) { /* 判

断*max是否小于当前值 */ *max = a[i]; /* 重新把最

大值赋值给*max */ *d = i ; /* 记住下标 */ } } 第

77套:解题思路:第一处:判断t是否是偶数,所

以应填:0。第二处:每操

作一次,x必须乘以10,再

加t,所以应填:10*x。第

三处:每循环一次n的值缩

小10倍,所以应填:n/10。*******************解题思路:第一处:由于t是

一个指针变量,赋初值的方

式应为:*t=0;。第二处:

d%2条件判断时应为不是

0,所以应改为:

if(d%2!=0)。

******************* 编

写一个函数fun,它的功能

是:实现两个字符串的连接

(不使用库函数strcat),

即把p2所指的字符串连接

到p1所指的字符串后。参

考答案: void fun(char

p1[], char p2[]) { char

*p=p1; while(*p)p++;

while(*p2) *p++=*p2++;

*p=0; } 第78套:解题

思路:第一处:在函数体

fun中,已经使用了t整型

数组,所以应填:t[][N]。

第二处:要求填写for循环

语句的初始值和终止值,所

以应填:i=0;i

交换变量的值,根据循环体

中的语句可知,s是存放交

换的中间变量,所以应填:

s。 *******************

解题思路:第一处:函数

有返回值,不能定义为

void,所以应改为:int

fun(int a[],int m)。第

二处:if错定成If。

******************* 假

定输入的字符串中只包含

字母和*号。请编写函数

fun,它的功能是:除了尾

部的*号之外,将字符串中

其它*号全部删除。形参p

已指向字符串中最后的一

个字母。在编写函数时,不

得使用C语言提供的字符

串函数。参考答案: void

fun( char *a, char *p )

{ char *q=a; int j=0;

while(*q && q

{ if(*q != '*') a[j++] =

*q ; q++ ; } while(*p)

a[j++]=*p++; a[j]=0; }

第79套:解题思路:第

一处:字符串数组共有M个

字符串,所以在循环中终止

值应填:M。第二处:由于

本题是取长度最短的字符

串,*n总是保存长度最短

值,所以应填:<。第三处:

其中k是保存长度最短的

字符串所在的行下标,所以

应填:k。

*******************解题

思路:第一处:判断是小

写字母,则条件应该是与的

关系。第二处:小写字母

的ASCII值减去32正好是

其大写字母。

*******************请编

写函数fun,其功能是: 将

所有大于1小于整数m的非

素数存入xx所指数组中,

非素数的个数通过k传回。

参考答案:#include

int isP(int m)

{ int j, tag = 0 ; for(j

= 2 ; j < m && !tag ; j++)

if(m % j == 0) tag = 1 ;

return tag ; } void

fun( int m, int *k, int

xx[] ) { int i, cnt = 0 ;

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

if(isP(i)) xx[cnt++] = i ;

*k = cnt ; } 第80套:

解题思路:第一处:对变

量i赋初值,根据i的使用

规则来看,i应等于1。第

二处:while循环要求计算

后的s应大于0,所以应填:

s。第三处:每循环一次,

i要乘以10,所以应填:

i*10。

*******************解题

思路:第一处:形参必须

定义字符串数组的长度,所

以应改为:int fun(int

n,int xx[][M])。第二处:

由于xx是整型的双维数

组,不能用浮点型输出,所

以应改为:printf("%d

",xx[i][j]);。

*******************函数

fun的功能是:将a、b中

的两个两位正整数合并形

成一个新的整数放在c 中。

合并的方式是:将a中的十

位和个位数依次放在变量c

的千位和十位上,b中的十

位和个位数依次放在变量c

的个位和百位上。参考答

案: void fun(int a, int

b, long *c)

{ *c=(a/10)*1000+(b%10)

*100+(a%10)*10+(b/10); }

第81套:解题思路:第

一处:判断是数字,应该使

用“与”,所以应填:&&。第

二处:判断字符串是否是字

符串结束符,所以应填:

'\0'。第三处:如果当前

字符是数字字符,则把当前

字符以后的所有字符往后

一个位置,所以应填:s[j]。

*******************解题

思路:第一处:使用for

循环计算公式,必须计算到

m,所以应改为for(i=2;

i<=m; i++)。第二处:在

除法运算中,如果除数和被

除数都是整数,所以所除结

果也是整数,因此应改为

y+=1./(i*i)。

*******************请编

写函数fun, 函数的功能

是:实现B=A+A', 即把矩

阵A加上A的转置, 存放在

矩阵B中。计算结果在main 函数中输出。参考答案:void fun ( int

a[3][3], int b[3][3]) { int c[3][3] ; int i, j ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < 3 ; j++) { c[i][j] = a[j][i] ; /* 矩阵的转置 */ b[i][j] =

a[i][j] + c[i][j] ; } } 第82套:解题思路:第

一处:使用while循环找出100~999之间所有整数,

所以应填:999。第二处:

s2是求十位数字,所以应填:t/10。第三处:各位

数字之和为x,所以应填:x。 ******************* 解题思路:第一处:在函

数fun体中,t是一个指针

型变量,因此定义形参时也

应定义指针。第二处:条

件应该s>0,所以应改为:while(s>0)。

*******************学生

的记录由学号和成绩组成,

N名学生的数据已在主函数

中放入结构体数组s中,请

编写函数fun,它的功能是:按分数的高低排列学生的

记录,高分在前。参考答案: #include #define N 16 typedef struct { char num[10]; int s; } STREC; int fun( STREC a[] ) { STREC tmp; int i,j; for(i = 0;

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

j < N; j++) if(a[i].s <

a[j].s) { tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } 第83套:解题思路:第

一处:符合条件的整数个数n,必须进行初始化,所以应填:0。第二处:找出x

≤999,所以应填:x。第

三处:循环控制变量t每循

环一次t要加1,所以应填:

t++。

******************* 解

题思路:第一处:变量sl

没有定义。第二处:在C

语言中,字符串开始位置从

0开始的,所以应改为:t[i]

= s[sl-i-1];。

******************* 函

数fun的功能是:将a、b

中的两个两位正整数合并

形成一个新的整数放在c

中。合并的方式是:将a中

的十位和个位数依次放在

变量c的百位和个位上,b

中的十位和个位数依次放

在变量c的千位和十位上。

参考答案: void fun(int a,

int b, long *c)

{ *c=(b/10)*1000+(a/10)

*100+(b%10)*10+(a%10); }

第84套:解题思路:第

一处:给三个数进行比较大

小,所以应填:a。第二处:

给三个数进行比较大小,所

以应填:a。第三处:给三

个数进行比较大小,所以应

填:b。

*******************解题

思路:第一处:变量c错

写成大写C了。第二处:

要求转换为其后的第5个

字母,所以应改为:c=c+5;。

*******************请编

写函数fun, 其功能是: 计

算并输出参考答案:

double fun(int n) { int i;

double fac=1.0; double

sum=1.0;

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

{ fac+=sqrt(i);

sum+=fac; } return sum; }

第85套:解题思路:第

一处:结构定义自变量,因

此应填写STYPE。第二处:

在所填行的下面一行,使用

fopen来创建一个二进制文

件,但文件流的变量名fp

已经给出,这样,此处只能

填写FILE。每三处:fwrite

是把变量中的内容写入指

定文件中,再根据fwrite

参数的使用要求,所以只能

填写文件流变量fp。

******************* 解

题思路:第一处:变量sl

错写成了s1。第二处:新

串t的字符串结束位置不

正确,应该是两倍的sl距

离。 *******************

函数fun的功能是:将两个

两位数的正整数a、b合并

形成一个整数放在c中。

合并的方式是:将a数的十

位和个位数依次放在c数

的千位和十位上, b数的

十位和个位数依次放在c

数的百位和个位上。参考

答案: void fun(int a,

int b, long *c)

{ *c=(a/10)*1000+(b/10)

*100+(a%10)*10+(b%10); }

第86套:解题思路:第

一处:根据定义的要求,所

以应填:i。第二处:for

循环语句的增量,所以应

填:t++。第三处:返回统

计次数,所以应填:count。

*******************解题

思路:第一处:函数有返

回值,不能定义为void,

所以应改为:int fun(int

a,int b,int c)。第二处:

语句后缺少分号。

*******************请编

写函数fun, 其功能是: 计

算并输出3到n之间(含3

和n)所有素数的平方根之

和。参考答案: double

fun(int n) { int i,j=0;

double s=0; for (i=3;

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

j

break; if (j == i)

s=s+sqrt(i); } return s; }

第87套:解题思路:第

一处:取个位数上的数,所

以n%10就可以得到个位

数。第二处:switch条件

判断中,满足条件做好后,

必须使用break语句跳出

选择体,所以应填: break。

第三处:同第二处。

*******************解题

思路:第一处:条件相等

符号为==。第二处:由于

zero是一个指针型变量,

所以给它进行赋值时应带

指针,因此应改为:

*zero=count;。

*******************请编

写函数fun, 其功能是: 计

算并输出下列多项式的值:

1 1

1 S = 1 + ── + ───

+ …+ ─────

1*2 1*2*3

1*2*3*…50 参考答案:

double fun(int n)

{ double s=0, t=1; int i ;

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

*= i; s += 1./t; } return

s; } 第88套:解题思

路:第一处:形参a应定

义指针整型变量,所以应

填:*a。第二处:外for

循环每次增量应该加2。第

三处:内for循环的初始值

应为:i+1。

*******************解题思路:第一处:变量名书写错误,应为sum。第二处:由于%的优先级比+优先,所以必须加上括号,因此改为:if((i+1)%5==0)。******************* 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s 中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中, 低于平均分的学生人数通过形参n传回,平均分通过函数值返回。参考答案: #include #define N 8 typedef struct { char num[10]; double s; } STREC; double fun( STREC *a, STREC *b, int *n ) { int i ; double ave = 0.0 ; *n = 0 ; for(i = 0 ; i < N ; i++) ave = ave + a[i].s ; ave /= N ; /* 计算平均值 */ for(i = 0 ; i < N ; i++) if(a[i].s < ave) { /* 把低于平均值的记录存放到b所指的数组中*/ b[*n]=a[i] ; (*n)++; /* 人数加1 */ } return ave ; /* 返回平均值 */ } 第89套:解题思路:第一处:使用变量k来保存第几个字符串是最长的字符串,所以应填:k。第二处:利用for循环把原字符串右移至最右边存放,字符串的长为len,所以应填:len。第三处:左边用字符*补齐,所以应填:ss[i][j]。******************* 解题思路:第一处:--n是先减1,n--是后减1。本题

应该先乘以n,再减1,才

正确。第二处:返回计算

结果,所以应填:result。

*******************编写

函数fun,函数的功能是:

从s所指的字符串中删除

给定的字符。同一字母的

大、小写按不同字符处理。

参考答案: int fun(char

s[],char c) { char *p = s ;

int i = 0 ; while(*p)

{ if(*p != c) s[i++] = *p ;

p++ ; } s[i] = 0 ; } 第

90套:解题思路:第一

处:素数的条件是除1和其

本身外不能整除该数,所以

应填:2。第二处:判断i

是否素数,所以应填:i。第

三处:如果内循环for中所

有数都不能整除i,那么i

是素数且j大于等于i,所

以应填:j。

*******************解题

思路:第一处:连续赋初

值为0,中间使用条件相等

符号了,所以应改为:

sum=j=0;。第二处:条件

相等符号为==。

*******************请编

写函数fun, 其功能是: 计

算并输出下列多项式的值:

参考答案:double

fun(int n) { int i;

double sum=0.0; if (n>1

&& n<=100) { for(i=1;

i<=n; i++)

sum+=1.0/(2*i-1)-1.0/(2

*i); } return sum; } 第

91套:解题思路:第一

处:根据公式可知,此处应

填:x。第二处:根据公式

可知,此处应该除以n,所

以应填:n。第三处:计算

的结果进行累加并赋值给

变量f,所以应填:t。

*******************解题

思路:第一处:变量d的

初始值应为1。第二处:

整除的符号是/。

******************* 请

编写函数fun, 其功能是:

计算并输出给定数组(长度

为9)中每相邻两个元素之

平均值的平方根之和。参

考答案:double

fun(double x[9]) { int i ;

double avg=0.0,sum=0.0;

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

{ avg=(x[i]+x[i+1])/2;

sum+=sqrt(avg); } return

sum; } 第92套:解题

思路:第一处:t是处理

公式中每一项中间项,所以

应填:1。第二处:根据公

式可知,for循环变量的初

始值应从1开始。第三处:

每做一次循环均要除以变

量i的值,所以应填:i。

*******************解题

思路:第一处:k应该取

循环变量i的值,所以应改

为:k=i;。第二处:语句

后缺少分号。

********************请

编写函数fun, 其功能是:

计算并输出给定10个数的

方差: 参考答案: double

fun(double x[10]) { int i;

double avg=0.0, sum=0.0,

abs=0.0, fc; for

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

sum+=x[i]; avg=sum/10;

/* 计算平均值*/ for

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

abs+=(x[i]-avg)*(x[i]-a

vg); fc=sqrt(abs/10) ;

return fc; } 第93套:

解题思路:第一处:,所以

本处应填next。第二处:

所以应填t->data或

(*t).data。第三处:输出

出最后一个结点数据后,并

把此结点删除了,程序要求

释放内存,所以应填t。

*******************解题

思路:第一处:形参a应

定义为字符串指针。第二

处:语句中缺少逗号。

******************* 请

编写一个函数fun,它的功

能是:比较两个字符串的长

度,(不得调用C语言提供

的求字符串长度的函数),

函数返回较长的字符串。若

两个字符串长度相同,则返

回第一个字符串。参考答

案: char *fun ( char *s,

char *t) { int i; char

*p=s, *q=t; for(i=0;*p

&& *q; i++) { p++; q++; }

if(*p == 0 && *q == 0)

return s ; if(*p) return

s ; else return t ; } 第

94套:解题思路:第一

处:根据公式可知,变量f

的初值为1。第二处:根

据公式可知,此处是正负号

的变换,所以应填:-1。第

三处:计算的结果进行累加

并赋值给变量f,所以应填:

t。 *******************

解题思路:第一处:外for

循环的初始变量i的值应

为1。第二处:变量k写

成了大写K了。

******************* 请

编写函数fun, 其功能是:

计算并输出下列多项式的

值: 参考答案:double

fun(int n) { double s=1 ;

long t=1; int i; for(i=1;

C语言上机报告答案

2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。答案: #include main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y);

x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a 赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 问题2 改printf("%c,%c,%d\n",a,b,c);这条语句 改成:printf("%c %c %d\n",a,b,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语言上机作业试题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语言上机练习题

上机练习题 完成 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 完成 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 完成 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。完成 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 完成 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 完成 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 完成 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 完成 8.输入1~10之间的一个数字,输出它对应的英文单词。 完成 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 完成 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 完成 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境;

C语言上机实验[1]

实验四循环结构程序设计(4学时) 一、实验方式:一人一机 二、实验目的: 1、熟练掌握while语句、do-while语句和for语句。 2、练习并掌握循环结构的嵌套形式。 3、掌握循环结构的程序设计方法。 三、实验内容:说明:前四题为必做题目,后两题为选做题目。 1、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结 束输入。(实验指导书P41) 2、求所有的水仙花数。水仙花数是一个3位数的自然数,该数各位数的立方和等于该数 本身。(实验指导书P42) 3、判断输入的某个数是否为素数。若是,输出YES,否则输出NO。(实验指导书P167) 4、计算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+……,直到最后一项的绝对值小 于10-6为止。(实验指导书P169) 5、计算1!+2!+……+n! 的值,n值由键盘输入。(实验指导书P176) 6、输入10个整数,统计并输出其中正数、负数和零的个数。 四、实验答案:(代码+运行结果截屏) 实验五综合实验1:结构化程序设计(2学时) 一、实验方式:一人一机 二、实验目的: 1、进一步掌握选择结构、循环结构的编程特点。 2、掌握C语言的结构化程序设计思想。 3、学习利用循环结构实现的一些常用算法(如穷举、迭代、递推等)。 三、实验内容:说明:前两题为必做题目,后两题为选做题目。 1、编一程序,对于给定的一个百分制成绩,输出对应A,B,C,D,E表示的的等级成绩。设: 90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。(实验指导书P162) 2、百马百担问题。(实验指导书P45) 3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 4、输出如下图案: * *** ***** ******* ***** *** * 四、实验答案:(代码+运行结果截屏)

扬州大学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语言 数组 实验题目及答案

实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() { int a[ ]={1,2,3,4,5} , i, j, s=0 ; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); return 0; } 二、程序改错题 1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。 #include int main()

{ int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30 int main() { float score[N],sum=0,aver; int i; for(i=0;i<30;i++) { scanf("%f",&score[i]); sum=sum+score[i]; } aver=sum/30; printf("平均分为:%.2f\n",aver); for(i=0;iaver) printf("%.2f ",score[i]); printf("\n");

C语言上机实验题

第六章循环控制 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范。 2.学习并掌握利用while语句、for语句、do_while语句实现循环结构。 3.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 4.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序6_1.c、6_2.c、6_5.c、6_6.c、6_8.c上传至211.64.135.121/casp。 本章开始,上机实验项目量加大,希望同学们多多自行上机。本章实验项目有余力都可以做一下并上交。 循环程序设计 计算机解决问题都是按指定的顺序执行一系列的动作。按照特定的顺序执行相应的动作来求解问题的过程称为算法。程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。 计算机程序中指定语句的执行顺序称为“程序控制”。结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。 1. 循环设计 循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。循环控制有两种基本方法:计数法和标志法。 1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 教材例6.2、6.3、6.7都是典型的计数器控制的固定次数次数循环。 2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,教材例6.6中以|t|的值达到标记下限值1e-6作为循环的结束。 循环设计时要注意合理设计循环条件,使得循环不会成为死循环。 2. 算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1)穷举 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例:输入两个正整数x和y,求其最大公约数。 main() {int x,y,i,flag; printf("Please input two numbers:"); scanf("%d%d",&x,&y);

C语言上机实验标准答案.doc

实验一上机操作初步 (2 学时 ) 一、实验方式:一人一机 二、实验目的: 1、熟悉 VC++语言的上机环境及上机操作过程。 2、了解如何编辑、编译、连接和运行一个 C 程序。 3、初步了解 C程序的特点。 三、实验内容: 说明:前三题为必做题目,后两题为选做题目。 1、输出入下信息: ( 实验指导书 P79) ************************* Very Good ************************* 2、计算两个整数的和与积。( 实验指导书 P81) 3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。 ( 书 P3) 4、在屏幕上显示一个文字菜单模样的图案: ================================= 1 输入数据 2 修改数据 3 查询数据 4 打印数据 ================================= 5、从键盘上输入两个整数,交换这两个整数。 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include <> void main( ) {printf( printf( printf( “ ********************\n “Very Good\n” ); “ ********************\n ” ); ” ); } 2、#include <> void main( ) {int a,b,c,d; printf( “ Please enter a,b: ”);

scanf( “%d,%d” ,&a,&b); c=a+b; d=a*b; printf( “ %d+%d=%d\n” ,a,b,c); printf( “ %d*%d=%d\n” ,a,b,d); } 3、#include <> #include <> void main( ) { double x,s; printf( “ Please input value of x: ”); scanf( “%lf ” ,&x); s=cos(x); printf( “ cos(%lf)=%lf\n ”,x,s); } 4、#include <> void main( ) { printf( “ ==================================\n”); printf( “ 1 输入数据 2 修改数据 \n ”); printf( “ 3 查询数据 4 打印数据 \n ”); printf( “ ===================================\n”); } 5、#include <> void main( ) { int x,y,t; printf( “ Please enter x and y: ”); scanf( “%d%d”,&x,&y); t=x; x=y; y=t; printf( “ After swap:x=%d,y=%d\n ” ,x,y); } 实验二简单的 C程序设计 (4 学时 ) 一、实验方式:一人一机 二、实验目的: 1、掌握 C语言的数据类型。 2、学会使用 C语言的运算符及表达式。 3、掌握不同数据类型的输入输出方法。 三、实验内容: 说明:前四题为必做题目,后两题为选做题目。

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语言上机练习题及答案[1]汇总

1.从矩形的长,宽,输出面积(长为 6.5,宽为4.5 ) #in elude mai n() float len gth,width,area; sca nf("%f%f", & le ngth,&width); area=le ngth*width; prin tf("area=%f\n",area); 2.定义符号常量,从键盘输入圆的半径 3.5,求圆的周长和面积 #defi ne PI 3.14 #in clude mai n() float r,c,area; sca nf("%f",&r); c=2* Pl*r; area=P l*r*r; prin tf("c=%f,area=%f\n",c,area); 3.练习上机手册P10 3,4, 5题,看看输出结果,并思考为什么 4.从键盘输入一个整数,输出其绝对值(采用两个if语句实现)int i; sea nf("%d",&i); if(i>=0) prin tf("i=%d\n",i); if(i<0) prin tf("i=%d\n",-i); 5.从键盘输入一个整数,输出其绝对值(采用if ―― else语句实现)#in elude mai n() int i; #in clude mai n()

sca nf("%d",&i); if(i>=0) prin tf("i=%d\n",i); else prin tf("i=%d\n",-i); 6.从键盘输入年份,判断是不是闰年,如果是,输出是闰年(上机考试重点) #in elude mai n()

C语言程序设计_上机实验指导与习题_第三版_(陈湘骥_编著_著)_华南农业大学_参考答案

C语言程序设计上机实验指导与习题 参考答案 (仅供教师内部参考) 华南农业大学

目录 上机实验 (1) 实验 1 C语言程序初步 (1) 一、实验目的 (1) 二、实验内容 (1) 实验2基本数据类型、运算和表达式 (3) 一、实验目的 (3) 二、实验内容 (3) 实验3基本输入与输出 (5) 一、实验目的 (5) 二、实验内容 (5) 实验4选择结构程序设计 (4) 一、实验目的 (4) 二、实验内容 (4) 实验5循环结构程序设计(一) (9) 一、实验目的 (9) 二、实验内容 (9) 实验6循环结构程序设计(二) (15) 一、实验目的 (15) 二、实验内容 (15) 实验7数组 (17) 一、实验目的 (17) 二、实验内容 (17) 实验8字符数组的应用 (22) 一、实验目的 (22) 二、实验内容 (22) 实验9函数的基本应用 (24) 一、实验目的 (24) 二、实验内容 (24) 实验10指针与结构体 (26) 一、实验目的 (26) 二、实验内容 (26) *实验11链表 (29) 一、实验目的 (29) 二、实验内容 (29) *实验12文件 (32) 一、实验目的 (32) 二、实验内容 (32)

上机实验 实验 1 C语言程序初步 一、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C程序的特点。 (4)在教师的指导下,学会使用JudgeOnline实验系统。 二、实验内容 1. 运行第一个 C 程序 [题目:The first C Program] 将下列程序输入 TC(或 VC++),编译、连接和运行该程序。 void main() { printf("The first C Program\n"); } [具体操作步骤] 以 Turbo C 上的操作为例 (1)Windows 进入后,按照第一章中介绍的方法,进入 Turbo C。 (2)在编辑窗口中输入程序。 (3)保存程序,取名为 a1.c。 (4)按照第一章中介绍的方法,编译、连接和运行程序。 2.在JudgeOnline系统中提交实现了计算a+b功能的程序 [题目 1001:计算 a+b] 由键盘输入两个整数,计算并输出两个整数的和。实现该功能的程序如下, void main() { int a, b; scanf("%d%d", &a, &b); 1

C语言上机综合实验一及答案

1、编制程序,输入n 个整数(n 从键盘输入,n>0),输出它们的偶数和。 2、 编程,输入n 后:输入n 个数,根据下式计算并输出y 值。 3、输入一行字符,统计并输出其中英文字母、数字字符和其他字符的个数。 4、编写程序,输入一个正整数n ,计算并输出下列算式的值。要求定义和调用函数total(n)计算1+1/2+1/3+……+1/n ,函数返回值的类型是double 。 5、输入一个正整数n ,求1+1/2!+1/3!+……1/n!的值,要求定义并调用函数fact(n)计算n 的阶乘,函数返回值的类型是单精度浮点型。 答案: 程序1、 #include void main () { int n,i,x,sum=0; while(scanf("%d",&n),n<=0); printf ("请输入%d 个数:", n); for (i=1; i<=n ;i++) { scanf("%d",&x); if(x%2==0) sum+=x; } printf ("sum=%d", sum) ; } 程序2、 #include #include void main( ) { int i,n; float x,y; scanf(“%d”,&n); for(i=1;i<=n;i++){ scanf(“%f”,&x); if(x<-2) y=x*x-sin(x); else if(x<=2) y=pow(2,x)+x; else y=sqrt(x*x+x+1); printf(“%f \n”,y); } } 程序3、 # include void main( ) { int letter,digit,other; ?????>++≤≤-+-<-=2 12222sin 22x x x x x x x x y x 111111...23n k s k n ===++++∑

大连理工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语言上机实验例题

实验一 C语言的运行环境、运行过程和表达式的使用 一、目的与要求 1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。 2、了解在该系统上如何编辑、编译、连接和运行一个C程序。 3、通过运行简单的C程序,初步了解C源程序的特点。 4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 5、学会使用C的有关算术运算符,以及包含这些运算符的表达式 二、实验例题 【例1】编程实现在屏幕上显示如下三行文字 Hello, world ! Wolcome to the C language world! Everyone has been waiting for. 在Turbo C的集成环境下,键入如下源文件。敲Alt+F组合键打开File菜单,File菜单中Write to或save as选项可将默认文件名改为任意文件名。程序如下: main() { printf("Hello,World!\n"); printf("Wolcome to the C language world!\n"); printf("Everyone has been waiting for.\n"); } 然后用Ctrl+F9执行,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。按回车键重新返回Turbo C的编辑环境。注意,在运行程序之前最好先存盘。 【例2】输入并运行程序,写出运行结果。 main() {

int a,b,sum; a=123;b=456; sum=a+b; printf(“sum is %d\n”,sum); } 运行方法同上,最后结果为:sum is 579。 【例3】 输入并运行程序,写出运行结果。 main() { int a,b,c; int max(int,int); scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%d”,c); } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); } 这个程序的功能是对于任意输入的两个整数,输出较大的那个数。所以程序运行之后,光标将停留在用户屏幕上,等待用户输入两个整数,比如输入“3,5”,回车,在用户屏幕上就会输出“max=5”。 【例4】输入并运行下程序,写出运行结果。 mian() { char c1 , c2;

大一C语言上机实验试题和答案

实验一上机操作初步(2学时) 一、实验方式:一人一机 二、实验目的: 1、熟悉VC++语言的上机环境及上机操作过程。 2、了解如何编辑、编译、连接和运行一个C程序。 3、初步了解C程序的特点。 三、实验内容: 说明:前三题为必做题目,后两题为选做题目。 1、输出入下信息:(实验指导书P79) ************************* Very Good ************************* 2、计算两个整数的和与积。(实验指导书P81) 3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。(书 P3) 4、在屏幕上显示一个文字菜单模样的图案: ================================= 1 输入数据 2 修改数据 3 查询数据 4 打印数据 ================================= 5、从键盘上输入两个整数,交换这两个整数。 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include void main( ) { printf(“********************\n”); printf(“ Very Good\n”); printf(“********************\n”); } 2、#include void main( ) { int a,b,c,d; printf(“Please enter a,b:”); scanf(“%d,%d”,&a,&b); c=a+b; d=a*b; printf(“%d+%d=%d\n”,a,b,c); printf(“%d*%d=%d\n”,a,b,d);

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)

C语言上机题库

C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include int main(void) { char ch; int sum; ch=getchar(); sum=ch-'A'+10+15; printf("%d\n",sum); return 0; } 3.12输入三个整数,求其平均值。 输入格式: 3 5 7 输出格式: 5 #include int main(void) { int a,b,c,aver; scanf("%d %d %d",&a,&b,&c); aver=(a+b+c)/3; printf("%d\n",aver); return 0; } 3.13根据c=5/9*(f-32) 公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。 输入格式: 80.0 输出格式: 26.67 #include int main(void) { float f,c; scanf("%f",&f); c=5.0/9*(f-32); printf("%.2f\n",c); return 0; } 3.14输入一个四位正整数,求其各位数字之和。例如,1357的各位数字之和为1 + 3 + 5 + 7 = 16。 输入格式: 1357 输出格式: 16 #include int main(void) { int num; int a,b,c,d,total; scanf("%d",&num); a=num/1000; b=(num-a*1000)/100; c=(num-a*1000-b*100)/10; d=num-a*1000-b*100-c*10; total=a+b+c+d; printf("%d\n",total); return 0; } 3.15输入一大写字母,输出对应的小写字母。 输入格式: A 输出格式: a #include int main(void) { char c1,c2;

C语言实验报告参考答案

《C语言程序设计》 实 验 手 册

《C语言程序设计》实验课程简介 课程名称:C语言程序设计实验 课程性质:专业必修课 课程属性:专业必修课 学时学分:学时32 学分1 开课实验室:软件实验室 面向专业:网络工程、软件工程、计算机科学与技术 一、课程的任务和基本要求 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验项目 【实验一】最简单的C程序---顺序程序设计 【实验二】逻辑运算和判断选取控制 【实验三】循环结构程序设计(一) 【实验四】循环结构程序设计(二) 【实验五】函数 【实验六】数组(一) 【实验七】数组(二) 【实验八】指针 【实验九】结构体、共用体和文件 【实验十】C程序综合性实验 三、有关说明 1、与其它课程和教学环节的联系: 先修课程:计算机文化 后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程 2、教材和主要参考书目: (1)教材: 《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目: 《C语言程序设计》谭浩强主编,清华大学出版社,2003年。

三、实验内容 实验一最简单的C程序---顺序程序设计 (验证性实验 2学时) (一)、实验目的 1.熟悉win-tc程序运行环境 2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3.掌握C语言中使用最多的一种语句——赋值语句 4.掌握数据的输入输出方法,能正确使用各种格式控制符 (二)、实验内容 1.写出下列程序的运行结果 (1)#include void main() { printf(“*****************\n”); printf(“This is a c program. \n”); printf(“****************\n”); } 运行结果及分析:运行结果为: Printf函数语句表示输出引号内的字符串,最后的\n表示换行, 将程序中的\n去掉后,运行结果及分析:运行结果为: 去掉\n后不换行连续显示 (2)#include void main() { int a=100,b=20,sum,sb; sum=a+b; sb=a/b; printf("sum=%d,sb=%d",sum,sb); } 运行结果及分析: sum=100+20=120;sb=100/20=5. (3)#include void main( )

相关文档
相关文档 最新文档